configure.ac 8.4 KB
Newer Older
Johan Dahlin's avatar
Johan Dahlin committed
1
-*- mode: m4 -*-
2
AC_PREREQ([2.68])
Johan Dahlin's avatar
Johan Dahlin committed
3

4
5
6
7
8
9
10
11
12
13
14
# The version of python used is determined by the executable pointed to by the
# --with-python switch, or if that's not set, by the PYTHON environment
# variable.  For instance if your system installs Python 3 as python3 to
# configure to compile pygobject under Python 3 you would do this:
#   $ ./configure --with-python=python3
# or
#   $ PYTHON=python3 ./configure
#
# You can also build against a full interpreter path, such as
#   $ ./configure --with-python=~/my-patched-python/python

15
m4_define(python_min_ver, 2.6)
16
17
m4_define(python3_min_ver, 3.1)

Johan Dahlin's avatar
Johan Dahlin committed
18
dnl the pygobject version number
John (J5) Palmieri's avatar
John (J5) Palmieri committed
19
m4_define(pygobject_major_version, 3)
Martin Pitt's avatar
Martin Pitt committed
20
m4_define(pygobject_minor_version, 7)
21
m4_define(pygobject_micro_version, 2)
Johan Dahlin's avatar
Johan Dahlin committed
22
23
24
m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)

dnl versions of packages we require ...
Martin Pitt's avatar
Martin Pitt committed
25
m4_define(introspection_required_version, 1.33.14)
26
27
m4_define(py2cairo_required_version, 1.2.0)
m4_define(py3cairo_required_version, 1.10.0)
28
29
m4_define(glib_required_version, 2.34.2)
m4_define(gio_required_version, 2.34.2)
Johan Dahlin's avatar
Johan Dahlin committed
30

31
32
33
AC_INIT([pygobject],[pygobject_version],
	[http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject],
	[pygobject],[https://live.gnome.org/PyGObject/])
Johan Dahlin's avatar
Johan Dahlin committed
34
AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .")
35
AC_CONFIG_MACRO_DIR([m4])
36
AC_CONFIG_SRCDIR([gi/gimodule.c])
Johan Dahlin's avatar
Johan Dahlin committed
37
38
39
40
41
42
43
44
45

AC_DEFINE(PYGOBJECT_MAJOR_VERSION, pygobject_major_version, [pygobject major version])
AC_SUBST(PYGOBJECT_MAJOR_VERSION, pygobject_major_version)
AC_DEFINE(PYGOBJECT_MINOR_VERSION, pygobject_minor_version, [pygobject minor version])
AC_SUBST(PYGOBJECT_MINOR_VERSION, pygobject_minor_version)
AC_DEFINE(PYGOBJECT_MICRO_VERSION, pygobject_micro_version, [pygobject micro version])
AC_SUBST(PYGOBJECT_MICRO_VERSION, pygobject_micro_version)

AM_CONFIG_HEADER(config.h)
Johan Dahlin's avatar
Johan Dahlin committed
46
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)])
47
AM_INIT_AUTOMAKE([1.11.1 foreign no-dist-gzip dist-xz])
Johan Dahlin's avatar
Johan Dahlin committed
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

dnl put the ACLOCAL flags in the makefile
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"

AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_MSG_CHECKING([for some Win32 platform])
case "$host" in
  *-*-mingw*|*-*-cygwin*)
    platform_win32=yes
    ;;
  *)
    platform_win32=no
    ;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")

AC_MSG_CHECKING([for native Win32])
case "$host" in
  *-*-mingw*)
    os_win32=yes
    ;;
  *)
    os_win32=no
    ;;
esac
AC_MSG_RESULT([$os_win32])
AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")

78
79
LT_PREREQ([2.2.6])
LT_INIT([dlopen win32-dll disable-static])
80

Martin Pitt's avatar
Martin Pitt committed
81
AC_SEARCH_LIBS([strerror],[cposix])
Johan Dahlin's avatar
Johan Dahlin committed
82
83
AC_PROG_CC
AM_PROG_CC_STDC
84
AM_PROG_CC_C_O
Johan Dahlin's avatar
Johan Dahlin committed
85

86
87
88
89
# option to specify python interpreter to use; this just sets $PYTHON, so that
# we will fallback to reading $PYTHON if --with-python is not given, and
# python.m4 will get the expected input
AC_ARG_WITH(python,
Martin Pitt's avatar
Martin Pitt committed
90
  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"]),
91
92
93
94
95
96
97
98
  [PYTHON="$withval"], [])
