1 dnl aclocal.m4 generated automatically by aclocal 1.4-p5
3 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
4 dnl This file is free software; the Free Software Foundation
5 dnl gives unlimited permission to copy and/or distribute it,
6 dnl with or without modifications, as long as this notice is preserved.
8 dnl This program is distributed in the hope that it will be useful,
9 dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10 dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11 dnl PARTICULAR PURPOSE.
13 dnl ---------------------------------------------------------------------------
15 dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
16 dnl Vadim Zeitlin and Ron Lee
18 dnl This script is under the wxWindows licence.
21 dnl ---------------------------------------------------------------------------
23 dnl ===========================================================================
24 dnl macros to find the a file in the list of include/lib paths
25 dnl ===========================================================================
27 dnl ---------------------------------------------------------------------------
28 dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
29 dnl to the full name of the file that was found or leaves it empty if not found
30 dnl ---------------------------------------------------------------------------
31 AC_DEFUN([WX_PATH_FIND_INCLUDES],
36 if test -f "$ac_dir/$2"; then
37 ac_find_includes=$ac_dir
43 dnl ---------------------------------------------------------------------------
44 dnl call WX_PATH_FIND_LIBRARIES(search path, header name), sets ac_find_libraries
45 dnl to the full name of the file that was found or leaves it empty if not found
46 dnl ---------------------------------------------------------------------------
47 AC_DEFUN([WX_PATH_FIND_LIBRARIES],
52 for ac_extension in a so sl dylib; do
53 if test -f "$ac_dir/lib$2.$ac_extension"; then
54 ac_find_libraries=$ac_dir
61 dnl ---------------------------------------------------------------------------
62 dnl Path to include, already defined
63 dnl ---------------------------------------------------------------------------
64 AC_DEFUN([WX_INCLUDE_PATH_EXIST],
67 echo "$2" | grep "\-I$1" > /dev/null
69 if test $result = 0; then
72 ac_path_to_include=" -I$1"
76 dnl ---------------------------------------------------------------------------
77 dnl Path to link, already defined
78 dnl ---------------------------------------------------------------------------
79 AC_DEFUN([WX_LINK_PATH_EXIST],
81 echo "$2" | grep "\-L$1" > /dev/null
83 if test $result = 0; then
86 ac_path_to_link=" -L$1"
90 dnl ===========================================================================
92 dnl ===========================================================================
94 dnl ---------------------------------------------------------------------------
95 dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
96 dnl or only the old <iostream.h> one - it may be generally assumed that if
97 dnl <iostream> exists, the other "new" headers (without .h) exist too.
99 dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling)
100 dnl ---------------------------------------------------------------------------
102 AC_DEFUN([WX_CPP_NEW_HEADERS],
104 if test "$cross_compiling" = "yes"; then
105 ifelse([$2], , :, [$2])
110 AC_CHECK_HEADERS(iostream)
112 if test "$ac_cv_header_iostream" = "yes" ; then
113 ifelse([$1], , :, [$1])
115 ifelse([$2], , :, [$2])
122 dnl ---------------------------------------------------------------------------
123 dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type
125 dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool
126 dnl ---------------------------------------------------------------------------
128 AC_DEFUN([WX_CPP_BOOL],
130 AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool,
154 if test "$wx_cv_cpp_bool" = "yes"; then
159 dnl ---------------------------------------------------------------------------
160 dnl WX_CPP_EXPLICIT checks whether the C++ compiler support the explicit
161 dnl keyword and defines HAVE_EXPLICIT if this is the case
162 dnl ---------------------------------------------------------------------------
164 AC_DEFUN([WX_CPP_EXPLICIT],
166 AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
172 dnl do the test in 2 steps: first check that the compiler knows about the
173 dnl explicit keyword at all and then verify that it really honours it
176 class Foo { public: explicit Foo(int) {} };
184 class Foo { public: explicit Foo(int) {} };
185 static void TakeFoo(const Foo& foo) { }
201 if test "$wx_cv_explicit" = "yes"; then
202 AC_DEFINE(HAVE_EXPLICIT)
206 dnl ---------------------------------------------------------------------------
207 dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
208 dnl ---------------------------------------------------------------------------
210 AC_DEFUN([WX_C_BIGENDIAN],
211 [AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian,
212 [ac_cv_c_bigendian=unknown
213 # See if sys/param.h defines the BYTE_ORDER macro.
214 AC_TRY_COMPILE([#include <sys/types.h>
215 #include <sys/param.h>], [
216 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
218 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
219 AC_TRY_COMPILE([#include <sys/types.h>
220 #include <sys/param.h>], [
221 #if BYTE_ORDER != BIG_ENDIAN
223 #endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
224 if test $ac_cv_c_bigendian = unknown; then
225 AC_TRY_RUN([main () {
226 /* Are we little or big endian? From Harbison&Steele. */
230 char c[sizeof (long)];
233 exit (u.c[sizeof (long) - 1] == 1);
234 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
236 if test $ac_cv_c_bigendian = unknown; then
237 AC_MSG_WARN([Assuming little-endian target machine - this may be overriden by adding the line "ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}" to config.cache file])
239 if test $ac_cv_c_bigendian = yes; then
240 AC_DEFINE(WORDS_BIGENDIAN)
244 dnl ---------------------------------------------------------------------------
245 dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
246 dnl ---------------------------------------------------------------------------
248 AC_DEFUN([WX_ARG_CACHE_INIT],
250 wx_arg_cache_file="configarg.cache"
251 echo "loading argument cache $wx_arg_cache_file"
252 rm -f ${wx_arg_cache_file}.tmp
253 touch ${wx_arg_cache_file}.tmp
254 touch ${wx_arg_cache_file}
257 AC_DEFUN([WX_ARG_CACHE_FLUSH],
259 echo "saving argument cache $wx_arg_cache_file"
260 mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
263 dnl this macro checks for a three-valued command line --with argument:
264 dnl possible arguments are 'yes', 'no', 'sys', or 'builtin'
265 dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
266 AC_DEFUN([WX_ARG_SYS_WITH],
268 AC_MSG_CHECKING([for --with-$1])
270 AC_ARG_WITH($1, [$2],
272 if test "$withval" = yes; then
273 ac_cv_use_$1='$3=yes'
274 elif test "$withval" = no; then
276 elif test "$withval" = sys; then
277 ac_cv_use_$1='$3=sys'
278 elif test "$withval" = builtin; then
279 ac_cv_use_$1='$3=builtin'
281 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
285 LINE=`grep "$3" ${wx_arg_cache_file}`
286 if test "x$LINE" != x ; then
292 ac_cv_use_$1='$3='$DEFAULT_$3
296 if test "$no_cache" != 1; then
297 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
300 if test "$$3" = yes; then
302 elif test "$$3" = no; then
304 elif test "$$3" = sys; then
305 AC_MSG_RESULT([system version])
306 elif test "$$3" = builtin; then
307 AC_MSG_RESULT([builtin version])
309 AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
313 dnl this macro checks for a command line argument and caches the result
314 dnl usage: WX_ARG_WITH(option, helpmessage, variable-name)
315 AC_DEFUN([WX_ARG_WITH],
317 AC_MSG_CHECKING([for --with-$1])
319 AC_ARG_WITH($1, [$2],
321 if test "$withval" = yes; then
322 ac_cv_use_$1='$3=yes'
328 LINE=`grep "$3" ${wx_arg_cache_file}`
329 if test "x$LINE" != x ; then
335 ac_cv_use_$1='$3='$DEFAULT_$3
339 if test "$no_cache" != 1; then
340 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
343 if test "$$3" = yes; then
350 dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
351 dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name, enablestring)
352 AC_DEFUN([WX_ARG_ENABLE],
355 AC_MSG_CHECKING([for --${enablestring:-enable}-$1])
357 AC_ARG_ENABLE($1, [$2],
359 if test "$enableval" = yes; then
360 ac_cv_use_$1='$3=yes'
366 LINE=`grep "$3" ${wx_arg_cache_file}`
367 if test "x$LINE" != x ; then
373 ac_cv_use_$1='$3='$DEFAULT_$3
377 if test "$no_cache" != 1; then
378 echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
381 if test "$$3" = yes; then
390 dnl ===========================================================================
391 dnl "3rd party" macros included here because they are not widely available
392 dnl ===========================================================================
394 dnl ---------------------------------------------------------------------------
395 dnl test for availability of iconv()
396 dnl ---------------------------------------------------------------------------
398 dnl From Bruno Haible.
402 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
403 dnl those with the standalone portable GNU libiconv installed).
405 AC_ARG_WITH([libiconv-prefix],
406 [ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
407 for dir in `echo "$withval" | tr : ' '`; do
408 if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
409 if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
413 AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
414 am_cv_func_iconv="no, consider installing GNU libiconv"
416 AC_TRY_LINK([#include <stdlib.h>
418 [iconv_t cd = iconv_open("","");
419 iconv(cd,NULL,NULL,NULL,NULL);
421 am_cv_func_iconv=yes)
422 if test "$am_cv_func_iconv" != yes; then
425 AC_TRY_LINK([#include <stdlib.h>
427 [iconv_t cd = iconv_open("","");
428 iconv(cd,NULL,NULL,NULL,NULL);
431 am_cv_func_iconv=yes)
435 if test "$am_cv_func_iconv" = yes; then
436 AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
437 AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
445 #if defined(__STDC__) || defined(__cplusplus)
446 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
452 wx_cv_func_iconv_const="no",
453 wx_cv_func_iconv_const="yes"
458 if test "x$wx_cv_func_iconv_const" = "xyes"; then
462 AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
463 [Define as const if the declaration of iconv() needs const.])
466 if test "$am_cv_lib_iconv" = yes; then
472 dnl ---------------------------------------------------------------------------
473 dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
474 dnl ---------------------------------------------------------------------------
476 dnl WX_SYS_LARGEFILE_TEST
478 dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
479 dnl arithmetic properly but this failed miserably with gcc under Linux
480 dnl whereas the system still supports 64 bit files, so now simply check
481 dnl that off_t is big enough
482 define(WX_SYS_LARGEFILE_TEST,
484 unsigned int field: sizeof(off_t) == 8;
489 dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
490 define(WX_SYS_LARGEFILE_MACRO_VALUE,
492 AC_CACHE_CHECK([for $1 value needed for large files], [$3],
494 AC_TRY_COMPILE([#define $1 $2
495 #include <sys/types.h>],
496 WX_SYS_LARGEFILE_TEST,
502 if test "$$3" != no; then
504 AC_DEFINE_UNQUOTED([$1], [$$3])
511 dnl By default, many hosts won't let programs access large files;
512 dnl one must use special compiler options to get large-file access to work.
513 dnl For more details about this brain damage please see:
514 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
515 AC_DEFUN([AC_SYS_LARGEFILE],
516 [AC_ARG_ENABLE(largefile,
517 [ --disable-largefile omit support for large files])
518 if test "$enable_largefile" != no; then
519 dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
520 dnl _LARGE_FILES -- for AIX
522 WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
523 if test "x$wx_largefile" != "xyes"; then
524 WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
527 AC_MSG_CHECKING(if large file support is available)
528 if test "x$wx_largefile" = "xyes"; then
529 AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
531 AC_MSG_RESULT($wx_largefile)
535 # Configure paths for GTK+
536 # Owen Taylor 1997-2001
538 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
539 dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
540 dnl pass to pkg-config
542 AC_DEFUN(AM_PATH_GTK_2_0,
544 dnl Get the cflags and libraries from pkg-config
546 AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
547 , enable_gtktest=yes)
549 pkg_config_args=gtk+-2.0
554 pkg_config_args="$pkg_config_args gthread-2.0"
561 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
563 if test x$PKG_CONFIG != xno ; then
564 if pkg-config --atleast-pkgconfig-version 0.7 ; then
567 echo *** pkg-config too old; version 0.7 or better required.
575 min_gtk_version=ifelse([$1], ,2.0.0,$1)
576 AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
578 if test x$PKG_CONFIG != xno ; then
579 ## don't try to run the test against uninstalled libtool libs
580 if $PKG_CONFIG --uninstalled $pkg_config_args; then
581 echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
585 if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
592 if test x"$no_gtk" = x ; then
593 GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
594 GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
595 gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
596 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
597 gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
598 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
599 gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
600 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
601 if test "x$enable_gtktest" = "xyes" ; then
602 ac_save_CFLAGS="$CFLAGS"
604 CFLAGS="$CFLAGS $GTK_CFLAGS"
605 LIBS="$GTK_LIBS $LIBS"
607 dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
608 dnl checks the results of pkg-config to some extent)
619 int major, minor, micro;
622 system ("touch conf.gtktest");
624 /* HP/UX 9 (%@#!) writes to sscanf strings */
625 tmp_version = g_strdup("$min_gtk_version");
626 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
627 printf("%s, bad version string\n", "$min_gtk_version");
631 if ((gtk_major_version != $gtk_config_major_version) ||
632 (gtk_minor_version != $gtk_config_minor_version) ||
633 (gtk_micro_version != $gtk_config_micro_version))
635 printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
636 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
637 gtk_major_version, gtk_minor_version, gtk_micro_version);
638 printf ("*** was found! If pkg-config was correct, then it is best\n");
639 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
640 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
641 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
642 printf("*** required on your system.\n");
643 printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
644 printf("*** to point to the correct configuration files\n");
646 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
647 (gtk_minor_version != GTK_MINOR_VERSION) ||
648 (gtk_micro_version != GTK_MICRO_VERSION))
650 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
651 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
652 printf("*** library (version %d.%d.%d)\n",
653 gtk_major_version, gtk_minor_version, gtk_micro_version);
657 if ((gtk_major_version > major) ||
658 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
659 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
665 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
666 gtk_major_version, gtk_minor_version, gtk_micro_version);
667 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
668 major, minor, micro);
669 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
671 printf("*** If you have already installed a sufficiently new version, this error\n");
672 printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
673 printf("*** being found. The easiest way to fix this is to remove the old version\n");
674 printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
675 printf("*** correct copy of pkg-config. (In this case, you will have to\n");
676 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
677 printf("*** so that the correct libraries are found at run-time))\n");
682 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
683 CFLAGS="$ac_save_CFLAGS"
687 if test "x$no_gtk" = x ; then
688 AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
689 ifelse([$2], , :, [$2])
692 if test "$PKG_CONFIG" = "no" ; then
693 echo "*** A new enough version of pkg-config was not found."
694 echo "*** See http://pkgconfig.sourceforge.net"
696 if test -f conf.gtktest ; then
699 echo "*** Could not run GTK+ test program, checking why..."
700 ac_save_CFLAGS="$CFLAGS"
702 CFLAGS="$CFLAGS $GTK_CFLAGS"
703 LIBS="$LIBS $GTK_LIBS"
707 ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
708 [ echo "*** The test program compiled, but did not run. This usually means"
709 echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
710 echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
711 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
712 echo "*** to the installed location Also, make sure you have run ldconfig if that"
713 echo "*** is required on your system"
715 echo "*** If you have an old version installed, it is best to remove it, although"
716 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
717 [ echo "*** The test program failed to compile or link. See the file config.log for the"
718 echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
719 CFLAGS="$ac_save_CFLAGS"
725 ifelse([$3], , :, [$3])
733 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
734 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
735 dnl also defines GSTUFF_PKG_ERRORS on error
736 AC_DEFUN(PKG_CHECK_MODULES, [
739 if test -z "$PKG_CONFIG"; then
740 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
743 if test "$PKG_CONFIG" = "no" ; then
744 echo "*** The pkg-config script could not be found. Make sure it is"
745 echo "*** in your path, or set the PKG_CONFIG environment variable"
746 echo "*** to the full path to pkg-config."
747 echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
749 PKG_CONFIG_MIN_VERSION=0.9.0
750 if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
751 AC_MSG_CHECKING(for $2)
753 if $PKG_CONFIG --exists "$2" ; then
757 AC_MSG_CHECKING($1_CFLAGS)
758 $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
759 AC_MSG_RESULT($$1_CFLAGS)
761 AC_MSG_CHECKING($1_LIBS)
762 $1_LIBS=`$PKG_CONFIG --libs "$2"`
763 AC_MSG_RESULT($$1_LIBS)
767 ## If we have a custom action on failure, don't print errors, but
768 ## do set a variable so people can do so.
769 $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
770 ifelse([$4], ,echo $$1_PKG_ERRORS,)
776 echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
777 echo "*** See http://www.freedesktop.org/software/pkgconfig"
781 if test $succeeded = yes; then
782 ifelse([$3], , :, [$3])
784 ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
790 # Configure paths for GTK+
791 # Owen Taylor 97-11-3
793 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
794 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
796 AC_DEFUN(AM_PATH_GTK,
798 dnl Get the cflags and libraries from the gtk-config script
800 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
801 gtk_config_prefix="$withval", gtk_config_prefix="")
802 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
803 gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
804 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
805 , enable_gtktest=yes)
811 gtk_config_args="$gtk_config_args gthread"
816 if test x$gtk_config_exec_prefix != x ; then
817 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
818 if test x${GTK_CONFIG+set} != xset ; then
819 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
822 if test x$gtk_config_prefix != x ; then
823 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
824 if test x${GTK_CONFIG+set} != xset ; then
825 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
829 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
830 min_gtk_version=ifelse([$1], ,0.99.7,$1)
831 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
833 if test "$GTK_CONFIG" = "no" ; then
836 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
837 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
838 gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
839 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
840 gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
841 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
842 gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
843 sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
844 if test "x$enable_gtktest" = "xyes" ; then
845 ac_save_CFLAGS="$CFLAGS"
847 CFLAGS="$CFLAGS $GTK_CFLAGS"
848 LIBS="$GTK_LIBS $LIBS"
850 dnl Now check if the installed GTK is sufficiently new. (Also sanity
851 dnl checks the results of gtk-config to some extent
862 int major, minor, micro;
865 system ("touch conf.gtktest");
867 /* HP/UX 9 (%@#!) writes to sscanf strings */
868 tmp_version = g_strdup("$min_gtk_version");
869 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
870 printf("%s, bad version string\n", "$min_gtk_version");
874 if ((gtk_major_version != $gtk_config_major_version) ||
875 (gtk_minor_version != $gtk_config_minor_version) ||
876 (gtk_micro_version != $gtk_config_micro_version))
878 printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
879 $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
880 gtk_major_version, gtk_minor_version, gtk_micro_version);
881 printf ("*** was found! If gtk-config was correct, then it is best\n");
882 printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
883 printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
884 printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
885 printf("*** required on your system.\n");
886 printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
887 printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
888 printf("*** before re-running configure\n");
890 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
891 else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
892 (gtk_minor_version != GTK_MINOR_VERSION) ||
893 (gtk_micro_version != GTK_MICRO_VERSION))
895 printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
896 GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
897 printf("*** library (version %d.%d.%d)\n",
898 gtk_major_version, gtk_minor_version, gtk_micro_version);
900 #endif /* defined (GTK_MAJOR_VERSION) ... */
903 if ((gtk_major_version > major) ||
904 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
905 ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
911 printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
912 gtk_major_version, gtk_minor_version, gtk_micro_version);
913 printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
914 major, minor, micro);
915 printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
917 printf("*** If you have already installed a sufficiently new version, this error\n");
918 printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
919 printf("*** being found. The easiest way to fix this is to remove the old version\n");
920 printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
921 printf("*** correct copy of gtk-config. (In this case, you will have to\n");
922 printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
923 printf("*** so that the correct libraries are found at run-time))\n");
928 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
929 CFLAGS="$ac_save_CFLAGS"
933 if test "x$no_gtk" = x ; then
935 ifelse([$2], , :, [$2])
938 if test "$GTK_CONFIG" = "no" ; then
939 echo "*** The gtk-config script installed by GTK could not be found"
940 echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
941 echo "*** your path, or set the GTK_CONFIG environment variable to the"
942 echo "*** full path to gtk-config."
944 if test -f conf.gtktest ; then
947 echo "*** Could not run GTK test program, checking why..."
948 CFLAGS="$CFLAGS $GTK_CFLAGS"
949 LIBS="$LIBS $GTK_LIBS"
953 ], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
954 [ echo "*** The test program compiled, but did not run. This usually means"
955 echo "*** that the run-time linker is not finding GTK or finding the wrong"
956 echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
957 echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
958 echo "*** to the installed location Also, make sure you have run ldconfig if that"
959 echo "*** is required on your system"
961 echo "*** If you have an old version installed, it is best to remove it, although"
962 echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
964 echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
965 echo "*** came with the system with the command"
967 echo "*** rpm --erase --nodeps gtk gtk-devel" ],
968 [ echo "*** The test program failed to compile or link. See the file config.log for the"
969 echo "*** exact error that occured. This usually means GTK was incorrectly installed"
970 echo "*** or that you have moved GTK since it was installed. In the latter case, you"
971 echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
972 CFLAGS="$ac_save_CFLAGS"
978 ifelse([$3], , :, [$3])