1-*- mode: m4 -*-
2AC_PREREQ(2.52)
3
4dnl the pygtk version number
5m4_define(pygtk_major_version, 2)
6m4_define(pygtk_minor_version, 24)
7m4_define(pygtk_micro_version, 0)
8m4_define(pygtk_version, pygtk_major_version.pygtk_minor_version.pygtk_micro_version)
9
10dnl versions of packages we require ...
11m4_define(glib_required_version,       2.8.0)
12m4_define(pango_required_version,      1.16.0)
13m4_define(atk_required_version,        1.12.0)
14m4_define(gtk_required_version,        2.8.0)
15m4_define(libglade_required_version,   2.5.0)
16m4_define(gtkunixprint_required_version,  2.9.0)
17m4_define(pycairo_required_version,    1.0.2) dnl or 1.1.7
18m4_define(pygobject_required_version,  2.21.3)
19
20AC_INIT(pygtk, pygtk_version,
21        [http://bugzilla.gnome.org/enter_bug.cgi?product=pygtk])
22AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .")
23
24AC_DEFINE(PYGTK_MAJOR_VERSION, pygtk_major_version, [PyGtk major version])
25AC_SUBST(PYGTK_MAJOR_VERSION, pygtk_major_version)
26AC_DEFINE(PYGTK_MINOR_VERSION, pygtk_minor_version, [PyGtk minor version])
27AC_SUBST(PYGTK_MINOR_VERSION, pygtk_minor_version)
28AC_DEFINE(PYGTK_MICRO_VERSION, pygtk_micro_version, [PyGtk micro version])
29AC_SUBST(PYGTK_MICRO_VERSION, pygtk_micro_version)
30
31AC_CONFIG_SRCDIR([gtk/gtkmodule.c])
32AM_CONFIG_HEADER(config.h)
33
34AM_INIT_AUTOMAKE
35AC_CHECK_FUNCS(bind_textdomain_codeset)
36
37dnl put the ACLOCAL flags in the makefile
38ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
39
40AC_CANONICAL_BUILD
41AC_CANONICAL_HOST
42AC_MSG_CHECKING([for some Win32 platform])
43case "$host" in
44  *-*-mingw*|*-*-cygwin*)
45    platform_win32=yes
46    ;;
47  *)
48    platform_win32=no
49    ;;
50esac
51AC_MSG_RESULT([$platform_win32])
52AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
53
54AC_MSG_CHECKING([for native Win32])
55case "$host" in
56  *-*-mingw*)
57    os_win32=yes
58    ;;
59  *)
60    os_win32=no
61    ;;
62esac
63AC_MSG_RESULT([$os_win32])
64AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
65
66AC_DISABLE_STATIC
67
68dnl XXXX hack to kill off all the libtool tags ...
69dnl it isn't like we are using C++ or Fortran.
70dnl (copied from libglade/configure.in)
71m4_define([_LT_AC_TAGCONFIG],[])
72
73AC_LIBTOOL_WIN32_DLL
74AC_PROG_LIBTOOL
75dnl when using libtool 2.x create libtool early, because it's used in configure
76m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
77
78AM_PATH_PYTHON(2.3.5)
79
80AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers)])
81
82AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
83py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
84old_CPPFLAGS=$CPPFLAGS
85CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
86AC_TRY_COMPILE([#include <Python.h>],
87  [PySignal_SetWakeupFd(0);],
88  setwakeupfd_ok=yes,
89  setwakeupfd_ok=no)
90AC_MSG_RESULT($setwakeupfd_ok)
91if test "x$setwakeupfd_ok" != xno; then
92  AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1,
93                [Define to 1 if PySignal_SetWakeupFd is available])
94fi
95CPPFLAGS=$old_CPPFLAGS
96
97AC_ARG_ENABLE(thread,
98  AC_HELP_STRING([--disable-thread], [Disable pygtk threading support]),,
99  enable_thread=yes)
100
101AM_CHECK_PYMOD(thread,,,enable_thread=no)
102
103dnl Building documentation
104AC_ARG_ENABLE(docs,
105  AC_HELP_STRING([--enable-docs], [Enable documentation building]),enable_docs=$enableval,
106  enable_docs=no)
107if test "${enable_docs}" != no; then
108  dnl Check for xsltproc
109  AC_PATH_PROG([XSLTPROC], [xsltproc])
110  if test -z "$XSLTPROC"; then
111    enable_docs=no
112  fi
113fi
114
115AM_CONDITIONAL(ENABLE_DOCS, test x$enable_docs != xno)
116
117AC_MSG_CHECKING(whether to enable threading in pygtk)
118if test "x$enable_thread" != xno; then
119  extra_mods=gthread
120  THREADING_CFLAGS=
121  AC_MSG_RESULT(yes)
122else
123  extra_mods=
124  THREADING_CFLAGS="-DDISABLE_THREADING"
125  AC_MSG_RESULT(no)
126fi
127AC_SUBST(THREADING_CFLAGS)
128CPPFLAGS="${CPPFLAGS} $THREADING_CFLAGS"
129
130dnl get rid of the -export-dynamic stuff from the configure flags ...
131export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
132
133dnl glib
134AM_PATH_GLIB_2_0(glib_required_version,,[AC_MSG_ERROR(gobject is required to build pygtk?)],gobject $extra_mods)
135if test -n "$export_dynamic"; then
136  GLIB_LIBS=`echo $GLIB_LIBS | sed -e "s/$export_dynamic//"`
137fi
138
139PKG_CHECK_MODULES(PYGOBJECT, [pygobject-2.0 >= pygobject_required_version])
140
141PYGOBJECT_INCLUDEDIR=`$PKG_CONFIG --variable=pygtkincludedir pygobject-2.0`
142AC_SUBST(PYGOBJECT_INCLUDEDIR)
143
144PYGOBJECT_DATADIR=`$PKG_CONFIG --variable=datadir pygobject-2.0`
145AC_SUBST(PYGOBJECT_DATADIR)
146
147
148dnl PyGObject defs
149AC_SUBST(PYGOBJECT_DEFSDIR)
150PYGOBJECT_DEFSDIR=`$PKG_CONFIG --variable defsdir pygobject-2.0`
151
152AC_MSG_CHECKING([for gio-types.defs])
153if test -n "$PYGOBJECT_DEFSDIR" && test -e "$PYGOBJECT_DEFSDIR/gio-types.defs"; then
154  AM_CONDITIONAL(HAVE_GIO_TYPES_DEFS, true)
155  AC_MSG_RESULT($PYGOBJECT_DEFSDIR/gio-types.defs)
156else
157  AM_CONDITIONAL(HAVE_GIO_TYPES_DEFS, false)
158  AC_MSG_RESULT(no)
159fi
160
161
162dnl Documentation
163PYGOBJECT_FIXXREF="$PYTHON `$PKG_CONFIG --variable=fixxref pygobject-2.0`"
164AC_SUBST(PYGOBJECT_FIXXREF)
165
166PYGOBJECT_PYGDOCS="`$PKG_CONFIG --variable=pygdocs pygobject-2.0`"
167AC_SUBST(PYGOBJECT_PYGDOCS)
168
169dnl atk
170PKG_CHECK_MODULES(ATK, atk >= atk_required_version,
171	have_atk=true, have_atk=false)
172AC_SUBST(ATK_CFLAGS)
173AC_SUBST(ATK_LIBS)
174AM_CONDITIONAL(BUILD_ATK, $have_atk)
175if test -n "$export_dynamic"; then
176  ATK_LIBS=`echo $ATK_LIBS | sed -e "s/$export_dynamic//"`
177fi
178
179dnl pango
180PKG_CHECK_MODULES(PANGO, pango >= pango_required_version,
181	have_pango=true, have_pango=false)
182AC_SUBST(PANGO_CFLAGS)
183AC_SUBST(PANGO_LIBS)
184AM_CONDITIONAL(BUILD_PANGO, $have_pango)
185if test -n "$export_dynamic"; then
186  PANGO_LIBS=`echo $PANGO_LIBS | sed -e "s/$export_dynamic//"`
187fi
188
189dnl codegen from PyGObject
190AC_SUBST([CODEGENDIR])
191
192AC_MSG_CHECKING([for codegen])
193CODEGENDIR=`$PKG_CONFIG --variable codegendir pygobject-2.0`
194
195if test -z $CODEGENDIR; then
196  AC_MSG_ERROR([unable to find PyGObject codegen])
197else
198  AC_MSG_RESULT($CODEGENDIR)
199fi
200
201dnl pycairo
202PYGTK_CODEGEN_DEFINES=""
203AC_SUBST([PYGTK_CODEGEN_DEFINES])
204
205gtk_version=""
206PKG_CHECK_MODULES(PYCAIRO, [pycairo >= pycairo_required_version],
207        have_pycairo=true, have_pycairo=false)
208AC_SUBST(PYCAIRO_CFLAGS)
209AC_SUBST(PYCAIRO_LIBS)
210if test "x$have_pycairo" = "xtrue"; then
211  PYGTK_CODEGEN_DEFINES="-DHAVE_PYCAIRO $PYGTK_CODEGEN_DEFINES";
212  AC_DEFINE([HAVE_PYCAIRO], [1], [Define to 1 if pycairo is available])
213
214  AC_DEFINE_UNQUOTED(PYCAIRO_MAJOR_VERSION, [`pkg-config --modversion pycairo | cut -d '.' -f 1`], dnl
215                     [pycairo major version])
216  AC_DEFINE_UNQUOTED(PYCAIRO_MINOR_VERSION, [`pkg-config --modversion pycairo | cut -d '.' -f 2`], dnl
217                     [pycairo minor version])
218  AC_DEFINE_UNQUOTED(PYCAIRO_MICRO_VERSION, [`pkg-config --modversion pycairo | cut -d '.' -f 3`], dnl
219                     [pycairo micro version])
220
221  dnl pangocairo
222  PKG_CHECK_MODULES(PANGOCAIRO,
223          [pangocairo >= pango_required_version,
224           pycairo >= pycairo_required_version],
225	  have_pangocairo=true, have_pangocairo=false)
226  if test ! $have_pangocairo
227  then
228    AC_MSG_RESULT(no)
229  fi
230  AC_SUBST(PANGOCAIRO_CFLAGS)
231  AC_SUBST(PANGOCAIRO_LIBS)
232  AM_CONDITIONAL(BUILD_PANGOCAIRO, $have_pangocairo)
233
234  if test -n "$export_dynamic"; then
235    PANGOCAIRO_LIBS=`echo $PANGOCAIRO_LIBS | sed -e "s/$export_dynamic//"`
236  fi
237
238  dnl gtk+
239  PKG_CHECK_MODULES(GTK, gtk+-2.0 >= gtk_required_version,
240          HAVE_GTK="yes", HAVE_GTK="no")
241  if test "x$HAVE_GTK" = "xyes"; then
242     have_gtk=true
243  else
244     have_gtk=false
245     AC_MSG_RESULT(no)
246  fi
247  AM_CONDITIONAL(BUILD_GTK, $have_gtk)
248  AC_SUBST(GTK_CFLAGS)
249  AC_SUBST(GTK_LIBS)
250  if test -n "$export_dynamic"; then
251    GTK_LIBS=`echo $GTK_LIBS | sed -e "s/$export_dynamic//"`
252  fi
253
254  PKG_CHECK_MODULES(GTK210, gtk+-2.0 >= 2.10.0,
255	  HAVE_GTK_210="yes", HAVE_GTK_210="no")
256  if test "x$HAVE_GTK_210" = "xyes"; then
257     gtk_version="2.10"
258     have_gtk_210=true
259  else
260     AC_MSG_RESULT(no)
261     gtk_version="2.8"
262     have_gtk_210=false
263  fi
264
265  AM_CONDITIONAL(HAVE_GTK_2_10, $have_gtk_210)
266  AC_SUBST(HAVE_GTK_2_10)
267  AC_DEFINE([HAVE_GTK_2_10], [$have_gtk_210], [If Gtk 2.10 was found])
268
269  dnl check for gtk 2.12
270  PKG_CHECK_MODULES(GTK212, gtk+-2.0 >= 2.11.6,
271	  HAVE_GTK_212="yes", HAVE_GTK_212="no")
272
273  if test "x$HAVE_GTK_212" = "xyes"; then
274     gtk_version="2.12"
275     have_gtk_212=true
276     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_12"
277  else
278     AC_MSG_RESULT(no)
279     have_gtk_212=false
280  fi
281
282  AM_CONDITIONAL(HAVE_GTK_2_12, $have_gtk_212)
283  AC_SUBST(HAVE_GTK_2_12)
284  AC_DEFINE([HAVE_GTK_2_12], [$have_gtk_212], [If Gtk 2.12 was found])
285
286  dnl check for gtk 2.14
287  PKG_CHECK_MODULES(GTK214, gtk+-2.0 >= 2.13.8,
288	  HAVE_GTK_214="yes", HAVE_GTK_214="no")
289
290  if test "x$HAVE_GTK_214" = "xyes"; then
291     gtk_version="2.14"
292     have_gtk_214=true
293     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_14"
294  else
295     AC_MSG_RESULT(no)
296     have_gtk_214=false
297  fi
298
299  AM_CONDITIONAL(HAVE_GTK_2_14, $have_gtk_214)
300  AC_SUBST(HAVE_GTK_2_14)
301  AC_DEFINE([HAVE_GTK_2_14], [$have_gtk_214], [If Gtk 2.14 was found])
302
303  dnl check for gtk 2.16
304  PKG_CHECK_MODULES(GTK216, gtk+-2.0 >= 2.16.0,
305	  HAVE_GTK_216="yes", HAVE_GTK_216="no")
306
307  if test "x$HAVE_GTK_216" = "xyes"; then
308     gtk_version="2.16"
309     have_gtk_216=true
310     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_16"
311  else
312     AC_MSG_RESULT(no)
313     have_gtk_216=false
314  fi
315
316  AM_CONDITIONAL(HAVE_GTK_2_16, $have_gtk_216)
317  AC_SUBST(HAVE_GTK_2_16)
318  AC_DEFINE([HAVE_GTK_2_16], [$have_gtk_216], [If Gtk 2.16 was found])
319
320  dnl check for gtk 2.18
321  PKG_CHECK_MODULES(GTK218, gtk+-2.0 >= 2.18.0,
322	  HAVE_GTK_218="yes", HAVE_GTK_218="no")
323
324  if test "x$HAVE_GTK_218" = "xyes"; then
325     gtk_version="2.18"
326     have_gtk_218=true
327     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_18"
328  else
329     AC_MSG_RESULT(no)
330     have_gtk_218=false
331  fi
332
333  AM_CONDITIONAL(HAVE_GTK_2_18, $have_gtk_218)
334  AC_SUBST(HAVE_GTK_2_18)
335  AC_DEFINE([HAVE_GTK_2_18], [$have_gtk_218], [If Gtk 2.18 was found])
336
337  dnl check for gtk 2.20
338  PKG_CHECK_MODULES(GTK220, gtk+-2.0 >= 2.20.0,
339	  HAVE_GTK_220="yes", HAVE_GTK_220="no")
340
341  if test "x$HAVE_GTK_220" = "xyes"; then
342     gtk_version="2.20"
343     have_gtk_220=true
344     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_20"
345  else
346     AC_MSG_RESULT(no)
347     have_gtk_220=false
348  fi
349
350  AM_CONDITIONAL(HAVE_GTK_2_20, $have_gtk_220)
351  AC_SUBST(HAVE_GTK_2_20)
352  AC_DEFINE([HAVE_GTK_2_20], [$have_gtk_220], [If Gtk 2.20 was found])
353
354  dnl check for gtk 2.22
355  PKG_CHECK_MODULES(GTK222, gtk+-2.0 >= 2.22.0,
356	  HAVE_GTK_222="yes", HAVE_GTK_222="no")
357
358  if test "x$HAVE_GTK_222" = "xyes"; then
359     gtk_version="2.22"
360     have_gtk_222=true
361     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_22"
362  else
363     AC_MSG_RESULT(no)
364     have_gtk_222=false
365  fi
366
367  AM_CONDITIONAL(HAVE_GTK_2_22, $have_gtk_222)
368  AC_SUBST(HAVE_GTK_2_22)
369  AC_DEFINE([HAVE_GTK_2_22], [$have_gtk_222], [If Gtk 2.22 was found])
370
371  dnl check for gtk 2.24
372  PKG_CHECK_MODULES(GTK224, gtk+-2.0 >= 2.24.0,
373	  HAVE_GTK_224="yes", HAVE_GTK_224="no")
374
375  if test "x$HAVE_GTK_224" = "xyes"; then
376     gtk_version="2.24"
377     have_gtk_224=true
378     PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DHAVE_GTK_2_24"
379  else
380     AC_MSG_RESULT(no)
381     have_gtk_224=false
382  fi
383
384  AM_CONDITIONAL(HAVE_GTK_2_24, $have_gtk_224)
385  AC_SUBST(HAVE_GTK_2_24)
386  AC_DEFINE([HAVE_GTK_2_24], [$have_gtk_224], [If Gtk 2.24 was found])
387
388  dnl libglade
389  have_libglade=false
390  AC_ARG_WITH([glade], AS_HELP_STRING([--without-glade], [Build without glade library (default: test)]))
391  if test "x$with_glade" != "xno"; then
392    PKG_CHECK_MODULES(LIBGLADE, [libglade-2.0 >= libglade_required_version],
393	  have_libglade=true, have_libglade=false)
394  fi
395  AC_SUBST(LIBGLADE_CFLAGS)
396  AC_SUBST(LIBGLADE_LIBS)
397  AM_CONDITIONAL(BUILD_LIBGLADE, $have_libglade)
398  if test -n "$export_dynamic"; then
399    LIBGLADE_LIBS=`echo $LIBGLADE_LIBS | sed -e "s/$export_dynamic//"`
400  fi
401
402  dnl gtkunixprint
403  PKG_CHECK_MODULES(GTKUNIXPRINT, [gtk+-unix-print-2.0 >= gtkunixprint_required_version],
404	  have_gtkunixprint=true, have_gtkunixprint=false)
405  AC_SUBST(GTKUNIXPRINT_CFLAGS)
406  AC_SUBST(GTKUNIXPRINT_LIBS)
407  AM_CONDITIONAL(BUILD_GTKUNIXPRINT, $have_gtkunixprint)
408  if test -n "$export_dynamic"; then
409    GTKUNIXPRINT_LIBS=`echo $GTKUNIXPRINT_LIBS | sed -e "s/$export_dynamic//"`
410  fi
411
412else
413  AC_MSG_RESULT(no)
414  AC_MSG_RESULT(not checking for gtk due to missing pycairo)
415  AM_CONDITIONAL(BUILD_PANGOCAIRO, false)
416  AM_CONDITIONAL(BUILD_GTK, false)
417  AM_CONDITIONAL(HAVE_GTK_2_10, false)
418  AM_CONDITIONAL(HAVE_GTK_2_12, false)
419  AM_CONDITIONAL(HAVE_GTK_2_14, false)
420  AM_CONDITIONAL(HAVE_GTK_2_16, false)
421  AM_CONDITIONAL(HAVE_GTK_2_18, false)
422  AM_CONDITIONAL(HAVE_GTK_2_20, false)
423  AM_CONDITIONAL(HAVE_GTK_2_22, false)
424  AM_CONDITIONAL(HAVE_GTK_2_24, false)
425  AM_CONDITIONAL(BUILD_LIBGLADE, false)
426  AM_CONDITIONAL(BUILD_GTKUNIXPRINT, false)
427  have_pangocairo=false
428  have_gtk=false
429  have_libglade=false
430  have_gtkunixprint=false
431fi
432
433dnl Check for GDK target
434AC_MSG_CHECKING([for GDK target])
435gdk_target=`$PKG_CONFIG --variable target gdk-2.0`
436if test -z $gdk_target; then
437  AC_MSG_RESULT((unknown))
438  AC_MSG_WARN([unable to determine the GDK target system; some functions may not be available])
439else
440  AC_MSG_RESULT($gdk_target)
441fi
442
443case $gdk_target in
444        x11) PYGTK_CODEGEN_DEFINES="$PYGTK_CODEGEN_DEFINES -DGDK_TARGET_X11"
445        ;;
446esac
447
448
449dnl checks to see if numpy is installed.
450AC_ARG_ENABLE(numpy,
451  AC_HELP_STRING([--disable-numpy], [Disable numeric python features]),,
452  enable_numpy=yes)
453
454if test "x$enable_numpy" != xno; then
455  save_CPPFLAGS="$CPPFLAGS"
456  numpy_INCLUDES=`$PYTHON -c "import numpy; print numpy.get_include()" 2> /dev/null`
457  if test "x$numpy_INCLUDES" = "x"; then
458    AC_MSG_WARN([Could not find a valid numpy installation, disabling.])
459    enable_numpy=no
460  else
461    CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES -I$numpy_INCLUDES"
462    AC_CHECK_HEADER([numpy/arrayobject.h],
463      [AC_DEFINE(HAVE_NUMPY,,[whether to include numeric python support])],
464      [enable_numpy=no],
465      [#include <Python.h>])
466    if test "x$enable_numpy" != "xno"; then
467      CPPFLAGS="$save_CPPFLAGS -I$numpy_INCLUDES"
468    fi
469  fi
470fi
471
472
473dnl add required cflags ...
474if test "x$GCC" = "xyes"; then
475  JH_ADD_CFLAG([-Wall])
476  JH_ADD_CFLAG([-fno-strict-aliasing])
477
478  case $host_os in
479  solaris*)
480    ;;
481  *)
482    JH_ADD_CFLAG([-std=c9x])
483    ;;
484  esac
485fi
486
487
488AC_CONFIG_FILES(
489  Makefile
490  pygtk-2.0.pc
491  pygtk-codegen-2.0
492  gtk/Makefile
493  docs/Makefile
494  docs/reference/entities.docbook
495  examples/Makefile
496  tests/Makefile
497  pygtk.spec
498  PKG-INFO)
499AC_OUTPUT
500
501echo
502echo "The following modules will be built:"
503echo
504$have_atk && echo     atk
505$have_pango && echo     pango
506$have_pangocairo && echo     pangocairo
507$have_gtk && echo     gtk with $gtk_version API
508$have_libglade && echo     gtk.glade
509$have_gtkunixprint && echo     gtk.unixprint
510
511if test ! $have_atk || ! $have_pango || \
512        ! $have_gtk || ! $have_libglade || \
513        ! $have_pangocairo || ! $have_gtkunixprint; then
514  echo
515  echo "The following modules will NOT be built:"
516  echo
517  $have_atk || echo     atk
518  $have_pango || echo     pango
519  $have_pangocairo || echo     pangocairo
520  $have_gtk || echo     gtk
521  $have_libglade || echo     gtk.glade
522  $have_gtkunixprint || echo     gtk.unixprint
523fi
524
525echo
526echo "Numpy support: $enable_numpy"
527echo
528