oops, typo in the large file support just checked in
[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 a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
161 dnl ---------------------------------------------------------------------------
162
163 AC_DEFUN([WX_C_BIGENDIAN],
164 [AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian,
165 [ac_cv_c_bigendian=unknown
166 # See if sys/param.h defines the BYTE_ORDER macro.
167 AC_TRY_COMPILE([#include <sys/types.h>
168 #include <sys/param.h>], [
169 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
170  bogus endian macros
171 #endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
172 AC_TRY_COMPILE([#include <sys/types.h>
173 #include <sys/param.h>], [
174 #if BYTE_ORDER != BIG_ENDIAN
175  not big endian
176 #endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
177 if test $ac_cv_c_bigendian = unknown; then
178 AC_TRY_RUN([main () {
179   /* Are we little or big endian?  From Harbison&Steele.  */
180   union
181   {
182     long l;
183     char c[sizeof (long)];
184   } u;
185   u.l = 1;
186   exit (u.c[sizeof (long) - 1] == 1);
187 }], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown])
188 fi])
189 if test $ac_cv_c_bigendian = unknown; then
190   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])
191 fi
192 if test $ac_cv_c_bigendian = yes; then
193   AC_DEFINE(WORDS_BIGENDIAN)
194 fi
195 ])
196
197 dnl ---------------------------------------------------------------------------
198 dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
199 dnl ---------------------------------------------------------------------------
200
201 AC_DEFUN([WX_ARG_CACHE_INIT],
202         [
203           wx_arg_cache_file="configarg.cache"
204           echo "loading argument cache $wx_arg_cache_file"
205           rm -f ${wx_arg_cache_file}.tmp
206           touch ${wx_arg_cache_file}.tmp
207           touch ${wx_arg_cache_file}
208         ])
209
210 AC_DEFUN([WX_ARG_CACHE_FLUSH],
211         [
212           echo "saving argument cache $wx_arg_cache_file"
213           mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
214         ])
215
216 dnl this macro checks for a three-valued command line --with argument:
217 dnl   possible arguments are 'yes', 'no', 'sys', or 'builtin'
218 dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
219 AC_DEFUN([WX_ARG_SYS_WITH],
220         [
221           AC_MSG_CHECKING([for --with-$1])
222           no_cache=0
223           AC_ARG_WITH($1, [$2],
224                       [
225                         if test "$withval" = yes; then
226                           ac_cv_use_$1='$3=yes'
227                         elif test "$withval" = no; then
228                           ac_cv_use_$1='$3=no'
229                         elif test "$withval" = sys; then
230                           ac_cv_use_$1='$3=sys'
231                         elif test "$withval" = builtin; then
232                           ac_cv_use_$1='$3=builtin'
233                         else
234                           AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
235                         fi
236                       ],
237                       [
238                         LINE=`grep "$3" ${wx_arg_cache_file}`
239                         if test "x$LINE" != x ; then
240                           eval "DEFAULT_$LINE"
241                         else
242                           no_cache=1
243                         fi
244
245                         ac_cv_use_$1='$3='$DEFAULT_$3
246                       ])
247
248           eval "$ac_cv_use_$1"
249           if test "$no_cache" != 1; then
250             echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
251           fi
252
253           if test "$$3" = yes; then
254             AC_MSG_RESULT(yes)
255           elif test "$$3" = no; then
256             AC_MSG_RESULT(no)
257           elif test "$$3" = sys; then
258             AC_MSG_RESULT([system version])
259           elif test "$$3" = builtin; then
260             AC_MSG_RESULT([builtin version])
261           else
262             AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin])
263           fi
264         ])
265
266 dnl this macro checks for a command line argument and caches the result
267 dnl usage: WX_ARG_WITH(option, helpmessage, variable-name)
268 AC_DEFUN([WX_ARG_WITH],
269         [
270           AC_MSG_CHECKING([for --with-$1])
271           no_cache=0
272           AC_ARG_WITH($1, [$2],
273                       [
274                         if test "$withval" = yes; then
275                           ac_cv_use_$1='$3=yes'
276                         else
277                           ac_cv_use_$1='$3=no'
278                         fi
279                       ],
280                       [
281                         LINE=`grep "$3" ${wx_arg_cache_file}`
282                         if test "x$LINE" != x ; then
283                           eval "DEFAULT_$LINE"
284                         else
285                           no_cache=1
286                         fi
287
288                         ac_cv_use_$1='$3='$DEFAULT_$3
289                       ])
290
291           eval "$ac_cv_use_$1"
292           if test "$no_cache" != 1; then
293             echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
294           fi
295
296           if test "$$3" = yes; then
297             AC_MSG_RESULT(yes)
298           else
299             AC_MSG_RESULT(no)
300           fi
301         ])
302
303 dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
304 dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name)
305 AC_DEFUN([WX_ARG_ENABLE],
306         [
307           AC_MSG_CHECKING([for --enable-$1])
308           no_cache=0
309           AC_ARG_ENABLE($1, [$2],
310                         [
311                           if test "$enableval" = yes; then
312                             ac_cv_use_$1='$3=yes'
313                           else
314                             ac_cv_use_$1='$3=no'
315                           fi
316                         ],
317                         [
318                           LINE=`grep "$3" ${wx_arg_cache_file}`
319                           if test "x$LINE" != x ; then
320                             eval "DEFAULT_$LINE"
321                           else
322                             no_cache=1
323                           fi
324
325                           ac_cv_use_$1='$3='$DEFAULT_$3
326                         ])
327
328           eval "$ac_cv_use_$1"
329           if test "$no_cache" != 1; then
330             echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
331           fi
332
333           if test "$$3" = yes; then
334             AC_MSG_RESULT(yes)
335           else
336             AC_MSG_RESULT(no)
337           fi
338         ])
339
340
341
342 dnl ===========================================================================
343 dnl "3rd party" macros included here because they are not widely available
344 dnl ===========================================================================
345
346 dnl ---------------------------------------------------------------------------
347 dnl test for availability of iconv()
348 dnl ---------------------------------------------------------------------------
349
350 dnl From Bruno Haible.
351
352 AC_DEFUN([AM_ICONV],
353 [
354   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
355   dnl those with the standalone portable GNU libiconv installed).
356
357   AC_ARG_WITH([libiconv-prefix],
358 [  --with-libiconv-prefix=DIR  search for libiconv in DIR/include and DIR/lib], [
359     for dir in `echo "$withval" | tr : ' '`; do
360       if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
361       if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
362     done
363    ])
364
365   AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
366     am_cv_func_iconv="no, consider installing GNU libiconv"
367     am_cv_lib_iconv=no
368     AC_TRY_LINK([#include <stdlib.h>
369 #include <iconv.h>],
370       [iconv_t cd = iconv_open("","");
371        iconv(cd,NULL,NULL,NULL,NULL);
372        iconv_close(cd);],
373       am_cv_func_iconv=yes)
374     if test "$am_cv_func_iconv" != yes; then
375       am_save_LIBS="$LIBS"
376       LIBS="$LIBS -liconv"
377       AC_TRY_LINK([#include <stdlib.h>
378 #include <iconv.h>],
379         [iconv_t cd = iconv_open("","");
380          iconv(cd,NULL,NULL,NULL,NULL);
381          iconv_close(cd);],
382         am_cv_lib_iconv=yes
383         am_cv_func_iconv=yes)
384       LIBS="$am_save_LIBS"
385     fi
386   ])
387   if test "$am_cv_func_iconv" = yes; then
388     AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
389     AC_CACHE_CHECK([if iconv needs const], wx_cv_func_iconv_const,
390       AC_TRY_COMPILE([
391 #include <stdlib.h>
392 #include <iconv.h>
393 extern
394 #ifdef __cplusplus
395 "C"
396 #endif
397 #if defined(__STDC__) || defined(__cplusplus)
398 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
399 #else
400 size_t iconv();
401 #endif
402         ],
403         [],
404         wx_cv_func_iconv_const="no",
405         wx_cv_func_iconv_const="yes"
406       )
407     )
408
409     iconv_const=
410     if test "x$wx_cv_func_iconv_const" = "xyes"; then
411         iconv_const="const"
412     fi
413
414     AC_DEFINE_UNQUOTED(ICONV_CONST, $iconv_const,
415       [Define as const if the declaration of iconv() needs const.])
416   fi
417   LIBICONV=
418   if test "$am_cv_lib_iconv" = yes; then
419     LIBICONV="-liconv"
420   fi
421   AC_SUBST(LIBICONV)
422 ])
423
424 dnl ---------------------------------------------------------------------------
425 dnl AC_SYS_LARGEFILE (partly based on the code from autoconf 2.5x)
426 dnl ---------------------------------------------------------------------------
427
428 dnl WX_SYS_LARGEFILE_TEST
429 dnl
430 dnl NB: original autoconf test was checking if compiler supported 6 bit off_t
431 dnl     arithmetic properly but this failed miserably with gcc under Linux
432 dnl     whereas the system still supports 64 bit files, so now simply check
433 dnl     that off_t is big enough
434 define(WX_SYS_LARGEFILE_TEST,
435 [typedef struct {
436     unsigned int field: sizeof(off_t) == 8;
437 } wxlf;
438 ])
439
440
441 dnl WX_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR)
442 define(WX_SYS_LARGEFILE_MACRO_VALUE,
443 [
444     AC_CACHE_CHECK([for $1 value needed for large files], [$3],
445         [
446           AC_TRY_COMPILE([#define $1 $2
447                           #include <sys/types.h>],
448                          WX_SYS_LARGEFILE_TEST,
449                          [$3=$2],
450                          [$3=no])
451         ]
452     )
453
454     if test "$$3" != no; then
455         wx_largefile=yes
456         AC_DEFINE_UNQUOTED([$1], [$$3])
457     fi
458 ])
459
460
461 dnl AC_SYS_LARGEFILE
462 dnl ----------------
463 dnl By default, many hosts won't let programs access large files;
464 dnl one must use special compiler options to get large-file access to work.
465 dnl For more details about this brain damage please see:
466 dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html
467 AC_DEFUN([AC_SYS_LARGEFILE],
468 [AC_ARG_ENABLE(largefile,
469                [  --disable-largefile     omit support for large files])
470 if test "$enable_largefile" != no; then
471     dnl _FILE_OFFSET_BITS==64 is needed for Linux, Solaris, ...
472     dnl _LARGE_FILES -- for AIX
473     wx_largefile=no
474     WX_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, ac_cv_sys_file_offset_bits)
475     if test "x$wx_largefile" != "xyes"; then
476         WX_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, ac_cv_sys_large_files)
477     fi
478
479     AC_MSG_CHECKING(if large file support is available)
480     if test "x$wx_largefile" = "xyes"; then
481         AC_DEFINE(HAVE_LARGEFILE_SUPPORT)
482     fi
483     AC_MSG_RESULT($wx_largefile)
484 fi
485 ])
486
487 # Configure paths for GTK+
488 # Owen Taylor     1997-2001
489
490 dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
491 dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES, 
492 dnl pass to pkg-config
493 dnl
494 AC_DEFUN(AM_PATH_GTK_2_0,
495 [dnl 
496 dnl Get the cflags and libraries from pkg-config
497 dnl
498 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       do not try to compile and run a test GTK+ program],
499                     , enable_gtktest=yes)
500
501   pkg_config_args=gtk+-2.0
502   for module in . $4
503   do
504       case "$module" in
505          gthread) 
506              pkg_config_args="$pkg_config_args gthread-2.0"
507          ;;
508       esac
509   done
510
511   no_gtk=""
512
513   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
514
515   if test x$PKG_CONFIG != xno ; then
516     if pkg-config --atleast-pkgconfig-version 0.7 ; then
517       :
518     else
519       echo *** pkg-config too old; version 0.7 or better required.
520       no_gtk=yes
521       PKG_CONFIG=no
522     fi
523   else
524     no_gtk=yes
525   fi
526
527   min_gtk_version=ifelse([$1], ,2.0.0,$1)
528   AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
529
530   if test x$PKG_CONFIG != xno ; then
531     ## don't try to run the test against uninstalled libtool libs
532     if $PKG_CONFIG --uninstalled $pkg_config_args; then
533           echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
534           enable_gtktest=no
535     fi
536
537     if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
538           :
539     else
540           no_gtk=yes
541     fi
542   fi
543
544   if test x"$no_gtk" = x ; then
545     GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
546     GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
547     gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
548            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
549     gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
550            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
551     gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
552            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
553     if test "x$enable_gtktest" = "xyes" ; then
554       ac_save_CFLAGS="$CFLAGS"
555       ac_save_LIBS="$LIBS"
556       CFLAGS="$CFLAGS $GTK_CFLAGS"
557       LIBS="$GTK_LIBS $LIBS"
558 dnl
559 dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
560 dnl checks the results of pkg-config to some extent)
561 dnl
562       rm -f conf.gtktest
563       AC_TRY_RUN([
564 #include <gtk/gtk.h>
565 #include <stdio.h>
566 #include <stdlib.h>
567
568 int 
569 main ()
570 {
571   int major, minor, micro;
572   char *tmp_version;
573
574   system ("touch conf.gtktest");
575
576   /* HP/UX 9 (%@#!) writes to sscanf strings */
577   tmp_version = g_strdup("$min_gtk_version");
578   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
579      printf("%s, bad version string\n", "$min_gtk_version");
580      exit(1);
581    }
582
583   if ((gtk_major_version != $gtk_config_major_version) ||
584       (gtk_minor_version != $gtk_config_minor_version) ||
585       (gtk_micro_version != $gtk_config_micro_version))
586     {
587       printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
588              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
589              gtk_major_version, gtk_minor_version, gtk_micro_version);
590       printf ("*** was found! If pkg-config was correct, then it is best\n");
591       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
592       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
593       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
594       printf("*** required on your system.\n");
595       printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
596       printf("*** to point to the correct configuration files\n");
597     } 
598   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
599            (gtk_minor_version != GTK_MINOR_VERSION) ||
600            (gtk_micro_version != GTK_MICRO_VERSION))
601     {
602       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
603              GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
604       printf("*** library (version %d.%d.%d)\n",
605              gtk_major_version, gtk_minor_version, gtk_micro_version);
606     }
607   else
608     {
609       if ((gtk_major_version > major) ||
610         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
611         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
612       {
613         return 0;
614        }
615      else
616       {
617         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
618                gtk_major_version, gtk_minor_version, gtk_micro_version);
619         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
620                major, minor, micro);
621         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
622         printf("***\n");
623         printf("*** If you have already installed a sufficiently new version, this error\n");
624         printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
625         printf("*** being found. The easiest way to fix this is to remove the old version\n");
626         printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
627         printf("*** correct copy of pkg-config. (In this case, you will have to\n");
628         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
629         printf("*** so that the correct libraries are found at run-time))\n");
630       }
631     }
632   return 1;
633 }
634 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
635        CFLAGS="$ac_save_CFLAGS"
636        LIBS="$ac_save_LIBS"
637      fi
638   fi
639   if test "x$no_gtk" = x ; then
640      AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
641      ifelse([$2], , :, [$2])     
642   else
643      AC_MSG_RESULT(no)
644      if test "$PKG_CONFIG" = "no" ; then
645        echo "*** A new enough version of pkg-config was not found."
646        echo "*** See http://pkgconfig.sourceforge.net"
647      else
648        if test -f conf.gtktest ; then
649         :
650        else
651           echo "*** Could not run GTK+ test program, checking why..."
652           CFLAGS="$CFLAGS $GTK_CFLAGS"
653           LIBS="$LIBS $GTK_LIBS"
654           AC_TRY_LINK([
655 #include <gtk/gtk.h>
656 #include <stdio.h>
657 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
658         [ echo "*** The test program compiled, but did not run. This usually means"
659           echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
660           echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
661           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
662           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
663           echo "*** is required on your system"
664           echo "***"
665           echo "*** If you have an old version installed, it is best to remove it, although"
666           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
667         [ echo "*** The test program failed to compile or link. See the file config.log for the"
668           echo "*** exact error that occured. This usually means GTK+ was incorrectly installed"
669           echo "*** or that you have moved GTK+ since it was installed. In the latter case, you"
670           echo "*** may want to edit the pkg-config script: $PKG_CONFIG" ])
671           CFLAGS="$ac_save_CFLAGS"
672           LIBS="$ac_save_LIBS"
673        fi
674      fi
675      GTK_CFLAGS=""
676      GTK_LIBS=""
677      ifelse([$3], , :, [$3])
678   fi
679   AC_SUBST(GTK_CFLAGS)
680   AC_SUBST(GTK_LIBS)
681   rm -f conf.gtktest
682 ])
683
684 # Configure paths for GTK+
685 # Owen Taylor     97-11-3
686
687 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
688 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
689 dnl
690 AC_DEFUN(AM_PATH_GTK,
691 [dnl 
692 dnl Get the cflags and libraries from the gtk-config script
693 dnl
694 AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
695             gtk_config_prefix="$withval", gtk_config_prefix="")
696 AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
697             gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
698 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
699                     , enable_gtktest=yes)
700
701   for module in . $4
702   do
703       case "$module" in
704          gthread) 
705              gtk_config_args="$gtk_config_args gthread"
706          ;;
707       esac
708   done
709
710   if test x$gtk_config_exec_prefix != x ; then
711      gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
712      if test x${GTK_CONFIG+set} != xset ; then
713         GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
714      fi
715   fi
716   if test x$gtk_config_prefix != x ; then
717      gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
718      if test x${GTK_CONFIG+set} != xset ; then
719         GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
720      fi
721   fi
722
723   AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
724   min_gtk_version=ifelse([$1], ,0.99.7,$1)
725   AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
726   no_gtk=""
727   if test "$GTK_CONFIG" = "no" ; then
728     no_gtk=yes
729   else
730     GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
731     GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
732     gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
733            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
734     gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
735            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
736     gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
737            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
738     if test "x$enable_gtktest" = "xyes" ; then
739       ac_save_CFLAGS="$CFLAGS"
740       ac_save_LIBS="$LIBS"
741       CFLAGS="$CFLAGS $GTK_CFLAGS"
742       LIBS="$GTK_LIBS $LIBS"
743 dnl
744 dnl Now check if the installed GTK is sufficiently new. (Also sanity
745 dnl checks the results of gtk-config to some extent
746 dnl
747       rm -f conf.gtktest
748       AC_TRY_RUN([
749 #include <gtk/gtk.h>
750 #include <stdio.h>
751 #include <stdlib.h>
752
753 int 
754 main ()
755 {
756   int major, minor, micro;
757   char *tmp_version;
758
759   system ("touch conf.gtktest");
760
761   /* HP/UX 9 (%@#!) writes to sscanf strings */
762   tmp_version = g_strdup("$min_gtk_version");
763   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
764      printf("%s, bad version string\n", "$min_gtk_version");
765      exit(1);
766    }
767
768   if ((gtk_major_version != $gtk_config_major_version) ||
769       (gtk_minor_version != $gtk_config_minor_version) ||
770       (gtk_micro_version != $gtk_config_micro_version))
771     {
772       printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
773              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
774              gtk_major_version, gtk_minor_version, gtk_micro_version);
775       printf ("*** was found! If gtk-config was correct, then it is best\n");
776       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
777       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
778       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
779       printf("*** required on your system.\n");
780       printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
781       printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
782       printf("*** before re-running configure\n");
783     } 
784 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
785   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
786            (gtk_minor_version != GTK_MINOR_VERSION) ||
787            (gtk_micro_version != GTK_MICRO_VERSION))
788     {
789       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
790              GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
791       printf("*** library (version %d.%d.%d)\n",
792              gtk_major_version, gtk_minor_version, gtk_micro_version);
793     }
794 #endif /* defined (GTK_MAJOR_VERSION) ... */
795   else
796     {
797       if ((gtk_major_version > major) ||
798         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
799         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
800       {
801         return 0;
802        }
803      else
804       {
805         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
806                gtk_major_version, gtk_minor_version, gtk_micro_version);
807         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
808                major, minor, micro);
809         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
810         printf("***\n");
811         printf("*** If you have already installed a sufficiently new version, this error\n");
812         printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
813         printf("*** being found. The easiest way to fix this is to remove the old version\n");
814         printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
815         printf("*** correct copy of gtk-config. (In this case, you will have to\n");
816         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
817         printf("*** so that the correct libraries are found at run-time))\n");
818       }
819     }
820   return 1;
821 }
822 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
823        CFLAGS="$ac_save_CFLAGS"
824        LIBS="$ac_save_LIBS"
825      fi
826   fi
827   if test "x$no_gtk" = x ; then
828      AC_MSG_RESULT(yes)
829      ifelse([$2], , :, [$2])     
830   else
831      AC_MSG_RESULT(no)
832      if test "$GTK_CONFIG" = "no" ; then
833        echo "*** The gtk-config script installed by GTK could not be found"
834        echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
835        echo "*** your path, or set the GTK_CONFIG environment variable to the"
836        echo "*** full path to gtk-config."
837      else
838        if test -f conf.gtktest ; then
839         :
840        else
841           echo "*** Could not run GTK test program, checking why..."
842           CFLAGS="$CFLAGS $GTK_CFLAGS"
843           LIBS="$LIBS $GTK_LIBS"
844           AC_TRY_LINK([
845 #include <gtk/gtk.h>
846 #include <stdio.h>
847 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
848         [ echo "*** The test program compiled, but did not run. This usually means"
849           echo "*** that the run-time linker is not finding GTK or finding the wrong"
850           echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
851           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
852           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
853           echo "*** is required on your system"
854           echo "***"
855           echo "*** If you have an old version installed, it is best to remove it, although"
856           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
857           echo "***"
858           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
859           echo "*** came with the system with the command"
860           echo "***"
861           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
862         [ echo "*** The test program failed to compile or link. See the file config.log for the"
863           echo "*** exact error that occured. This usually means GTK was incorrectly installed"
864           echo "*** or that you have moved GTK since it was installed. In the latter case, you"
865           echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
866           CFLAGS="$ac_save_CFLAGS"
867           LIBS="$ac_save_LIBS"
868        fi
869      fi
870      GTK_CFLAGS=""
871      GTK_LIBS=""
872      ifelse([$3], , :, [$3])
873   fi
874   AC_SUBST(GTK_CFLAGS)
875   AC_SUBST(GTK_LIBS)
876   rm -f conf.gtktest
877 ])
878