added wxEXPLICIT macro
[wxWidgets.git] / aclocal.m4
1 dnl aclocal.m4 generated automatically by aclocal 1.4
2
3 dnl Copyright (C) 1994, 1995-8, 1999 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.
7
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.
12
13 dnl ---------------------------------------------------------------------------
14 dnl
15 dnl Macros for configure.in for wxWindows by Robert Roebling, Phil Blecker,
16 dnl Vadim Zeitlin and Ron Lee
17 dnl
18 dnl This script is under the wxWindows licence.
19 dnl
20 dnl Version: $Id$
21 dnl ---------------------------------------------------------------------------
22
23 dnl ===========================================================================
24 dnl macros to find the a file in the list of include/lib paths
25 dnl ===========================================================================
26
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],
32 [
33 ac_find_includes=
34 for ac_dir in $1;
35   do
36     if test -f "$ac_dir/$2"; then
37       ac_find_includes=$ac_dir
38       break
39     fi
40   done
41 ])
42
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],
48 [
49 ac_find_libraries=
50 for ac_dir in $1;
51   do
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
55         break 2
56       fi
57     done
58   done
59 ])
60
61 dnl ---------------------------------------------------------------------------
62 dnl Path to include, already defined
63 dnl ---------------------------------------------------------------------------
64 AC_DEFUN([WX_INCLUDE_PATH_EXIST],
65 [
66   ac_path_to_include=$1
67   echo "$2" | grep "\-I$1" > /dev/null
68   result=$?
69   if test $result = 0; then
70     ac_path_to_include=""
71   else
72     ac_path_to_include=" -I$1"
73   fi
74 ])
75
76 dnl ---------------------------------------------------------------------------
77 dnl Path to link, already defined
78 dnl ---------------------------------------------------------------------------
79 AC_DEFUN([WX_LINK_PATH_EXIST],
80 [
81   echo "$2" | grep "\-L$1" > /dev/null
82   result=$?
83   if test $result = 0; then
84     ac_path_to_link=""
85   else
86     ac_path_to_link=" -L$1"
87   fi
88 ])
89
90 dnl ===========================================================================
91 dnl C++ features test
92 dnl ===========================================================================
93
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.
98 dnl
99 dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling)
100 dnl ---------------------------------------------------------------------------
101
102 AC_DEFUN([WX_CPP_NEW_HEADERS],
103 [
104   if test "$cross_compiling" = "yes"; then
105     ifelse([$2], , :, [$2])
106   else
107     AC_LANG_SAVE
108     AC_LANG_CPLUSPLUS
109
110     AC_CHECK_HEADERS(iostream)
111
112     if test "$ac_cv_header_iostream" = "yes" ; then
113       ifelse([$1], , :, [$1])
114     else
115       ifelse([$2], , :, [$2])
116     fi
117
118     AC_LANG_RESTORE
119   fi
120 ])
121
122 dnl ---------------------------------------------------------------------------
123 dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type
124 dnl
125 dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool
126 dnl ---------------------------------------------------------------------------
127
128 AC_DEFUN([WX_CPP_BOOL],
129 [
130   AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool,
131   [
132     AC_LANG_SAVE
133     AC_LANG_CPLUSPLUS
134
135     AC_TRY_COMPILE(
136       [
137       ],
138       [
139         bool b = true;
140
141         return 0;
142       ],
143       [
144         wx_cv_cpp_bool=yes
145       ],
146       [
147         wx_cv_cpp_bool=no
148       ]
149     )
150
151     AC_LANG_RESTORE
152   ])
153
154   if test "$wx_cv_cpp_bool" = "yes"; then
155     AC_DEFINE(HAVE_BOOL)
156   fi
157 ])
158
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 ---------------------------------------------------------------------------
163
164 AC_DEFUN([WX_CPP_EXPLICIT],
165 [
166   AC_CACHE_CHECK([if C++ compiler supports the explicit keyword],
167                  wx_cv_explicit,
168   [
169     AC_LANG_SAVE
170     AC_LANG_CPLUSPLUS
171
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
174     AC_TRY_COMPILE(
175       [
176         class Foo { public: explicit Foo(int) {} };
177       ],
178       [
179         return 0;
180       ],
181       [
182         AC_TRY_COMPILE(
183             [
184                 class Foo { public: explicit Foo(int) {} };
185                 static void TakeFoo(const Foo& foo) { }
186             ],
187             [
188                 TakeFoo(17);
189                 return 0;
190             ],
191             wx_cv_explicit=no,
192             wx_cv_explicit=yes
193         )
194       ],
195       wx_cv_explicit=no
196     )
197
198     AC_LANG_RESTORE
199   ])
200
201   if test "$wx_cv_explicit" = "yes"; then
202     AC_DEFINE(HAVE_EXPLICIT)
203   fi
204 ])
205
206 dnl ---------------------------------------------------------------------------
207 dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
208 dnl ---------------------------------------------------------------------------
209
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
217  bogus endian macros
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
222  not 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.  */
227   union
228   {
229     long l;
230     char c[sizeof (long)];
231   } u;
232   u.l = 1;
233   exit (u.c[sizeof (long) - 1] == 1);
234 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
235 fi])
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])
238 fi
239 if test $ac_cv_c_bigendian = yes; then
240   AC_DEFINE(WORDS_BIGENDIAN)
241 fi
242 ])
243
244 dnl ---------------------------------------------------------------------------
245 dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
246 dnl ---------------------------------------------------------------------------
247
248 AC_DEFUN([WX_ARG_CACHE_INIT],
249         [
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}
255         ])
256
257 AC_DEFUN([WX_ARG_CACHE_FLUSH],
258         [
259           echo "saving argument cache $wx_arg_cache_file"
260           mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
261         ])
262
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],
267         [
268           AC_MSG_CHECKING([for --with-$1])
269           no_cache=0
270           AC_ARG_WITH($1, [$2],
271                       [
272                         if test "$withval" = yes; then
273                           ac_cv_use_$1='$3=yes'
274                         elif test "$withval" = no; then
275                           ac_cv_use_$1='$3=no'
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'
280                         else
281                           AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
282                         fi
283                       ],
284                       [
285                         LINE=`grep "$3" ${wx_arg_cache_file}`
286                         if test "x$LINE" != x ; then
287                           eval "DEFAULT_$LINE"
288                         else
289                           no_cache=1
290                         fi
291
292                         ac_cv_use_$1='$3='$DEFAULT_$3
293                       ])
294
295           eval "$ac_cv_use_$1"
296           if test "$no_cache" != 1; then
297             echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
298           fi
299
300           if test "$$3" = yes; then
301             AC_MSG_RESULT(yes)
302           elif test "$$3" = no; then
303             AC_MSG_RESULT(no)
304           elif test "$$3" = sys; then
305             AC_MSG_RESULT([system version])
306           elif test "$$3" = builtin; then
307             AC_MSG_RESULT([builtin version])
308           else
309             AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
310           fi
311         ])
312
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],
316         [
317           AC_MSG_CHECKING([for --with-$1])
318           no_cache=0
319           AC_ARG_WITH($1, [$2],
320                       [
321                         if test "$withval" = yes; then
322                           ac_cv_use_$1='$3=yes'
323                         else
324                           ac_cv_use_$1='$3=no'
325                         fi
326                       ],
327                       [
328                         LINE=`grep "$3" ${wx_arg_cache_file}`
329                         if test "x$LINE" != x ; then
330                           eval "DEFAULT_$LINE"
331                         else
332                           no_cache=1
333                         fi
334
335                         ac_cv_use_$1='$3='$DEFAULT_$3
336                       ])
337
338           eval "$ac_cv_use_$1"
339           if test "$no_cache" != 1; then
340             echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
341           fi
342
343           if test "$$3" = yes; then
344             AC_MSG_RESULT(yes)
345           else
346             AC_MSG_RESULT(no)
347           fi
348         ])
349
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)
352 AC_DEFUN([WX_ARG_ENABLE],
353         [
354           AC_MSG_CHECKING([for --enable-$1])
355           no_cache=0
356           AC_ARG_ENABLE($1, [$2],
357                         [
358                           if test "$enableval" = yes; then
359                             ac_cv_use_$1='$3=yes'
360                           else
361                             ac_cv_use_$1='$3=no'
362                           fi
363                         ],
364                         [
365                           LINE=`grep "$3" ${wx_arg_cache_file}`
366                           if test "x$LINE" != x ; then
367                             eval "DEFAULT_$LINE"
368                           else
369                             no_cache=1
370                           fi
371
372                           ac_cv_use_$1='$3='$DEFAULT_$3
373                         ])
374
375           eval "$ac_cv_use_$1"
376           if test "$no_cache" != 1; then
377             echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
378           fi
379
380           if test "$$3" = yes; then
381             AC_MSG_RESULT(yes)
382           else
383             AC_MSG_RESULT(no)
384           fi
385         ])
386
387
388
389 dnl ===========================================================================
390 dnl "3rd party" macros included here because they are not widely available
391 dnl ===========================================================================
392
393 dnl ---------------------------------------------------------------------------
394 dnl test for availability of iconv()
395 dnl ---------------------------------------------------------------------------
396
397 dnl From Bruno Haible.
398
399 AC_DEFUN([AM_ICONV],
400 [
401   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
402   dnl those with the standalone portable GNU libiconv installed).
403
404   AC_ARG_WITH([libiconv-prefix],
405 [  --with-libiconv-prefix=DIR  search for libiconv in DIR/include and DIR/lib], [
406     for dir in `echo "$withval" | tr : ' '`; do
407       if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
408       if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
409     done
410    ])
411
412   AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
413     am_cv_func_iconv="no, consider installing GNU libiconv"
414     am_cv_lib_iconv=no
415     AC_TRY_LINK([#include <stdlib.h>
416 #include <iconv.h>],
417       [iconv_t cd = iconv_open("","");
418        iconv(cd,NULL,NULL,NULL,NULL);
419        iconv_close(cd);],
420       am_cv_func_iconv=yes)
421     if test "$am_cv_func_iconv" != yes; then
422       am_save_LIBS="$LIBS"
423       LIBS="$LIBS -liconv"
424       AC_TRY_LINK([#include <stdlib.h>
425 #include <iconv.h>],
426         [iconv_t cd = iconv_open("","");
427          iconv(cd,NULL,NULL,NULL,NULL);
428          iconv_close(cd);],
429         am_cv_lib_iconv=yes
430         am_cv_func_iconv=yes)
431       LIBS="$am_save_LIBS"
432     fi
433   ])
434   if test "$am_cv_func_iconv" = yes; then
435     AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
436     AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
437       AC_TRY_COMPILE([
438 #include <stdlib.h>
439 #include <iconv.h>
440 extern
441 #ifdef __cplusplus
442 "C"
443 #endif
444 #if defined(__STDC__) || defined(__cplusplus)
445 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
446 #else
447 size_t iconv();
448 #endif
449         ],
450         [],
451         wx_cv_func_iconv_const="no",
452         wx_cv_func_iconv_const="yes"
453       )
454     )
455
456     iconv_const=
457     if test "x$wx_cv_func_iconv_const" = "xyes"; then
458         iconv_const="const"
459     fi
460
461     AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
462       [Define as const if the declaration of iconv() needs const.])
463   fi
464   LIBICONV=
465   if test "$am_cv_lib_iconv" = yes; then
466     LIBICONV="-liconv"
467   fi
468   AC_SUBST(LIBICONV)
469 ])
470
471 dnl ---------------------------------------------------------------------------
472 dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
473 dnl ---------------------------------------------------------------------------
474
475 dnl WX_SYS_LARGEFILE_TEST
476 dnl
477 dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
478 dnl     arithmetic properly but this failed miserably with gcc under Linux
479 dnl     whereas the system still supports 64 bit files, so now simply check
480 dnl     that off_t is big enough
481 define(WX_SYS_LARGEFILE_TEST,
482 [typedef struct {
483     unsigned int field: sizeof(off_t) == 8;
484 } wxlf;
485 ])
486
487
488 dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
489 define(WX_SYS_LARGEFILE_MACRO_VALUE,
490 [
491     AC_CACHE_CHECK([for $1 value needed for large files], [$3],
492         [
493           AC_TRY_COMPILE([#define $1 $2
494                           #include <sys/types.h>],
495                          WX_SYS_LARGEFILE_TEST,
496                          [$3=$2],
497                          [$3=no])
498         ]
499     )
500
501     if test "$$3" != no; then
502         wx_largefile=yes
503         AC_DEFINE_UNQUOTED([$1], [$$3])
504     fi
505 ])
506
507
508 dnl AC_SYS_LARGEFILE
509 dnl ----------------
510 dnl By default, many hosts won't let programs access large files;
511 dnl one must use special compiler options to get large-file access to work.
512 dnl For more details about this brain damage please see:
513 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
514 AC_DEFUN([AC_SYS_LARGEFILE],
515 [AC_ARG_ENABLE(largefile,
516                [  --disable-largefile     omit support for large files])
517 if test "$enable_largefile" != no; then
518     dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
519     dnl _LARGE_FILES -- for AIX
520     wx_largefile=no
521     WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
522     if test "x$wx_largefile" != "xyes"; then
523         WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
524     fi
525
526     AC_MSG_CHECKING(if large file support is available)
527     if test "x$wx_largefile" = "xyes"; then
528         AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
529     fi
530     AC_MSG_RESULT($wx_largefile)
531 fi
532 ])
533
534 # Configure paths for GTK+
535 # Owen Taylor     1997-2001
536
537 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
538 dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, 
539 dnl pass to pkg-config
540 dnl
541 AC_DEFUN(AM_PATH_GTK_2_0,
542 [dnl 
543 dnl Get the cflags and libraries from pkg-config
544 dnl
545 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       do not try to compile and run a test GTK+ program],
546                     , enable_gtktest=yes)
547
548   pkg_config_args=gtk+-2.0
549   for module in . $4
550   do
551       case "$module" in
552          gthread) 
553              pkg_config_args="$pkg_config_args gthread-2.0"
554          ;;
555       esac
556   done
557
558   no_gtk=""
559
560   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
561
562   if test x$PKG_CONFIG != xno ; then
563     if pkg-config --atleast-pkgconfig-version 0.7 ; then
564       :
565     else
566       echo *** pkg-config too old; version 0.7 or better required.
567       no_gtk=yes
568       PKG_CONFIG=no
569     fi
570   else
571     no_gtk=yes
572   fi
573
574   min_gtk_version=ifelse([$1], ,2.0.0,$1)
575   AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
576
577   if test x$PKG_CONFIG != xno ; then
578     ## don't try to run the test against uninstalled libtool libs
579     if $PKG_CONFIG --uninstalled $pkg_config_args; then
580           echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
581           enable_gtktest=no
582     fi
583
584     if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
585           :
586     else
587           no_gtk=yes
588     fi
589   fi
590
591   if test x"$no_gtk" = x ; then
592     GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
593     GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
594     gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
595            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
596     gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
597            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
598     gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
599            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
600     if test "x$enable_gtktest" = "xyes" ; then
601       ac_save_CFLAGS="$CFLAGS"
602       ac_save_LIBS="$LIBS"
603       CFLAGS="$CFLAGS $GTK_CFLAGS"
604       LIBS="$GTK_LIBS $LIBS"
605 dnl
606 dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
607 dnl checks the results of pkg-config to some extent)
608 dnl
609       rm -f conf.gtktest
610       AC_TRY_RUN([
611 #include <gtk/gtk.h>
612 #include <stdio.h>
613 #include <stdlib.h>
614
615 int 
616 main ()
617 {
618   int major, minor, micro;
619   char *tmp_version;
620
621   system ("touch conf.gtktest");
622
623   /* HP/UX 9 (%@#!) writes to sscanf strings */
624   tmp_version = g_strdup("$min_gtk_version");
625   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
626      printf("%s, bad version string\n", "$min_gtk_version");
627      exit(1);
628    }
629
630   if ((gtk_major_version != $gtk_config_major_version) ||
631       (gtk_minor_version != $gtk_config_minor_version) ||
632       (gtk_micro_version != $gtk_config_micro_version))
633     {
634       printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
635              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
636              gtk_major_version, gtk_minor_version, gtk_micro_version);
637       printf ("*** was found! If pkg-config was correct, then it is best\n");
638       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
639       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
640       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
641       printf("*** required on your system.\n");
642       printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
643       printf("*** to point to the correct configuration files\n");
644     } 
645   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
646            (gtk_minor_version != GTK_MINOR_VERSION) ||
647            (gtk_micro_version != GTK_MICRO_VERSION))
648     {
649       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
650              GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
651       printf("*** library (version %d.%d.%d)\n",
652              gtk_major_version, gtk_minor_version, gtk_micro_version);
653     }
654   else
655     {
656       if ((gtk_major_version > major) ||
657         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
658         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
659       {
660         return 0;
661        }
662      else
663       {
664         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
665                gtk_major_version, gtk_minor_version, gtk_micro_version);
666         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
667                major, minor, micro);
668         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
669         printf("***\n");
670         printf("*** If you have already installed a sufficiently new version, this error\n");
671         printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
672         printf("*** being found. The easiest way to fix this is to remove the old version\n");
673         printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
674         printf("*** correct copy of pkg-config. (In this case, you will have to\n");
675         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
676         printf("*** so that the correct libraries are found at run-time))\n");
677       }
678     }
679   return 1;
680 }
681 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
682        CFLAGS="$ac_save_CFLAGS"
683        LIBS="$ac_save_LIBS"
684      fi
685   fi
686   if test "x$no_gtk" = x ; then
687      AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
688      ifelse([$2], , :, [$2])     
689   else
690      AC_MSG_RESULT(no)
691      if test "$PKG_CONFIG" = "no" ; then
692        echo "*** A new enough version of pkg-config was not found."
693        echo "*** See http://pkgconfig.sourceforge.net"
694      else
695        if test -f conf.gtktest ; then
696         :
697        else
698           echo "*** Could not run GTK+ test program, checking why..."
699           CFLAGS="$CFLAGS $GTK_CFLAGS"
700           LIBS="$LIBS $GTK_LIBS"
701           AC_TRY_LINK([
702 #include <gtk/gtk.h>
703 #include <stdio.h>
704 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
705         [ echo "*** The test program compiled, but did not run. This usually means"
706           echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
707           echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
708           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
709           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
710           echo "*** is required on your system"
711           echo "***"
712           echo "*** If you have an old version installed, it is best to remove it, although"
713           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
714         [ echo "*** The test program failed to compile or link. See the file config.log for the"
715           echo "*** exact error that occured. This usually means GTK+ was incorrectly installed"
716           echo "*** or that you have moved GTK+ since it was installed. In the latter case, you"
717           echo "*** may want to edit the pkg-config script: $PKG_CONFIG" ])
718           CFLAGS="$ac_save_CFLAGS"
719           LIBS="$ac_save_LIBS"
720        fi
721      fi
722      GTK_CFLAGS=""
723      GTK_LIBS=""
724      ifelse([$3], , :, [$3])
725   fi
726   AC_SUBST(GTK_CFLAGS)
727   AC_SUBST(GTK_LIBS)
728   rm -f conf.gtktest
729 ])
730
731 # Configure paths for GTK+
732 # Owen Taylor     97-11-3
733
734 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
735 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
736 dnl
737 AC_DEFUN(AM_PATH_GTK,
738 [dnl 
739 dnl Get the cflags and libraries from the gtk-config script
740 dnl
741 AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
742             gtk_config_prefix="$withval", gtk_config_prefix="")
743 AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
744             gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
745 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
746                     , enable_gtktest=yes)
747
748   for module in . $4
749   do
750       case "$module" in
751          gthread) 
752              gtk_config_args="$gtk_config_args gthread"
753          ;;
754       esac
755   done
756
757   if test x$gtk_config_exec_prefix != x ; then
758      gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
759      if test x${GTK_CONFIG+set} != xset ; then
760         GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
761      fi
762   fi
763   if test x$gtk_config_prefix != x ; then
764      gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
765      if test x${GTK_CONFIG+set} != xset ; then
766         GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
767      fi
768   fi
769
770   AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
771   min_gtk_version=ifelse([$1], ,0.99.7,$1)
772   AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
773   no_gtk=""
774   if test "$GTK_CONFIG" = "no" ; then
775     no_gtk=yes
776   else
777     GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
778     GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
779     gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
780            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
781     gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
782            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
783     gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
784            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
785     if test "x$enable_gtktest" = "xyes" ; then
786       ac_save_CFLAGS="$CFLAGS"
787       ac_save_LIBS="$LIBS"
788       CFLAGS="$CFLAGS $GTK_CFLAGS"
789       LIBS="$GTK_LIBS $LIBS"
790 dnl
791 dnl Now check if the installed GTK is sufficiently new. (Also sanity
792 dnl checks the results of gtk-config to some extent
793 dnl
794       rm -f conf.gtktest
795       AC_TRY_RUN([
796 #include <gtk/gtk.h>
797 #include <stdio.h>
798 #include <stdlib.h>
799
800 int 
801 main ()
802 {
803   int major, minor, micro;
804   char *tmp_version;
805
806   system ("touch conf.gtktest");
807
808   /* HP/UX 9 (%@#!) writes to sscanf strings */
809   tmp_version = g_strdup("$min_gtk_version");
810   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
811      printf("%s, bad version string\n", "$min_gtk_version");
812      exit(1);
813    }
814
815   if ((gtk_major_version != $gtk_config_major_version) ||
816       (gtk_minor_version != $gtk_config_minor_version) ||
817       (gtk_micro_version != $gtk_config_micro_version))
818     {
819       printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
820              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
821              gtk_major_version, gtk_minor_version, gtk_micro_version);
822       printf ("*** was found! If gtk-config was correct, then it is best\n");
823       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
824       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
825       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
826       printf("*** required on your system.\n");
827       printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
828       printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
829       printf("*** before re-running configure\n");
830     } 
831 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
832   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
833            (gtk_minor_version != GTK_MINOR_VERSION) ||
834            (gtk_micro_version != GTK_MICRO_VERSION))
835     {
836       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
837              GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
838       printf("*** library (version %d.%d.%d)\n",
839              gtk_major_version, gtk_minor_version, gtk_micro_version);
840     }
841 #endif /* defined (GTK_MAJOR_VERSION) ... */
842   else
843     {
844       if ((gtk_major_version > major) ||
845         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
846         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
847       {
848         return 0;
849        }
850      else
851       {
852         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
853                gtk_major_version, gtk_minor_version, gtk_micro_version);
854         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
855                major, minor, micro);
856         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
857         printf("***\n");
858         printf("*** If you have already installed a sufficiently new version, this error\n");
859         printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
860         printf("*** being found. The easiest way to fix this is to remove the old version\n");
861         printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
862         printf("*** correct copy of gtk-config. (In this case, you will have to\n");
863         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
864         printf("*** so that the correct libraries are found at run-time))\n");
865       }
866     }
867   return 1;
868 }
869 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
870        CFLAGS="$ac_save_CFLAGS"
871        LIBS="$ac_save_LIBS"
872      fi
873   fi
874   if test "x$no_gtk" = x ; then
875      AC_MSG_RESULT(yes)
876      ifelse([$2], , :, [$2])     
877   else
878      AC_MSG_RESULT(no)
879      if test "$GTK_CONFIG" = "no" ; then
880        echo "*** The gtk-config script installed by GTK could not be found"
881        echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
882        echo "*** your path, or set the GTK_CONFIG environment variable to the"
883        echo "*** full path to gtk-config."
884      else
885        if test -f conf.gtktest ; then
886         :
887        else
888           echo "*** Could not run GTK test program, checking why..."
889           CFLAGS="$CFLAGS $GTK_CFLAGS"
890           LIBS="$LIBS $GTK_LIBS"
891           AC_TRY_LINK([
892 #include <gtk/gtk.h>
893 #include <stdio.h>
894 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
895         [ echo "*** The test program compiled, but did not run. This usually means"
896           echo "*** that the run-time linker is not finding GTK or finding the wrong"
897           echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
898           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
899           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
900           echo "*** is required on your system"
901           echo "***"
902           echo "*** If you have an old version installed, it is best to remove it, although"
903           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
904           echo "***"
905           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
906           echo "*** came with the system with the command"
907           echo "***"
908           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
909         [ echo "*** The test program failed to compile or link. See the file config.log for the"
910           echo "*** exact error that occured. This usually means GTK was incorrectly installed"
911           echo "*** or that you have moved GTK since it was installed. In the latter case, you"
912           echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
913           CFLAGS="$ac_save_CFLAGS"
914           LIBS="$ac_save_LIBS"
915        fi
916      fi
917      GTK_CFLAGS=""
918      GTK_LIBS=""
919      ifelse([$3], , :, [$3])
920   fi
921   AC_SUBST(GTK_CFLAGS)
922   AC_SUBST(GTK_LIBS)
923   rm -f conf.gtktest
924 ])
925