if test x"$PYTHON" = xyes; then
	AC_MSG_ERROR([--with-python option requires a path or program argument])
fi
if test -n "$PYTHON" && ! which "$PYTHON"; then
	AC_MSG_ERROR([Python interpreter $PYTHON does not exist])
fi

99
# check that we have the minimum version of python necessary to build
100
101
102
103
104
105
106
107
108
109
110
111
112
113
JD_PATH_PYTHON(python_min_ver)

# check if we are building for python 3
JD_PYTHON_CHECK_VERSION([$PYTHON], [3.0],
			 build_py3k=true,
			 build_py3k=false)

# if building for python 3 make sure we have the minimum version supported
if test $build_py3k = true ; then
  AC_MSG_CHECKING([for $PYTHON >=] python3_min_ver)
  JD_PYTHON_CHECK_VERSION([$PYTHON], python3_min_ver,
			  [AC_MSG_RESULT(yes)],
			  [AC_MSG_ERROR(too old)])
fi
Johan Dahlin's avatar
Johan Dahlin committed
114

115
AM_CHECK_PYTHON_HEADERS(, AC_MSG_ERROR([Python headers not found]))
116
117
118
if test "x$os_win32" = "xyes"; then
  AM_CHECK_PYTHON_LIBS(, AC_MSG_ERROR([Python libs not found. Windows requires Python modules to be explicitly linked to libpython.]))
fi
Johan Dahlin's avatar
Johan Dahlin committed
119

Johan Dahlin's avatar
Johan Dahlin committed
120
121
AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
old_CPPFLAGS=$CPPFLAGS
122
CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
Martin Pitt's avatar
Martin Pitt committed
123
124
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Python.h>]], [[PySignal_SetWakeupFd(0);]])],
                  [setwakeupfd_ok=yes],[setwakeupfd_ok=no])
Johan Dahlin's avatar
Johan Dahlin committed
125
126
127
128
129
130
131
AC_MSG_RESULT($setwakeupfd_ok)
if test "x$setwakeupfd_ok" != xno; then
  AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1,
                [Define to 1 if PySignal_SetWakeupFd is available])
fi
CPPFLAGS=$old_CPPFLAGS

132
PLATFORM=`$PYTHON -c "import sys; from distutils import util; sys.stdout.write(util.get_platform())"`
Johan Dahlin's avatar
Johan Dahlin committed
133
134
AC_SUBST(PLATFORM)

Johan Dahlin's avatar
Johan Dahlin committed
135
AC_ARG_ENABLE(thread,
Martin Pitt's avatar
Martin Pitt committed
136
  AS_HELP_STRING([--disable-thread],[Disable pygobject threading support]),,
Johan Dahlin's avatar
Johan Dahlin committed
137
138
  enable_thread=yes)

139
140
141
AM_CHECK_PYMOD(thread,,,enable_thread=check_for_py3_module)
if test "x$enable_thread" = xcheck_for_py3_module; then
  dnl Python 3 uses the _thread module so check for that
142
  AM_CHECK_PYMOD(_thread,,enable_thread=yes,enable_thread=no)
143
fi
Johan Dahlin's avatar
Johan Dahlin committed
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165

AC_MSG_CHECKING(whether to enable threading in pygobject)
if test "x$enable_thread" != xno; then
  extra_mods=gthread
  THREADING_CFLAGS=
  AC_MSG_RESULT(yes)
else
  extra_mods=
  THREADING_CFLAGS="-DDISABLE_THREADING"
  AC_MSG_RESULT(no)
fi
AC_SUBST(THREADING_CFLAGS)
CPPFLAGS="${CPPFLAGS} $THREADING_CFLAGS"

dnl get rid of the -export-dynamic stuff from the configure flags ...
export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`

dnl glib
AM_PATH_GLIB_2_0(glib_required_version,,[AC_MSG_ERROR(maybe you want the pygobject-2-4 branch?)],gobject $extra_mods)
if test -n "$export_dynamic"; then
  GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"`
fi
166
167
PYTHON_BASENAME=`basename $PYTHON`
AC_SUBST([PYTHON_BASENAME])
Johan Dahlin's avatar
Johan Dahlin committed
168

169
170
AS_AC_EXPAND(DATADIR, $datadir)

171
dnl libffi
172
173
AC_MSG_CHECKING(for ffi)
AC_ARG_WITH(ffi,
Martin Pitt's avatar
Martin Pitt committed
174
  AS_HELP_STRING([--without-ffi],[Disable libffi support]),
175
176
177
178
  with_libffi=$withval,
  with_libffi=auto)
if test x"$with_libffi" = xno ; then
  have_libffi=false
