Update with more accurate information.
[pinentry.git] / acinclude.m4
1 dnl Autoconf macros used by PINENTRY
2 dnl
3 dnl Copyright (C) 2002 g10 Code GmbH
4 dnl
5 dnl IU_LIB_NCURSES, IU_LIB_CURSES and IU_LIB_TERMCAP are:
6 dnl Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
7 dnl Written by Miles Bader <miles@gnu.ai.mit.edu>
8 dnl
9 dnl This program is free software; you can redistribute it and/or modify
10 dnl it under the terms of the GNU General Public License as published by
11 dnl the Free Software Foundation; either version 2, or (at your option)
12 dnl any later version.
13 dnl
14 dnl This program is distributed in the hope that it will be useful,
15 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
16 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 dnl GNU General Public License for more details.
18 dnl
19 dnl You should have received a copy of the GNU General Public License
20 dnl along with this program; if not, write to the Free Software
21 dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
22 dnl
23
24 dnl IU_LIB_NCURSES -- check for, and configure, ncurses
25 dnl
26 dnl If libncurses is found to exist on this system and the --disable-ncurses
27 dnl flag wasn't specified, defines LIBNCURSES with the appropriate linker
28 dnl specification, and possibly defines NCURSES_INCLUDE with the appropriate
29 dnl -I flag to get access to ncurses include files.
30 dnl
31 AC_DEFUN([IU_LIB_NCURSES], [
32   AC_ARG_ENABLE(ncurses,    [  --disable-ncurses       don't prefer -lncurses over -lcurses],
33               , enable_ncurses=yes)
34   if test "$enable_ncurses" = yes; then
35     AC_CHECK_LIB(ncurses, initscr, LIBNCURSES="-lncurses")
36     if test "$LIBNCURSES"; then
37       # Use ncurses header files instead of the ordinary ones, if possible;
38       # is there a better way of doing this, that avoids looking in specific
39       # directories?
40       AC_ARG_WITH(ncurses-include-dir,
41 [  --with-ncurses-include-dir=DIR
42                           Set directory containing the include files for
43                           use with -lncurses, when it isn't installed as
44                           the default curses library.  If DIR is "none",
45                           then no special ncurses include files are used.
46   --without-ncurses-include-dir
47                           Equivalent to --with-ncurses-include-dir=none])dnl
48       if test "${with_ncurses_include_dir+set}" = set; then
49         AC_MSG_CHECKING(for ncurses include dir)
50         case "$with_ncurses_include_dir" in
51           no|none)
52             inetutils_cv_includedir_ncurses=none;;
53           *)
54             inetutils_cv_includedir_ncurses="$with_ncurses_include_dir";;
55         esac
56         AC_MSG_RESULT($inetutils_cv_includedir_ncurses)
57       else
58         AC_CACHE_CHECK(for ncurses include dir,
59                        inetutils_cv_includedir_ncurses,
60           for D in $includedir $prefix/include /local/include /usr/local/include /include /usr/include; do
61             if test -d $D/ncurses; then
62               inetutils_cv_includedir_ncurses="$D/ncurses"
63               break
64             fi
65             test "$inetutils_cv_includedir_ncurses" \
66               || inetutils_cv_includedir_ncurses=none
67           done)
68       fi
69       if test "$inetutils_cv_includedir_ncurses" = none; then
70         NCURSES_INCLUDE=""
71       else
72         NCURSES_INCLUDE="-I$inetutils_cv_includedir_ncurses"
73       fi
74     fi
75   fi
76   AC_SUBST(NCURSES_INCLUDE)
77   AC_SUBST(LIBNCURSES)])dnl
78
79 dnl IU_LIB_TERMCAP -- check for various termcap libraries
80 dnl
81 dnl Checks for various common libraries implementing the termcap interface,
82 dnl including ncurses (unless --disable ncurses is specified), curses (which
83 dnl does on some systems), termcap, and termlib.  If termcap is found, then
84 dnl LIBTERMCAP is defined with the appropriate linker specification.
85 dnl 
86 AC_DEFUN([IU_LIB_TERMCAP], [
87   AC_REQUIRE([IU_LIB_NCURSES])
88   if test "$LIBNCURSES"; then
89     LIBTERMCAP="$LIBNCURSES"
90   else
91     AC_CHECK_LIB(curses, tgetent, LIBTERMCAP=-lcurses)
92     if test "$ac_cv_lib_curses_tgetent" = no; then
93       AC_CHECK_LIB(termcap, tgetent, LIBTERMCAP=-ltermcap)
94     fi
95     if test "$ac_cv_lib_termcap_tgetent" = no; then
96       AC_CHECK_LIB(termlib, tgetent, LIBTERMCAP=-ltermlib)
97     fi
98   fi
99   AC_SUBST(LIBTERMCAP)])dnl
100
101 dnl IU_LIB_CURSES -- checke for curses, and associated libraries
102 dnl
103 dnl Checks for varions libraries implementing the curses interface, and if
104 dnl found, defines LIBCURSES to be the appropriate linker specification,
105 dnl *including* any termcap libraries if needed (some versions of curses
106 dnl don't need termcap).
107 dnl
108 AC_DEFUN([IU_LIB_CURSES], [
109   AC_REQUIRE([IU_LIB_TERMCAP])
110   AC_REQUIRE([IU_LIB_NCURSES])
111   if test "$LIBNCURSES"; then
112     LIBCURSES="$LIBNCURSES"     # ncurses doesn't require termcap
113   else
114     _IU_SAVE_LIBS="$LIBS"
115     LIBS="$LIBTERMCAP"
116     AC_CHECK_LIB(curses, initscr, LIBCURSES="-lcurses")
117     if test "$LIBCURSES" -a "$LIBTERMCAP" -a "$LIBCURSES" != "$LIBTERMCAP"; then
118       AC_CACHE_CHECK(whether curses needs $LIBTERMCAP,
119                      inetutils_cv_curses_needs_termcap,
120         LIBS="$LIBCURSES"
121         AC_TRY_LINK([#include <curses.h>], [initscr ();],
122                     [inetutils_cv_curses_needs_termcap=no],
123                     [inetutils_cv_curses_needs_termcap=yes]))
124       if test $inetutils_cv_curses_needs_termcap = yes; then
125           LIBCURSES="$LIBCURSES $LIBTERMCAP"
126       fi
127     fi
128     LIBS="$_IU_SAVE_LIBS"
129   fi
130   AC_SUBST(LIBCURSES)])dnl
131 dnl additional configure macros
132
133 dnl
134 dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
135 dnl Check whether a typedef exists and create a #define $2 if it exists
136 dnl
137 AC_DEFUN(GNUPG_CHECK_TYPEDEF,
138   [ AC_MSG_CHECKING(for $1 typedef)
139     AC_CACHE_VAL(gnupg_cv_typedef_$1,
140     [AC_TRY_COMPILE([#define _GNU_SOURCE 1
141     #include <stdlib.h>
142     #include <sys/types.h>], [
143     #undef $1
144     int a = sizeof($1);
145     ], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
146     AC_MSG_RESULT($gnupg_cv_typedef_$1)
147     if test "$gnupg_cv_typedef_$1" = yes; then
148         AC_DEFINE($2,1,[Defined if a `]$1[' is typedef'd])
149     fi
150   ])
151
152
153 ######################################################################
154 # Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock
155 # is not called from uid 0 (not tested whether uid 0 works)
156 # For DECs Tru64 we have also to check whether mlock is in librt
157 # mlock is there a macro using memlk()
158 ######################################################################
159 dnl GNUPG_CHECK_MLOCK
160 dnl
161 define(GNUPG_CHECK_MLOCK,
162   [ AC_CHECK_FUNCS(mlock)
163     if test "$ac_cv_func_mlock" = "no"; then
164         AC_CHECK_HEADERS(sys/mman.h)
165         if test "$ac_cv_header_sys_mman_h" = "yes"; then
166             # Add librt to LIBS:
167             AC_CHECK_LIB(rt, memlk)
168             AC_CACHE_CHECK([whether mlock is in sys/mman.h],
169                             gnupg_cv_mlock_is_in_sys_mman,
170                 [AC_TRY_LINK([
171                     #include <assert.h>
172                     #ifdef HAVE_SYS_MMAN_H
173                     #include <sys/mman.h>
174                     #endif
175                 ], [
176                     int i;
177
178                     /* glibc defines this for functions which it implements
179                      * to always fail with ENOSYS.  Some functions are actually
180                      * named something starting with __ and the normal name
181                      * is an alias.  */
182                     #if defined (__stub_mlock) || defined (__stub___mlock)
183                     choke me
184                     #else
185                     mlock(&i, 4);
186                     #endif
187                     ; return 0;
188                 ],
189                 gnupg_cv_mlock_is_in_sys_mman=yes,
190                 gnupg_cv_mlock_is_in_sys_mman=no)])
191             if test "$gnupg_cv_mlock_is_in_sys_mman" = "yes"; then
192                 AC_DEFINE(HAVE_MLOCK,1,
193                           [Defined if the system supports an mlock() call])
194             fi
195         fi
196     fi
197     if test "$ac_cv_func_mlock" = "yes"; then
198         AC_MSG_CHECKING(whether mlock is broken)
199           AC_CACHE_VAL(gnupg_cv_have_broken_mlock,
200              AC_TRY_RUN([
201                 #include <stdlib.h>
202                 #include <unistd.h>
203                 #include <errno.h>
204                 #include <sys/mman.h>
205                 #include <sys/types.h>
206                 #include <fcntl.h>
207
208                 int main()
209                 {
210                     char *pool;
211                     int err;
212                     long int pgsize = getpagesize();
213
214                     pool = malloc( 4096 + pgsize );
215                     if( !pool )
216                         return 2;
217                     pool += (pgsize - ((long int)pool % pgsize));
218
219                     err = mlock( pool, 4096 );
220                     if( !err || errno == EPERM )
221                         return 0; /* okay */
222
223                     return 1;  /* hmmm */
224                 }
225
226             ],
227             gnupg_cv_have_broken_mlock="no",
228             gnupg_cv_have_broken_mlock="yes",
229             gnupg_cv_have_broken_mlock="assume-no"
230            )
231          )
232          if test "$gnupg_cv_have_broken_mlock" = "yes"; then
233              AC_DEFINE(HAVE_BROKEN_MLOCK,1,
234                        [Defined if the mlock() call does not work])
235              AC_MSG_RESULT(yes)
236              AC_CHECK_FUNCS(plock)
237          else
238             if test "$gnupg_cv_have_broken_mlock" = "no"; then
239                 AC_MSG_RESULT(no)
240             else
241                 AC_MSG_RESULT(assuming no)
242             fi
243          fi
244     fi
245   ])
246
247 # Configure paths for GLIB
248 # Owen Taylor     97-11-3
249
250 dnl AM_PATH_GLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
251 dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or 
252 dnl gthread is specified in MODULES, pass to glib-config
253 dnl
254 AC_DEFUN(AM_PATH_GLIB,
255 [dnl 
256 dnl Get the cflags and libraries from the glib-config script
257 dnl
258 AC_ARG_WITH(glib-prefix,[  --with-glib-prefix=PFX   Prefix where GLIB is installed (optional)],
259             glib_config_prefix="$withval", glib_config_prefix="")
260 AC_ARG_WITH(glib-exec-prefix,[  --with-glib-exec-prefix=PFX Exec prefix where GLIB is installed (optional)],
261             glib_config_exec_prefix="$withval", glib_config_exec_prefix="")
262 AC_ARG_ENABLE(glibtest, [  --disable-glibtest       Do not try to compile and run a test GLIB program],
263                     , enable_glibtest=yes)
264
265   if test x$glib_config_exec_prefix != x ; then
266      glib_config_args="$glib_config_args --exec-prefix=$glib_config_exec_prefix"
267      if test x${GLIB_CONFIG+set} != xset ; then
268         GLIB_CONFIG=$glib_config_exec_prefix/bin/glib-config
269      fi
270   fi
271   if test x$glib_config_prefix != x ; then
272      glib_config_args="$glib_config_args --prefix=$glib_config_prefix"
273      if test x${GLIB_CONFIG+set} != xset ; then
274         GLIB_CONFIG=$glib_config_prefix/bin/glib-config
275      fi
276   fi
277
278   for module in . $4
279   do
280       case "$module" in
281          gmodule) 
282              glib_config_args="$glib_config_args gmodule"
283          ;;
284          gthread) 
285              glib_config_args="$glib_config_args gthread"
286          ;;
287       esac
288   done
289
290   AC_PATH_PROG(GLIB_CONFIG, glib-config, no)
291   min_glib_version=ifelse([$1], ,0.99.7,$1)
292   AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
293   no_glib=""
294   if test "$GLIB_CONFIG" = "no" ; then
295     no_glib=yes
296   else
297     GLIB_CFLAGS=`$GLIB_CONFIG $glib_config_args --cflags`
298     GLIB_LIBS=`$GLIB_CONFIG $glib_config_args --libs`
299     glib_config_major_version=`$GLIB_CONFIG $glib_config_args --version | \
300            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
301     glib_config_minor_version=`$GLIB_CONFIG $glib_config_args --version | \
302            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
303     glib_config_micro_version=`$GLIB_CONFIG $glib_config_args --version | \
304            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
305     if test "x$enable_glibtest" = "xyes" ; then
306       ac_save_CFLAGS="$CFLAGS"
307       ac_save_LIBS="$LIBS"
308       CFLAGS="$CFLAGS $GLIB_CFLAGS"
309       LIBS="$GLIB_LIBS $LIBS"
310 dnl
311 dnl Now check if the installed GLIB is sufficiently new. (Also sanity
312 dnl checks the results of glib-config to some extent
313 dnl
314       rm -f conf.glibtest
315       AC_TRY_RUN([
316 #include <glib.h>
317 #include <stdio.h>
318 #include <stdlib.h>
319
320 int 
321 main ()
322 {
323   int major, minor, micro;
324   char *tmp_version;
325
326   system ("touch conf.glibtest");
327
328   /* HP/UX 9 (%@#!) writes to sscanf strings */
329   tmp_version = g_strdup("$min_glib_version");
330   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
331      printf("%s, bad version string\n", "$min_glib_version");
332      exit(1);
333    }
334
335   if ((glib_major_version != $glib_config_major_version) ||
336       (glib_minor_version != $glib_config_minor_version) ||
337       (glib_micro_version != $glib_config_micro_version))
338     {
339       printf("\n*** 'glib-config --version' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
340              $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
341              glib_major_version, glib_minor_version, glib_micro_version);
342       printf ("*** was found! If glib-config was correct, then it is best\n");
343       printf ("*** to remove the old version of GLIB. You may also be able to fix the error\n");
344       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
345       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
346       printf("*** required on your system.\n");
347       printf("*** If glib-config was wrong, set the environment variable GLIB_CONFIG\n");
348       printf("*** to point to the correct copy of glib-config, and remove the file config.cache\n");
349       printf("*** before re-running configure\n");
350     } 
351   else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
352            (glib_minor_version != GLIB_MINOR_VERSION) ||
353            (glib_micro_version != GLIB_MICRO_VERSION))
354     {
355       printf("*** GLIB header files (version %d.%d.%d) do not match\n",
356              GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
357       printf("*** library (version %d.%d.%d)\n",
358              glib_major_version, glib_minor_version, glib_micro_version);
359     }
360   else
361     {
362       if ((glib_major_version > major) ||
363         ((glib_major_version == major) && (glib_minor_version > minor)) ||
364         ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
365       {
366         return 0;
367        }
368      else
369       {
370         printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
371                glib_major_version, glib_minor_version, glib_micro_version);
372         printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
373                major, minor, micro);
374         printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
375         printf("***\n");
376         printf("*** If you have already installed a sufficiently new version, this error\n");
377         printf("*** probably means that the wrong copy of the glib-config shell script is\n");
378         printf("*** being found. The easiest way to fix this is to remove the old version\n");
379         printf("*** of GLIB, but you can also set the GLIB_CONFIG environment to point to the\n");
380         printf("*** correct copy of glib-config. (In this case, you will have to\n");
381         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
382         printf("*** so that the correct libraries are found at run-time))\n");
383       }
384     }
385   return 1;
386 }
387 ],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
388        CFLAGS="$ac_save_CFLAGS"
389        LIBS="$ac_save_LIBS"
390      fi
391   fi
392   if test "x$no_glib" = x ; then
393      AC_MSG_RESULT(yes)
394      ifelse([$2], , :, [$2])     
395   else
396      AC_MSG_RESULT(no)
397      if test "$GLIB_CONFIG" = "no" ; then
398        echo "*** The glib-config script installed by GLIB could not be found"
399        echo "*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in"
400        echo "*** your path, or set the GLIB_CONFIG environment variable to the"
401        echo "*** full path to glib-config."
402      else
403        if test -f conf.glibtest ; then
404         :
405        else
406           echo "*** Could not run GLIB test program, checking why..."
407           CFLAGS="$CFLAGS $GLIB_CFLAGS"
408           LIBS="$LIBS $GLIB_LIBS"
409           AC_TRY_LINK([
410 #include <glib.h>
411 #include <stdio.h>
412 ],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
413         [ echo "*** The test program compiled, but did not run. This usually means"
414           echo "*** that the run-time linker is not finding GLIB or finding the wrong"
415           echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
416           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
417           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
418           echo "*** is required on your system"
419           echo "***"
420           echo "*** If you have an old version installed, it is best to remove it, although"
421           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
422           echo "***"
423           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
424           echo "*** came with the system with the command"
425           echo "***"
426           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
427         [ echo "*** The test program failed to compile or link. See the file config.log for the"
428           echo "*** exact error that occured. This usually means GLIB was incorrectly installed"
429           echo "*** or that you have moved GLIB since it was installed. In the latter case, you"
430           echo "*** may want to edit the glib-config script: $GLIB_CONFIG" ])
431           CFLAGS="$ac_save_CFLAGS"
432           LIBS="$ac_save_LIBS"
433        fi
434      fi
435      GLIB_CFLAGS=""
436      GLIB_LIBS=""
437      ifelse([$3], , :, [$3])
438   fi
439   AC_SUBST(GLIB_CFLAGS)
440   AC_SUBST(GLIB_LIBS)
441   rm -f conf.glibtest
442 ])
443
444
445 # Configure paths for GTK+
446 # Owen Taylor     97-11-3
447
448 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
449 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
450 dnl
451 AC_DEFUN(AM_PATH_GTK,
452 [dnl 
453 dnl Get the cflags and libraries from the gtk-config script
454 dnl
455 AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
456             gtk_config_prefix="$withval", gtk_config_prefix="")
457 AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
458             gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
459 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
460                     , enable_gtktest=yes)
461
462   for module in . $4
463   do
464       case "$module" in
465          gthread) 
466              gtk_config_args="$gtk_config_args gthread"
467          ;;
468       esac
469   done
470
471   if test x$gtk_config_exec_prefix != x ; then
472      gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
473      if test x${GTK_CONFIG+set} != xset ; then
474         GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
475      fi
476   fi
477   if test x$gtk_config_prefix != x ; then
478      gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
479      if test x${GTK_CONFIG+set} != xset ; then
480         GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
481      fi
482   fi
483
484   AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
485   min_gtk_version=ifelse([$1], ,0.99.7,$1)
486   AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
487   no_gtk=""
488   if test "$GTK_CONFIG" = "no" ; then
489     no_gtk=yes
490   else
491     GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
492     GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
493     gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
494            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
495     gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
496            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
497     gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
498            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
499     if test "x$enable_gtktest" = "xyes" ; then
500       ac_save_CFLAGS="$CFLAGS"
501       ac_save_LIBS="$LIBS"
502       CFLAGS="$CFLAGS $GTK_CFLAGS"
503       LIBS="$GTK_LIBS $LIBS"
504 dnl
505 dnl Now check if the installed GTK is sufficiently new. (Also sanity
506 dnl checks the results of gtk-config to some extent
507 dnl
508       rm -f conf.gtktest
509       AC_TRY_RUN([
510 #include <gtk/gtk.h>
511 #include <stdio.h>
512 #include <stdlib.h>
513
514 int 
515 main ()
516 {
517   int major, minor, micro;
518   char *tmp_version;
519
520   system ("touch conf.gtktest");
521
522   /* HP/UX 9 (%@#!) writes to sscanf strings */
523   tmp_version = g_strdup("$min_gtk_version");
524   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
525      printf("%s, bad version string\n", "$min_gtk_version");
526      exit(1);
527    }
528
529   if ((gtk_major_version != $gtk_config_major_version) ||
530       (gtk_minor_version != $gtk_config_minor_version) ||
531       (gtk_micro_version != $gtk_config_micro_version))
532     {
533       printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
534              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
535              gtk_major_version, gtk_minor_version, gtk_micro_version);
536       printf ("*** was found! If gtk-config was correct, then it is best\n");
537       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
538       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
539       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
540       printf("*** required on your system.\n");
541       printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
542       printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
543       printf("*** before re-running configure\n");
544     } 
545 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
546   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
547            (gtk_minor_version != GTK_MINOR_VERSION) ||
548            (gtk_micro_version != GTK_MICRO_VERSION))
549     {
550       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
551              GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
552       printf("*** library (version %d.%d.%d)\n",
553              gtk_major_version, gtk_minor_version, gtk_micro_version);
554     }
555 #endif /* defined (GTK_MAJOR_VERSION) ... */
556   else
557     {
558       if ((gtk_major_version > major) ||
559         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
560         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
561       {
562         return 0;
563        }
564      else
565       {
566         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
567                gtk_major_version, gtk_minor_version, gtk_micro_version);
568         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
569                major, minor, micro);
570         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
571         printf("***\n");
572         printf("*** If you have already installed a sufficiently new version, this error\n");
573         printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
574         printf("*** being found. The easiest way to fix this is to remove the old version\n");
575         printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
576         printf("*** correct copy of gtk-config. (In this case, you will have to\n");
577         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
578         printf("*** so that the correct libraries are found at run-time))\n");
579       }
580     }
581   return 1;
582 }
583 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
584        CFLAGS="$ac_save_CFLAGS"
585        LIBS="$ac_save_LIBS"
586      fi
587   fi
588   if test "x$no_gtk" = x ; then
589      AC_MSG_RESULT(yes)
590      ifelse([$2], , :, [$2])     
591   else
592      AC_MSG_RESULT(no)
593      if test "$GTK_CONFIG" = "no" ; then
594        echo "*** The gtk-config script installed by GTK could not be found"
595        echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
596        echo "*** your path, or set the GTK_CONFIG environment variable to the"
597        echo "*** full path to gtk-config."
598      else
599        if test -f conf.gtktest ; then
600         :
601        else
602           echo "*** Could not run GTK test program, checking why..."
603           CFLAGS="$CFLAGS $GTK_CFLAGS"
604           LIBS="$LIBS $GTK_LIBS"
605           AC_TRY_LINK([
606 #include <gtk/gtk.h>
607 #include <stdio.h>
608 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
609         [ echo "*** The test program compiled, but did not run. This usually means"
610           echo "*** that the run-time linker is not finding GTK or finding the wrong"
611           echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
612           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
613           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
614           echo "*** is required on your system"
615           echo "***"
616           echo "*** If you have an old version installed, it is best to remove it, although"
617           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
618           echo "***"
619           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
620           echo "*** came with the system with the command"
621           echo "***"
622           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
623         [ echo "*** The test program failed to compile or link. See the file config.log for the"
624           echo "*** exact error that occured. This usually means GTK was incorrectly installed"
625           echo "*** or that you have moved GTK since it was installed. In the latter case, you"
626           echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
627           CFLAGS="$ac_save_CFLAGS"
628           LIBS="$ac_save_LIBS"
629        fi
630      fi
631      GTK_CFLAGS=""
632      GTK_LIBS=""
633      ifelse([$3], , :, [$3])
634   fi
635   AC_SUBST(GTK_CFLAGS)
636   AC_SUBST(GTK_LIBS)
637   rm -f conf.gtktest
638 ])