b1e6e51e20bfd24b61418ad0a3422ab5a53edcf1
[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 ])
639 ##   -*- autoconf -*-
640
641
642 dnl    This file is part of the KDE libraries/packages
643 dnl    Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu)
644 dnl              (C) 1997,98,99 Stephan Kulow (coolo@kde.org)
645 dnl              (C) 2002 g10 Code GmbH
646 dnl              Modified for PINENTRY by Marcus Brinkmann.
647 dnl
648 dnl    This file is free software; you can redistribute it and/or
649 dnl    modify it under the terms of the GNU Library General Public
650 dnl    License as published by the Free Software Foundation; either
651 dnl    version 2 of the License, or (at your option) any later version.
652
653 dnl    This library is distributed in the hope that it will be useful,
654 dnl    but WITHOUT ANY WARRANTY; without even the implied warranty of
655 dnl    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
656 dnl    Library General Public License for more details.
657
658 dnl    You should have received a copy of the GNU Library General Public License
659 dnl    along with this library; see the file COPYING.LIB.  If not, write to
660 dnl    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
661 dnl    Boston, MA 02111-1307, USA.
662
663 dnl ------------------------------------------------------------------------
664 dnl Find a file (or one of more files in a list of dirs)
665 dnl ------------------------------------------------------------------------
666 dnl
667 AC_DEFUN(QT_FIND_FILE,
668 [
669 $3=NO
670 for i in $2;
671 do
672   for j in $1;
673   do
674     echo "configure: __oline__: $i/$j" >&AS_MESSAGE_LOG_FD
675     if test -r "$i/$j"; then
676       echo "taking that" >&AS_MESSAGE_LOG_FD
677       $3=$i
678       break 2
679     fi
680   done
681 done
682 ])
683
684 dnl ------------------------------------------------------------------------
685 dnl Find the meta object compiler in the PATH,
686 dnl in $QTDIR/bin, and some more usual places
687 dnl ------------------------------------------------------------------------
688 dnl
689 AC_DEFUN(QT_PATH_MOC,
690 [
691    qt_bindirs=""
692    for dir in $qt_dirs; do
693       qt_bindirs="$qt_bindirs:$dir/bin:$dir/src/moc"
694    done
695    qt_bindirs="$qt_bindirs:/usr/bin:/usr/X11R6/bin:/usr/local/qt/bin"
696    if test ! "$ac_qt_bindir" = "NO"; then
697       qt_bindirs="$ac_qt_bindir:$qt_bindirs"
698    fi
699
700    AC_PATH_PROG(MOC, moc, no, [$qt_bindirs])
701    if test "$MOC" = no; then
702     AC_MSG_ERROR([No Qt meta object compiler (moc) found!
703 Please check whether you installed Qt correctly.
704 You need to have a running moc binary.
705 configure tried to run $ac_cv_path_moc and the test didn't
706 succeed. If configure shouldn't have tried this one, set
707 the environment variable MOC to the right one before running
708 configure.
709 ])
710    fi
711    AC_SUBST(MOC)
712 ])
713
714
715 dnl ------------------------------------------------------------------------
716 dnl Find the header files and libraries for the X Window System.
717 dnl Extended the macro AC_PATH_XTRA.
718 dnl ------------------------------------------------------------------------
719 dnl
720 AC_DEFUN(QT_PATH_X,
721 [
722 AC_ARG_ENABLE(
723   embedded,
724   [  --enable-embedded       link to Qt-embedded, don't use X],
725   qt_use_emb=$enableval,
726   qt_use_emb=no
727 )
728
729 AC_ARG_ENABLE(
730   palmtop,
731   [  --enable-palmtop       link to Qt-embedded, don't use X, link to the Qt Palmtop Environment],
732   qt_use_emb_palm=$enableval,
733   qt_use_emb_palm=no
734 )
735
736 if test "$qt_use_emb" = "no"; then
737   AC_PATH_X
738   AC_PATH_XTRA
739   if test "$no_x" = yes; then
740     AC_MSG_ERROR([Can't find X. Please check your installation and add the correct paths!])
741   fi
742   QT_CXXFLAGS="$X_CFLAGS"
743   QT_LDFLAGS="$X_LIBS"
744   QT_LIBS="$X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS"
745   QTE_NORTTI=""
746 else
747   dnl We're using QT Embedded
748   QT_CXXFLAGS="-fno-rtti -DQWS"
749   QT_LDFLAGS="-DQWS"
750   QT_LIBS=""
751   QTE_NORTTI="-fno-rtti -DQWS"
752 fi
753 AC_SUBST(QT_CXXFLAGS)
754 AC_SUBST(QT_LDFLAGS)
755 AC_SUBST(QT_LIBS)
756 AC_SUBST(QTE_NORTTI)
757 ])
758
759 AC_DEFUN(QT_PRINT_PROGRAM,
760 [
761 AC_REQUIRE([QT_CHECK_VERSION])
762 cat > conftest.$ac_ext <<EOF
763 #include "confdefs.h"
764 #include <qglobal.h>
765 #include <qapplication.h>
766 EOF
767 if test "$qt_ver" = "2"; then
768 cat >> conftest.$ac_ext <<EOF
769 #include <qevent.h>
770 #include <qstring.h>
771 #include <qstyle.h>
772 EOF
773
774 if test $qt_subver -gt 0; then
775 cat >> conftest.$ac_ext <<EOF
776 #include <qiconview.h>
777 EOF
778 fi
779 fi
780
781 if test "$qt_ver" = "3"; then
782 cat >> conftest.$ac_ext <<EOF
783 #include <qcursor.h>
784 #include <qstylefactory.h>
785 #include <private/qucomextra_p.h>
786 EOF
787 fi
788
789 echo "#if ! ($qt_verstring)" >> conftest.$ac_ext
790 cat >> conftest.$ac_ext <<EOF
791 #error 1
792 #endif
793
794 int main() {
795 EOF
796 if test "$qt_ver" = "2"; then
797 cat >> conftest.$ac_ext <<EOF
798     QStringList *t = new QStringList();
799     Q_UNUSED(t);
800 EOF
801 if test $qt_subver -gt 0; then
802 cat >> conftest.$ac_ext <<EOF
803     QIconView iv(0);
804     iv.setWordWrapIconText(false);
805     QString s;
806     s.setLatin1("Elvis is alive", 14);
807 EOF
808 fi
809 fi
810 if test "$qt_ver" = "3"; then
811 cat >> conftest.$ac_ext <<EOF
812     (void)QStyleFactory::create(QString::null);
813     QCursor c(Qt::WhatsThisCursor);
814 EOF
815 fi
816 cat >> conftest.$ac_ext <<EOF
817     return 0;
818 }
819 EOF
820 ])
821
822
823 AC_DEFUN(QT_CHECK_VERSION,
824 [
825 if test -z "$1"; then
826   qt_ver=3
827   qt_subver=1
828 else
829   qt_subver=`echo "$1" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'`
830   # following is the check if subversion isnĀ“t found in passed argument
831   if test "$qt_subver" = "$1"; then
832     qt_subver=1
833   fi
834   qt_ver=`echo "$1" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
835   if test "$qt_ver" = "1"; then
836     qt_subver=42
837   fi
838 fi
839
840 if test -z "$2"; then
841   if test "$qt_ver" = "2"; then
842     if test $qt_subver -gt 0; then
843       qt_minversion=">= Qt 2.2.2"
844     else
845       qt_minversion=">= Qt 2.0.2"
846     fi
847   fi
848   if test "$qt_ver" = "3"; then
849     qt_minversion=">= Qt 3.0.1"
850   fi
851   if test "$qt_ver" = "1"; then
852     qt_minversion=">= 1.42 and < 2.0"
853   fi
854 else
855    qt_minversion=$2
856 fi
857
858 if test -z "$3"; then
859    if test $qt_ver = 3; then
860      qt_verstring="QT_VERSION >= 301"
861    fi
862    if test $qt_ver = 2; then
863      if test $qt_subver -gt 0; then
864        qt_verstring="QT_VERSION >= 222"
865      else
866        qt_verstring="QT_VERSION >= 200"
867      fi
868    fi
869    if test $qt_ver = 1; then
870     qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
871    fi
872 else
873    qt_verstring=$3
874 fi
875
876 if test $qt_ver = 3; then
877   qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt"
878 fi
879 if test $qt_ver = 2; then
880   qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
881 fi
882 if test $qt_ver = 1; then
883   qt_dirs="$QTDIR /usr/lib/qt"
884 fi
885 ])
886
887
888 AC_DEFUN(QT_CHECK_DIRECT,
889 [
890 AC_REQUIRE([QT_CHECK_VERSION])
891 AC_MSG_CHECKING([if Qt compiles without flags])
892 AC_CACHE_VAL(kde_cv_qt_direct,
893 [
894 AC_LANG_PUSH(C++)
895 ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
896 ac_LIBRARY_PATH="$LIBRARY_PATH"
897 ac_cxxflags_safe="$CXXFLAGS"
898 ac_ldflags_safe="$LDFLAGS"
899 ac_libs_safe="$LIBS"
900
901 CXXFLAGS="$CXXFLAGS -I$qt_includes"
902 LDFLAGS="$LDFLAGS $QT_LDFLAGS"
903 LIBS="$QT_LIBS"
904 LD_LIBRARY_PATH=
905 export LD_LIBRARY_PATH
906 LIBRARY_PATH=
907 export LIBRARY_PATH
908
909 QT_PRINT_PROGRAM
910
911 if AC_TRY_EVAL(ac_link) && test -s conftest; then
912   kde_cv_qt_direct="yes"
913 else
914   kde_cv_qt_direct="no"
915   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
916   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
917 fi
918
919 rm -f conftest*
920 CXXFLAGS="$ac_cxxflags_safe"
921 LDFLAGS="$ac_ldflags_safe"
922 LIBS="$ac_libs_safe"
923
924 LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
925 export LD_LIBRARY_PATH
926 LIBRARY_PATH="$ac_LIBRARY_PATH"
927 export LIBRARY_PATH
928 AC_LANG_POP(C++)
929 ])
930
931 if test "$kde_cv_qt_direct" = "yes"; then
932   AC_MSG_RESULT(yes)
933   $1
934 else
935   AC_MSG_RESULT(no)
936   $2
937 fi
938 ])
939
940 dnl ------------------------------------------------------------------------
941 dnl Try to find the Qt headers and libraries.
942 dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
943 dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
944 dnl ------------------------------------------------------------------------
945 dnl
946 AC_DEFUN(QT_PATH_1_3,
947 [
948 AC_REQUIRE([QT_PATH_X])
949 AC_REQUIRE([QT_CHECK_VERSION])
950
951 dnl ------------------------------------------------------------------------
952 dnl Add configure flag to enable linking to MT version of Qt library.
953 dnl ------------------------------------------------------------------------
954
955 AC_ARG_ENABLE(
956   mt,
957   [  --disable-mt            link to non-threaded Qt (deprecated)],
958   qt_use_mt=$enableval,
959   [
960     if test $qt_ver = 3; then
961       qt_use_mt=yes
962     else
963       qt_use_mt=no
964     fi
965   ]
966 )
967
968 USING_QT_MT=""
969
970 dnl ------------------------------------------------------------------------
971 dnl If we not get --disable-qt-mt then adjust some vars for the host.
972 dnl ------------------------------------------------------------------------
973
974 QT_MT_LDFLAGS=
975 QT_MT_LIBS=
976 if test "x$qt_use_mt" = "xyes"; then
977   QT_CHECK_THREADING
978   if test "x$qt_use_threading" = "xyes"; then
979     QT_CXXFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $QT_CXXFLAGS"
980     QT_MT_LDFLAGS="$USE_THREADS"
981     QT_MT_LIBS="$LIBPTHREAD"
982   else
983     qt_use_mt=no
984   fi
985 fi
986 AC_SUBST(QT_MT_LDFLAGS)
987 AC_SUBST(QT_MT_LIBS)
988
989 dnl ------------------------------------------------------------------------
990 dnl If we haven't been told how to link to Qt, we work it out for ourselves.
991 dnl ------------------------------------------------------------------------
992 if test -z "$LIBQT_GLOB"; then
993   if test "x$qt_use_emb" = "xyes"; then
994     LIBQT_GLOB="libqte.*"
995   else
996     LIBQT_GLOB="libqt.*"
997   fi
998 fi
999
1000 if test -z "$LIBQT"; then
1001 dnl ------------------------------------------------------------
1002 dnl If we got --enable-embedded then adjust the Qt library name.
1003 dnl ------------------------------------------------------------
1004   if test "x$qt_use_emb" = "xyes"; then
1005     qtlib="qte"
1006   else
1007     qtlib="qt"
1008   fi
1009 fi
1010
1011 if test -z "$LIBQPE"; then
1012 dnl ------------------------------------------------------------
1013 dnl If we got --enable-palmtop then add -lqpe to the link line
1014 dnl ------------------------------------------------------------
1015   if test "x$qt_use_emb" = "xyes"; then
1016     if test "x$qt_use_emb_palm" = "xyes"; then
1017       LIB_QPE="-lqpe"
1018     else
1019       LIB_QPE=""
1020     fi
1021   else
1022     LIB_QPE=""
1023   fi
1024 fi
1025
1026 dnl ------------------------------------------------------------------------
1027 dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
1028 dnl ------------------------------------------------------------------------
1029
1030 if test "x$qt_use_mt" = "xyes"; then
1031   if test -z "$LIBQT"; then
1032     LIBQT="-l$qtlib-mt"
1033   else
1034     LIBQT="$qtlib-mt"
1035   fi
1036   LIBQT_GLOB="lib$qtlib-mt.*"
1037   USING_QT_MT="using -mt"
1038 else
1039   LIBQT="-l$qtlib"
1040 fi
1041
1042 AC_MSG_CHECKING([for Qt])
1043
1044 QT_LIBS="$LIBQT $QT_LIBS"
1045 test -z "$QT_MT_LIBS" || QT_LIBS="$QT_LIBS $QT_MT_LIBS"
1046
1047 ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
1048 qt_libraries=""
1049 qt_includes=""
1050 AC_ARG_WITH(qt-dir,
1051     [  --with-qt-dir=DIR       where the root of Qt is installed ],
1052     [  ac_qt_includes="$withval"/include
1053        ac_qt_libraries="$withval"/lib
1054        ac_qt_bindir="$withval"/bin
1055     ])
1056
1057 AC_ARG_WITH(qt-includes,
1058     [  --with-qt-includes=DIR  where the Qt includes are. ],
1059     [
1060        ac_qt_includes="$withval"
1061     ])
1062
1063 kde_qt_libs_given=no
1064
1065 AC_ARG_WITH(qt-libraries,
1066     [  --with-qt-libraries=DIR where the Qt library is installed.],
1067     [  ac_qt_libraries="$withval"
1068        kde_qt_libs_given=yes
1069     ])
1070
1071 AC_CACHE_VAL(ac_cv_have_qt,
1072 [#try to guess Qt locations
1073
1074 qt_incdirs=""
1075 for dir in $qt_dirs; do
1076    qt_incdirs="$qt_incdirs $dir/include $dir"
1077 done
1078 qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 $x_includes"
1079 if test ! "$ac_qt_includes" = "NO"; then
1080    qt_incdirs="$ac_qt_includes $qt_incdirs"
1081 fi
1082
1083 if test "$qt_ver" != "1"; then
1084   kde_qt_header=qstyle.h
1085 else
1086   kde_qt_header=qglobal.h
1087 fi
1088
1089 QT_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
1090 ac_qt_includes="$qt_incdir"
1091
1092 qt_libdirs=""
1093 for dir in $qt_dirs; do
1094    qt_libdirs="$qt_libdirs $dir/lib $dir"
1095 done
1096 qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries"
1097 if test ! "$ac_qt_libraries" = "NO"; then
1098   qt_libdir=$ac_qt_libraries
1099 else
1100   qt_libdirs="$ac_qt_libraries $qt_libdirs"
1101   # if the Qt was given, the chance is too big that libqt.* doesn't exist
1102   qt_libdir=NONE
1103   for dir in $qt_libdirs; do
1104     try="ls -1 $dir/${LIBQT_GLOB}"
1105     if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AS_MESSAGE_LOG_FD; fi
1106   done
1107 fi
1108
1109 ac_qt_libraries="$qt_libdir"
1110
1111 AC_LANG_PUSH(C++)
1112
1113 ac_cxxflags_safe="$CXXFLAGS"
1114 ac_ldflags_safe="$LDFLAGS"
1115 ac_libs_safe="$LIBS"
1116
1117 CXXFLAGS="$CXXFLAGS -I$qt_incdir $QT_CXXFLAGS"
1118 LDFLAGS="$LDFLAGS -L$qt_libdir $QT_LDFLAGS"
1119 LIBS="$LIBS $QT_LIBS"
1120
1121 QT_PRINT_PROGRAM
1122
1123 if AC_TRY_EVAL(ac_link) && test -s conftest; then
1124   rm -f conftest*
1125 else
1126   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1127   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1128   ac_qt_libraries="NO"
1129 fi
1130 rm -f conftest*
1131 CXXFLAGS="$ac_cxxflags_safe"
1132 LDFLAGS="$ac_ldflags_safe"
1133 LIBS="$ac_libs_safe"
1134
1135 AC_LANG_POP(C++)
1136 if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
1137   ac_cv_have_qt="have_qt=no"
1138   ac_qt_notfound=""
1139   missing_qt_mt=""
1140   if test "$ac_qt_includes" = NO; then
1141     if test "$ac_qt_libraries" = NO; then
1142       ac_qt_notfound="(headers and libraries)";
1143     else
1144       ac_qt_notfound="(headers)";
1145     fi
1146   else
1147     if test "x$qt_use_mt" = "xyes"; then
1148        missing_qt_mt="
1149 Make sure that you have compiled Qt with thread support!"
1150        ac_qt_notfound="(library $qtlib-mt)";
1151     else
1152        ac_qt_notfound="(library $qtlib)";
1153     fi
1154   fi
1155
1156   AC_MSG_ERROR([Qt ($qt_minversion) $ac_qt_notfound not found. Please check your installation!
1157 For more details about this problem, look at the end of config.log.$missing_qt_mt])
1158 else
1159   have_qt="yes"
1160 fi
1161 ])
1162
1163 eval "$ac_cv_have_qt"
1164
1165 if test "$have_qt" != yes; then
1166   AC_MSG_RESULT([$have_qt]);
1167 else
1168   ac_cv_have_qt="have_qt=yes \
1169     ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
1170   AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT])
1171
1172   qt_libraries="$ac_qt_libraries"
1173   qt_includes="$ac_qt_includes"
1174 fi
1175
1176 if test ! "$kde_qt_libs_given" = "yes"; then
1177 QT_CHECK_DIRECT(qt_libraries= ,[])
1178 fi
1179
1180 AC_SUBST(qt_libraries)
1181 AC_SUBST(qt_includes)
1182
1183 if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
1184  QT_INCLUDES=""
1185 else
1186  QT_INCLUDES="-I$qt_includes"
1187 fi
1188
1189 if test "$qt_libraries" != "$x_libraries" && test -n "$qt_libraries"; then
1190  QT_LDFLAGS="$QT_LDFLAGS -L$qt_libraries"
1191 fi
1192 test -z "$QT_MT_LDFLAGS" || QT_LDFLAGS="$QT_LDFLAGS $QT_MT_LDFLAGS"
1193
1194 AC_SUBST(QT_INCLUDES)
1195 QT_PATH_MOC
1196
1197
1198 AC_SUBST(LIB_QPE)
1199 ])
1200
1201 AC_DEFUN(QT_PATH,
1202 [
1203 QT_PATH_1_3
1204 QT_CHECK_RPATH
1205 ])
1206
1207
1208 AC_DEFUN(QT_CHECK_COMPILER_FLAG,
1209 [
1210 AC_MSG_CHECKING(whether $CXX supports -$1)
1211 kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
1212 AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
1213 [
1214   AC_LANG_PUSH(C++)
1215   save_CXXFLAGS="$CXXFLAGS"
1216   CXXFLAGS="$CXXFLAGS -$1"
1217   AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
1218   CXXFLAGS="$save_CXXFLAGS"
1219   AC_LANG_POP(C++)
1220 ])
1221 if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
1222  AC_MSG_RESULT(yes)
1223  :
1224  $2
1225 else
1226  AC_MSG_RESULT(no)
1227  :
1228  $3
1229 fi
1230 ])
1231
1232 dnl QT_REMOVE_FORBIDDEN removes forbidden arguments from variables
1233 dnl use: QT_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
1234 dnl it's all white-space separated
1235 AC_DEFUN(QT_REMOVE_FORBIDDEN,
1236 [ __val=$$1
1237   __forbid=" $2 "
1238   if test -n "$__val"; then
1239     __new=""
1240     ac_save_IFS=$IFS
1241     IFS="       "
1242     for i in $__val; do
1243       case "$__forbid" in
1244         *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
1245         *) # Careful to not add spaces, where there were none, because otherwise
1246            # libtool gets confused, if we change e.g. CXX
1247            if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
1248       esac
1249     done
1250     IFS=$ac_save_IFS
1251     $1=$__new
1252   fi
1253 ])
1254
1255 dnl QT_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
1256 AC_DEFUN(QT_VALIDIFY_CXXFLAGS,
1257 [dnl
1258 if test "x$qt_use_emb" != "xyes"; then
1259  QT_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
1260  QT_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
1261 else
1262  QT_REMOVE_FORBIDDEN(CXX, [-rpath])
1263  QT_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
1264 fi
1265 ])
1266
1267 AC_DEFUN(QT_CHECK_COMPILERS,
1268 [
1269   AC_PROG_CXX
1270
1271   QT_CHECK_COMPILER_FLAG(fexceptions,[QT_CXXFLAGS="$QT_CXXFLAGS -fexceptions"])
1272
1273   case "$host" in
1274       *-*-irix*)  test "$GXX" = yes && QT_CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $QT_CXXFLAGS" ;;
1275       *-*-sysv4.2uw*) QT_CXXFLAGS="-D_UNIXWARE $QT_CXXFLAGS";;
1276       *-*-sysv5uw7*) QT_CXXFLAGS="-D_UNIXWARE7 $QT_CXXFLAGS";;
1277       *-*-solaris*) 
1278         if test "$GXX" = yes; then
1279           libstdcpp=`$CXX -print-file-name=libstdc++.so`
1280           if test ! -f $libstdcpp; then
1281              AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with the Qt pinentry. Please recompile gcc with --enable-shared to receive a libstdc++.so])
1282           fi
1283         fi
1284         ;;
1285   esac
1286
1287   QT_VALIDIFY_CXXFLAGS
1288
1289   AC_PROG_CXXCPP
1290 ])
1291
1292 AC_DEFUN(QT_CHECK_RPATH,
1293 [
1294 AC_MSG_CHECKING(for rpath)
1295 AC_ARG_ENABLE(rpath,
1296       [  --disable-rpath         do not use the rpath feature of ld],
1297       USE_RPATH=$enableval, USE_RPATH=yes)
1298
1299 if test -z "$QT_RPATH" && test "$USE_RPATH" = "yes"; then
1300
1301   QT_RPATH=""
1302   if test -n "$qt_libraries"; then
1303     QT_RPATH="$QT_RPATH -Wl,--rpath -Wl,\$(qt_libraries)"
1304   fi
1305   dnl $x_libraries is set to /usr/lib in case
1306   if test -n "$X_LIBS"; then
1307     QT_RPATH="$QT_RPATH -Wl,--rpath -Wl,\$(x_libraries)"
1308   fi
1309 fi
1310 AC_SUBST(x_libraries)
1311 AC_SUBST(QT_RPATH)
1312 AC_MSG_RESULT($USE_RPATH)
1313 ])
1314
1315
1316 AC_DEFUN(QT_CHECK_LIBPTHREAD,
1317 [
1318 AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] )
1319 AC_SUBST(LIBPTHREAD)
1320 ])
1321
1322 AC_DEFUN(QT_CHECK_PTHREAD_OPTION,
1323 [
1324     AC_ARG_ENABLE(kernel-threads, [  --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.],
1325         kde_use_kernthreads=$enableval, kde_use_kernthreads=no)
1326
1327     if test "$kde_use_kernthreads" = "yes"; then
1328       ac_save_CXXFLAGS="$CXXFLAGS"
1329       ac_save_CFLAGS="$CXXFLAGS"
1330       CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS"
1331       CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS"
1332       AC_CHECK_HEADERS(pthread/linuxthreads/pthread.h)
1333       CXXFLAGS="$ac_save_CXXFLAGS"
1334       CFLAGS="$ac_save_CFLAGS"
1335       if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then
1336         kde_use_kernthreads=no
1337       else
1338         dnl Add proper -I and -l statements
1339         AC_CHECK_LIB(lthread, pthread_join, [LIBPTHREAD="-llthread -llgcc_r"]) dnl for FreeBSD
1340         if test "x$LIBPTHREAD" = "x"; then
1341           kde_use_kernthreads=no
1342         else
1343           USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
1344         fi
1345       fi
1346     else 
1347       USE_THREADS=""
1348       if test -z "$LIBPTHREAD"; then
1349         QT_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-pthread"] )
1350       fi
1351     fi
1352
1353     case $host_os in
1354         solaris*)
1355                 QT_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
1356                 QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
1357                 ;;
1358         freebsd*)
1359                 QT_CXXFLAGS="$QT_CXXFLAGS -D_THREAD_SAFE"
1360                 ;;
1361         aix*)
1362                 QT_CXXFLAGS="$QT_CXXFLAGS -D_THREAD_SAFE"
1363                 LIBPTHREAD="$LIBPTHREAD -lc_r"
1364                 ;;
1365         linux*) QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT"
1366                 if test "$CXX" = "KCC"; then
1367                   QT_CXXFLAGS="$QT_CXXFLAGS --thread_safe"
1368                 fi
1369                 ;;
1370         *)
1371                 ;;
1372     esac
1373     AC_SUBST(USE_THREADS)
1374     AC_SUBST(LIBPTHREAD)
1375 ])
1376
1377 AC_DEFUN(QT_CHECK_THREADING,
1378 [
1379   AC_REQUIRE([QT_CHECK_LIBPTHREAD])
1380   AC_REQUIRE([QT_CHECK_PTHREAD_OPTION])
1381   dnl default is yes if libpthread is found and no if no libpthread is available
1382   if test -z "$LIBPTHREAD"; then
1383     if test -z "$USE_THREADS"; then
1384       kde_check_threading_default=no
1385     else
1386       kde_check_threading_default=yes
1387     fi
1388   else
1389     kde_check_threading_default=yes
1390   fi
1391   AC_ARG_ENABLE(threading, [  --disable-threading     disables threading even if libpthread found ],
1392    qt_use_threading=$enableval, qt_use_threading=$kde_check_threading_default)
1393   if test "x$qt_use_threading" = "xyes"; then
1394     AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)])
1395   fi
1396 ])