179
else
180
  PKG_CHECK_MODULES(FFI, libffi >= 3.0, have_libffi=yes, have_libffi=no)
181
fi
182
if test x"$with_libffi" = xyes && test x"$have_libffi" = xno ; then
183
  AC_MSG_ERROR([ffi requested, but not found])
Paul Pogonyshev's avatar
Paul Pogonyshev committed
184
fi
185
if test x"$have_libffi" = xyes; then
186
  LIBFFI_PC=libffi
187
fi
188
AM_CONDITIONAL(HAVE_LIBFFI, test "$have_libffi" = "yes")
189
AC_SUBST(FFI_CFLAGS)
190
AC_SUBST(FFI_LIBS)
191
AC_SUBST(LIBFFI_PC)
192

193
194
195
dnl gio
PKG_CHECK_MODULES(GIO, gio-2.0 >= gio_required_version)

196
AC_ARG_ENABLE(cairo,
Martin Pitt's avatar
Martin Pitt committed
197
    AS_HELP_STRING([--enable-cairo],[Enable Cairo bindings using introspection information]),
198
199
200
    enable_cairo=$enableval,
    enable_cairo=yes)

201
202
203
204
205
206
207
208
209
PKG_CHECK_MODULES(GI,
    glib-2.0 >= glib_required_version
    gobject-introspection-1.0 >= introspection_required_version
)

GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
AC_SUBST(GI_DATADIR)

if test "$enable_cairo" != no; then
210
211
    PKG_CHECK_MODULES(CAIRO, cairo cairo-gobject)

212
    if test $build_py3k = true; then
213
214
215
216
217
218
219
        PKG_CHECK_MODULES(PYCAIRO,
            py3cairo >= py3cairo_required_version
        )
    else
        PKG_CHECK_MODULES(PYCAIRO,
            pycairo >= py2cairo_required_version
        )
220
    fi
221
fi
222
AM_CONDITIONAL(ENABLE_CAIRO, test "$enable_cairo" = "yes")
223

Johan Dahlin's avatar
Johan Dahlin committed
224
225
226
227
228
229
INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`

AC_SUBST(INTROSPECTION_SCANNER)
AC_SUBST(INTROSPECTION_COMPILER)

Johan Dahlin's avatar
Johan Dahlin committed
230
dnl add required cflags ...
231
232
if test "x$GCC" = "xyes"; then
  JH_ADD_CFLAG([-Wall])
Martin Pitt's avatar
Martin Pitt committed
233
234
235
236
237
  #JH_ADD_CFLAG([-Werror=missing-prototypes])
  JH_ADD_CFLAG([-Werror=implicit-function-declaration])
  JH_ADD_CFLAG([-Werror=pointer-arith])
  JH_ADD_CFLAG([-Werror=format-security])
  JH_ADD_CFLAG([-Werror=missing-include-dirs])
Martin Pitt's avatar
Martin Pitt committed
238
  JH_ADD_CFLAG([-Werror=format])
239
  JH_ADD_CFLAG([-Werror=unused-variable])
240
  JH_ADD_CFLAG([-fno-strict-aliasing])
241
242
243
244
245
246
247
248
249

  case $host_os in
  solaris*)
    ;;
  *)
    JH_ADD_CFLAG([-std=c9x])
    ;;
  esac

250
fi
Johan Dahlin's avatar
Johan Dahlin committed
251

252
253
254
255
256
# enable code coverage support
GNOME_CODE_COVERAGE
CFLAGS="$CFLAGS $CODE_COVERAGE_CFLAGS"
LDFLAGS="$LDFLAGS $CODE_COVERAGE_CFLAGS"

Johan Dahlin's avatar
Johan Dahlin committed
257
258
AC_CONFIG_FILES(
  Makefile
259
260
  pygobject-3.0.pc
  pygobject-3.0-uninstalled.pc
Johan Dahlin's avatar
Johan Dahlin committed
261
262
263
  gi/Makefile
  gi/repository/Makefile
  gi/overrides/Makefile
264
265
  gi/_glib/Makefile
  gi/_gobject/Makefile
Johan Dahlin's avatar
Johan Dahlin committed
266
267
268
269
  examples/Makefile
  tests/Makefile
  PKG-INFO)
AC_OUTPUT
270

271
272
273
274
275
276
277
AC_MSG_RESULT([
	pygobject $VERSION

	Using python interpreter:	$PYTHON
	libffi support:			$have_libffi
	cairo support:			$enable_cairo
	thread support:			$enable_thread
278
	code coverage support:          $enable_code_coverage
279
280
])