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