Imported Upstream version 3.28.3
[platform/upstream/python-gobject.git] / configure.ac
1 -*- mode: m4 -*-
2 AC_PREREQ([2.68])
3
4 # The version of python used is determined by the executable pointed to by the
5 # --with-python switch, or if that's not set, by the PYTHON environment
6 # variable.  For instance if your system installs Python 3 as python3 to
7 # configure to compile pygobject under Python 3 you would do this:
8 #   $ ./configure --with-python=python3
9 # or
10 #   $ PYTHON=python3 ./configure
11 #
12 # You can also build against a full interpreter path, such as
13 #   $ ./configure --with-python=~/my-patched-python/python
14
15 m4_define(python_min_ver, 2.7)
16 m4_define(python3_min_ver, 3.4)
17
18 dnl the pygobject version number
19 m4_define(pygobject_major_version, 3)
20 m4_define(pygobject_minor_version, 28)
21 m4_define(pygobject_micro_version, 3)
22 m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)
23
24 dnl versions of packages we require ...
25 m4_define(introspection_required_version, 1.46.0)
26 m4_define(pycairo_required_version, 1.11.1)
27 m4_define(glib_required_version, 2.38.0)
28 m4_define(gio_required_version, 2.38.0)
29 m4_define(libffi_required_version, 3.0)
30
31 AC_INIT([pygobject],[pygobject_version],
32         [http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject],
33         [pygobject],[https://wiki.gnome.org/Projects/PyGObject/])
34
35 m4_ifndef([AX_IS_RELEASE], [AC_MSG_ERROR(['autoconf-archive' missing])])
36
37 AX_IS_RELEASE([minor-version])
38 AC_CONFIG_MACRO_DIR([m4])
39 AC_CONFIG_SRCDIR([gi/gimodule.c])
40
41 AC_DEFINE(PYGOBJECT_MAJOR_VERSION, pygobject_major_version, [pygobject major version])
42 AC_SUBST(PYGOBJECT_MAJOR_VERSION, pygobject_major_version)
43 AC_DEFINE(PYGOBJECT_MINOR_VERSION, pygobject_minor_version, [pygobject minor version])
44 AC_SUBST(PYGOBJECT_MINOR_VERSION, pygobject_minor_version)
45 AC_DEFINE(PYGOBJECT_MICRO_VERSION, pygobject_micro_version, [pygobject micro version])
46 AC_SUBST(PYGOBJECT_MICRO_VERSION, pygobject_micro_version)
47
48 AC_CONFIG_HEADERS(config.h)
49 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
50 AM_INIT_AUTOMAKE([1.13 foreign no-dist-gzip dist-xz])
51
52 AC_CANONICAL_BUILD
53 AC_CANONICAL_HOST
54 AC_MSG_CHECKING([for build time linking with Python (Win32)])
55 case "$host" in
56   *-*-mingw*|*-*-cygwin*)
57     os_win32=yes
58     link_python_libs=yes
59     OS_EXT=dll
60     ;;
61   *-*-darwin*)
62     os_win32=no
63     link_python_libs=no
64     OS_EXT=dylib
65     ;;
66   *)
67     os_win32=no
68     link_python_libs=no
69     OS_EXT=so
70     ;;
71 esac
72 AC_MSG_RESULT([$link_python_libs])
73 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
74
75 AC_SUBST(OS_EXT)
76 AC_DEFINE_UNQUOTED(OS_EXT, "$OS_EXT", [Define shared library extension])
77
78 LT_PREREQ([2.2.6])
79 LT_INIT([dlopen win32-dll disable-static])
80
81 AC_SEARCH_LIBS([strerror],[cposix])
82 AC_PROG_CC
83 AM_PROG_CC_C_O
84
85 # option to specify python interpreter to use; this just sets $PYTHON, so that
86 # we will fallback to reading $PYTHON if --with-python is not given, and
87 # python.m4 will get the expected input
88 AC_ARG_WITH(python,
89   AS_HELP_STRING([--with-python=PATH],[Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
90   [PYTHON="$withval"], [])
91 if test x"$PYTHON" = xyes; then
92         AC_MSG_ERROR([--with-python option requires a path or program argument])
93 fi
94 if test -n "$PYTHON" && ! which "$PYTHON"; then
95         AC_MSG_ERROR([Python interpreter $PYTHON does not exist])
96 fi
97
98 # check that we have the minimum version of python necessary to build
99 JD_PATH_PYTHON(python_min_ver)
100
101 # check if we are building for python 3
102 AM_PYTHON_CHECK_VERSION([$PYTHON], [3.0],
103                          build_py3k=true,
104                          build_py3k=false)
105
106 # if building for python 3 make sure we have the minimum version supported
107 if test $build_py3k = true ; then
108   AC_MSG_CHECKING([for $PYTHON >=] python3_min_ver)
109   AM_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver,
110                           [AC_MSG_RESULT(yes)],
111                           [AC_MSG_ERROR(too old)])
112 fi
113
114 # - 'SO' for PyPy, CPython 2.7-3.2
115 # - 'EXT_SUFFIX' for CPython3.3+ (http://bugs.python.org/issue16754)
116 # - fallback to '.so'
117 PYTHON_SO=`$PYTHON -c "import distutils.sysconfig, sys; get = distutils.sysconfig.get_config_var; sys.stdout.write(get('EXT_SUFFIX') or get('SO') or '.so');"`
118 AC_SUBST(PYTHON_SO)
119
120 PYG_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
121 if test "x$link_python_libs" = "xyes"; then
122   PYG_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
123 fi
124
125 dnl get rid of the -export-dynamic stuff from the configure flags ...
126 export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
127
128 dnl glib
129 AM_PATH_GLIB_2_0(glib_required_version,,[AC_MSG_ERROR(maybe you want the pygobject-2-4 branch?)],gobject $extra_mods)
130 if test -n "$export_dynamic"; then
131   GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"`
132 fi
133
134 PYTHON_VALGRIND_SUPP=`$PYTHON -c "import sys; sys.stdout.write('python' + sys.version.__getitem__(0))"`
135 AC_SUBST([PYTHON_VALGRIND_SUPP])
136
137 dnl libffi
138 PKG_CHECK_MODULES(FFI, libffi >= libffi_required_version)
139
140 AC_SUBST(FFI_CFLAGS)
141 AC_SUBST(FFI_LIBS)
142
143 dnl gio
144 PKG_CHECK_MODULES(GIO, gio-2.0 >= gio_required_version)
145
146 AC_ARG_ENABLE(cairo,
147     AS_HELP_STRING([--enable-cairo],[Enable Cairo bindings using introspection information]),
148     enable_cairo=$enableval,
149     enable_cairo=yes)
150
151 PKG_CHECK_MODULES(GI,
152     glib-2.0 >= glib_required_version
153     gobject-introspection-1.0 >= introspection_required_version
154 )
155
156 GOBJECT_INTROSPECTION_CHECK(introspection_required_version)
157
158 GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
159 AC_SUBST(GI_DATADIR)
160
161 if test "$enable_cairo" != no; then
162     PKG_CHECK_MODULES(CAIRO, cairo cairo-gobject)
163
164     if test $build_py3k = true; then
165         PKG_CHECK_MODULES(PYCAIRO,
166             py3cairo >= pycairo_required_version
167         )
168     else
169         PKG_CHECK_MODULES(PYCAIRO,
170             pycairo >= pycairo_required_version
171         )
172     fi
173 fi
174 AM_CONDITIONAL(ENABLE_CAIRO, test "$enable_cairo" = "yes")
175
176 AC_ARG_WITH(common,
177     AS_HELP_STRING([--without-common],
178         [For package maintainers: do not install Python version independent files]),
179     with_common=$enableval,
180     with_common=yes)
181 AM_CONDITIONAL(WITH_COMMON, test "$with_common" = "yes")
182
183 # Disable -Werror always, see
184 # https://mail.gnome.org/archives/desktop-devel-list/2017-April/msg00009.html
185 AX_COMPILER_FLAGS(,, [yes])
186 # Disable some warnings, either because they get generated by headers of
187 # dependencies we don't control or because it was hard to fix them.
188 # Feel free and try to get rid of them.
189 # For clang only:
190 AX_APPEND_COMPILE_FLAGS([-Wno-unknown-warning-option -Wno-incompatible-pointer-types-discards-qualifiers -Wno-cast-align])
191 # For gcc + clang:
192 AX_APPEND_COMPILE_FLAGS([-Wno-discarded-qualifiers -Wno-redundant-decls -Wno-switch-enum -Wno-undef])
193
194 AX_CODE_COVERAGE()
195
196 AC_CONFIG_FILES(
197   Makefile
198   pygobject-3.0.pc
199   gi/Makefile
200   gi/repository/Makefile
201   gi/overrides/Makefile
202   examples/Makefile
203   tests/Makefile
204   pygtkcompat/Makefile
205   PKG-INFO)
206 AC_OUTPUT
207
208 AC_MSG_RESULT([
209         pygobject $VERSION
210
211         Is release:                     $ax_is_release
212         Using python interpreter:       $PYTHON
213         cairo support:                  $enable_cairo
214         code coverage support:          $enable_code_coverage
215 ])
216