2002-04-06 Marcus Brinkmann <marcus@g10code.de>
[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(KDE_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(KDE_PATH_QT_MOC,
690 [
691    qt_bindirs=""
692    for dir in $kde_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 X-Windows. Extended the
717 dnl macro AC_PATH_X
718 dnl ------------------------------------------------------------------------
719 dnl
720 AC_DEFUN(KDE_PATH_X,
721 [
722 AC_ARG_ENABLE(
723   embedded,
724   [  --enable-embedded       link to Qt-embedded, don't use X],
725   kde_use_qt_emb=$enableval,
726   kde_use_qt_emb=no
727 )
728
729 AC_ARG_ENABLE(
730   palmtop,
731   [  --enable-palmtop       link to Qt-embedded, don't use X and link to the Qt Palmtop Environment],
732   kde_use_qt_emb_palm=$enableval,
733   kde_use_qt_emb_palm=no
734 )
735
736 if test "$kde_use_qt_emb" = "no"; then
737
738 AC_PATH_XTRA
739
740 if test "$no_x" = yes; then
741   AC_MSG_ERROR([Can't find X. Please check your installation and add the correct paths!])
742 fi
743
744 QTE_NORTTI=""
745 all_includes="$X_CFLAGS"
746 all_libraries="$X_LIBS"
747
748 else
749   dnl We're using QT Embedded
750   CXXFLAGS="$CXXFLAGS -fno-rtti -DQWS"
751   CFLAGS="$CFLAGS -DQWS"
752   LDFLAGS="$LDFLAGS -DQWS"
753   QTE_NORTTI="-fno-rtti -DQWS"
754 fi
755 AC_SUBST(QTE_NORTTI)
756
757 ])
758
759 AC_DEFUN(KDE_PRINT_QT_PROGRAM,
760 [
761 AC_REQUIRE([KDE_USE_QT])
762 cat > conftest.$ac_ext <<EOF
763 #include "confdefs.h"
764 #include <qglobal.h>
765 #include <qapplication.h>
766 EOF
767 if test "$kde_qtver" = "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 $kde_qtsubver -gt 0; then
775 cat >> conftest.$ac_ext <<EOF
776 #include <qiconview.h>
777 EOF
778 fi
779 fi
780
781 if test "$kde_qtver" = "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 ! ($kde_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 "$kde_qtver" = "2"; then
797 cat >> conftest.$ac_ext <<EOF
798     QStringList *t = new QStringList();
799     Q_UNUSED(t);
800 EOF
801 if test $kde_qtsubver -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 "$kde_qtver" = "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 AC_DEFUN(KDE_USE_QT,
823 [
824
825 if test -z "$1"; then
826   kde_qtver=3
827   kde_qtsubver=1
828 else
829   kde_qtsubver=`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 "$kde_qtsubver" = "$1"; then
832     kde_qtsubver=1
833   fi
834   kde_qtver=`echo "$1" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
835   if test "$kde_qtver" = "1"; then
836     kde_qtsubver=42
837   fi
838 fi
839
840 if test -z "$2"; then
841   if test "$kde_qtver" = "2"; then
842     if test $kde_qtsubver -gt 0; then
843       kde_qt_minversion=">= Qt 2.2.2"
844     else
845       kde_qt_minversion=">= Qt 2.0.2"
846     fi
847   fi
848   if test "$kde_qtver" = "3"; then
849     kde_qt_minversion=">= Qt 3.0.1"
850   fi
851   if test "$kde_qtver" = "1"; then
852     kde_qt_minversion=">= 1.42 and < 2.0"
853   fi
854 else
855    kde_qt_minversion=$2
856 fi
857
858 if test -z "$3"; then
859    if test $kde_qtver = 3; then
860      kde_qt_verstring="QT_VERSION >= 301"
861    fi
862    if test $kde_qtver = 2; then
863      if test $kde_qtsubver -gt 0; then
864        kde_qt_verstring="QT_VERSION >= 222"
865      else
866        kde_qt_verstring="QT_VERSION >= 200"
867      fi
868    fi
869    if test $kde_qtver = 1; then
870     kde_qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
871    fi
872 else
873    kde_qt_verstring=$3
874 fi
875
876 if test $kde_qtver = 3; then
877   kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt"
878 fi
879 if test $kde_qtver = 2; then
880    kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
881 fi
882 if test $kde_qtver = 1; then
883    kde_qt_dirs="$QTDIR /usr/lib/qt"
884 fi
885 ])
886
887 AC_DEFUN(KDE_CHECK_QT_DIRECT,
888 [
889 AC_REQUIRE([KDE_USE_QT])
890 AC_MSG_CHECKING([if Qt compiles without flags])
891 AC_CACHE_VAL(kde_cv_qt_direct,
892 [
893 AC_LANG_PUSH(C++)
894 ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
895 ac_LIBRARY_PATH="$LIBRARY_PATH"
896 ac_cxxflags_safe="$CXXFLAGS"
897 ac_ldflags_safe="$LDFLAGS"
898 ac_libs_safe="$LIBS"
899
900 CXXFLAGS="$CXXFLAGS -I$qt_includes"
901 if test "x$kde_use_qt_emb" != "xyes"; then
902 LDFLAGS="$LDFLAGS $X_LIBS"
903 LIBS="$LIBQT $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS"
904 else
905 LIBS="$LIBQT"
906 fi
907 LD_LIBRARY_PATH=
908 export LD_LIBRARY_PATH
909 LIBRARY_PATH=
910 export LIBRARY_PATH
911
912 KDE_PRINT_QT_PROGRAM
913
914 if AC_TRY_EVAL(ac_link) && test -s conftest; then
915   kde_cv_qt_direct="yes"
916 else
917   kde_cv_qt_direct="no"
918   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
919   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
920 fi
921
922 rm -f conftest*
923 CXXFLAGS="$ac_cxxflags_safe"
924 LDFLAGS="$ac_ldflags_safe"
925 LIBS="$ac_libs_safe"
926
927 LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
928 export LD_LIBRARY_PATH
929 LIBRARY_PATH="$ac_LIBRARY_PATH"
930 export LIBRARY_PATH
931 AC_LANG_POP(C++)
932 ])
933
934 if test "$kde_cv_qt_direct" = "yes"; then
935   AC_MSG_RESULT(yes)
936   $1
937 else
938   AC_MSG_RESULT(no)
939   $2
940 fi
941 ])
942
943 dnl ------------------------------------------------------------------------
944 dnl Try to find the Qt headers and libraries.
945 dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
946 dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
947 dnl ------------------------------------------------------------------------
948 dnl
949 AC_DEFUN(KDE_PATH_QT_1_3,
950 [
951 AC_REQUIRE([KDE_PATH_X])
952 AC_REQUIRE([KDE_USE_QT])
953
954 dnl ------------------------------------------------------------------------
955 dnl Add configure flag to enable linking to MT version of Qt library.
956 dnl ------------------------------------------------------------------------
957
958 AC_ARG_ENABLE(
959   mt,
960   [  --disable-mt            link to non-threaded Qt (deprecated)],
961   kde_use_qt_mt=$enableval,
962   [
963     if test $kde_qtver = 3; then
964       kde_use_qt_mt=yes
965     else
966       kde_use_qt_mt=no
967     fi
968   ]
969 )
970
971 USING_QT_MT=""
972
973 dnl ------------------------------------------------------------------------
974 dnl If we not get --disable-qt-mt then adjust some vars for the host.
975 dnl ------------------------------------------------------------------------
976
977 KDE_MT_LDFLAGS=
978 KDE_MT_LIBS=
979 if test "x$kde_use_qt_mt" = "xyes"; then
980   KDE_CHECK_THREADING
981   if test "x$kde_use_threading" = "xyes"; then
982     CXXFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CXXFLAGS"
983     KDE_MT_LDFLAGS="$USE_THREADS"
984     KDE_MT_LIBS="$LIBPTHREAD"
985   else
986     kde_use_qt_mt=no
987   fi
988 fi
989 AC_SUBST(KDE_MT_LDFLAGS)
990 AC_SUBST(KDE_MT_LIBS)
991
992 kde_qt_was_given=yes
993
994 dnl ------------------------------------------------------------------------
995 dnl If we haven't been told how to link to Qt, we work it out for ourselves.
996 dnl ------------------------------------------------------------------------
997 if test -z "$LIBQT_GLOB"; then
998   if test "x$kde_use_qt_emb" = "xyes"; then
999     LIBQT_GLOB="libqte.*"
1000   else
1001     LIBQT_GLOB="libqt.*"
1002   fi
1003 fi
1004
1005 if test -z "$LIBQT"; then
1006 dnl ------------------------------------------------------------
1007 dnl If we got --enable-embedded then adjust the Qt library name.
1008 dnl ------------------------------------------------------------
1009   if test "x$kde_use_qt_emb" = "xyes"; then
1010     qtlib="qte"
1011   else
1012     qtlib="qt"
1013   fi
1014
1015   kde_int_qt="-l$qtlib"
1016 else
1017   kde_int_qt="$LIBQT"
1018   kde_lib_qt_set=yes
1019 fi
1020
1021 if test -z "$LIBQPE"; then
1022 dnl ------------------------------------------------------------
1023 dnl If we got --enable-palmtop then add -lqpe to the link line
1024 dnl ------------------------------------------------------------
1025   if test "x$kde_use_qt_emb" = "xyes"; then
1026     if test "x$kde_use_qt_emb_palm" = "xyes"; then
1027       LIB_QPE="-lqpe"
1028     else
1029       LIB_QPE=""
1030     fi
1031   else
1032     LIB_QPE=""
1033   fi
1034 fi
1035
1036 dnl ------------------------------------------------------------------------
1037 dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
1038 dnl ------------------------------------------------------------------------
1039
1040 if test "x$kde_use_qt_mt" = "xyes"; then
1041   if test -z "$LIBQT"; then
1042     LIBQT="-l$qtlib-mt"
1043     kde_int_qt="-l$qtlib-mt"
1044   else
1045     LIBQT="$qtlib-mt"
1046     kde_int_qt="$qtlib-mt"
1047   fi
1048   LIBQT_GLOB="lib$qtlib-mt.*"
1049   USING_QT_MT="using -mt"
1050 else
1051   LIBQT="-l$qtlib"
1052 fi
1053
1054 AC_MSG_CHECKING([for Qt])
1055
1056 if test "x$kde_use_qt_emb" != "xyes"; then
1057 LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS"
1058 fi
1059 ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
1060 qt_libraries=""
1061 qt_includes=""
1062 AC_ARG_WITH(qt-dir,
1063     [  --with-qt-dir=DIR       where the root of Qt is installed ],
1064     [  ac_qt_includes="$withval"/include
1065        ac_qt_libraries="$withval"/lib
1066        ac_qt_bindir="$withval"/bin
1067     ])
1068
1069 AC_ARG_WITH(qt-includes,
1070     [  --with-qt-includes=DIR  where the Qt includes are. ],
1071     [
1072        ac_qt_includes="$withval"
1073     ])
1074
1075 kde_qt_libs_given=no
1076
1077 AC_ARG_WITH(qt-libraries,
1078     [  --with-qt-libraries=DIR where the Qt library is installed.],
1079     [  ac_qt_libraries="$withval"
1080        kde_qt_libs_given=yes
1081     ])
1082
1083 AC_CACHE_VAL(ac_cv_have_qt,
1084 [#try to guess Qt locations
1085
1086 qt_incdirs=""
1087 for dir in $kde_qt_dirs; do
1088    qt_incdirs="$qt_incdirs $dir/include $dir"
1089 done
1090 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"
1091 if test ! "$ac_qt_includes" = "NO"; then
1092    qt_incdirs="$ac_qt_includes $qt_incdirs"
1093 fi
1094
1095 if test "$kde_qtver" != "1"; then
1096   kde_qt_header=qstyle.h
1097 else
1098   kde_qt_header=qglobal.h
1099 fi
1100
1101 KDE_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
1102 ac_qt_includes="$qt_incdir"
1103
1104 qt_libdirs=""
1105 for dir in $kde_qt_dirs; do
1106    qt_libdirs="$qt_libdirs $dir/lib $dir"
1107 done
1108 qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries"
1109 if test ! "$ac_qt_libraries" = "NO"; then
1110   qt_libdir=$ac_qt_libraries
1111 else
1112   qt_libdirs="$ac_qt_libraries $qt_libdirs"
1113   # if the Qt was given, the chance is too big that libqt.* doesn't exist
1114   qt_libdir=NONE
1115   for dir in $qt_libdirs; do
1116     try="ls -1 $dir/${LIBQT_GLOB}"
1117     if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AS_MESSAGE_LOG_FD; fi
1118   done
1119 fi
1120
1121 ac_qt_libraries="$qt_libdir"
1122
1123 AC_LANG_PUSH(C++)
1124
1125 ac_cxxflags_safe="$CXXFLAGS"
1126 ac_ldflags_safe="$LDFLAGS"
1127 ac_libs_safe="$LIBS"
1128
1129 CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes"
1130 LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $KDE_MT_LDFLAGS"
1131 LIBS="$LIBS $LIBQT $KDE_MT_LIBS"
1132
1133 KDE_PRINT_QT_PROGRAM
1134
1135 if AC_TRY_EVAL(ac_link) && test -s conftest; then
1136   rm -f conftest*
1137 else
1138   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1139   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1140   ac_qt_libraries="NO"
1141 fi
1142 rm -f conftest*
1143 CXXFLAGS="$ac_cxxflags_safe"
1144 LDFLAGS="$ac_ldflags_safe"
1145 LIBS="$ac_libs_safe"
1146
1147 AC_LANG_POP(C++)
1148 if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
1149   ac_cv_have_qt="have_qt=no"
1150   ac_qt_notfound=""
1151   missing_qt_mt=""
1152   if test "$ac_qt_includes" = NO; then
1153     if test "$ac_qt_libraries" = NO; then
1154       ac_qt_notfound="(headers and libraries)";
1155     else
1156       ac_qt_notfound="(headers)";
1157     fi
1158   else
1159     if test "x$kde_use_qt_mt" = "xyes"; then
1160        missing_qt_mt="
1161 Make sure that you have compiled Qt with thread support!"
1162        ac_qt_notfound="(library $qtlib-mt)";
1163     else
1164        ac_qt_notfound="(library $qtlib)";
1165     fi
1166   fi
1167
1168   AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found. Please check your installation!
1169 For more details about this problem, look at the end of config.log.$missing_qt_mt])
1170 else
1171   have_qt="yes"
1172 fi
1173 ])
1174
1175 eval "$ac_cv_have_qt"
1176
1177 if test "$have_qt" != yes; then
1178   AC_MSG_RESULT([$have_qt]);
1179 else
1180   ac_cv_have_qt="have_qt=yes \
1181     ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
1182   AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT])
1183
1184   qt_libraries="$ac_qt_libraries"
1185   qt_includes="$ac_qt_includes"
1186 fi
1187
1188 if test ! "$kde_qt_libs_given" = "yes"; then
1189 KDE_CHECK_QT_DIRECT(qt_libraries= ,[])
1190 fi
1191
1192 AC_SUBST(qt_libraries)
1193 AC_SUBST(qt_includes)
1194
1195 if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
1196  QT_INCLUDES=""
1197 else
1198  QT_INCLUDES="-I$qt_includes"
1199  all_includes="$QT_INCLUDES $all_includes"
1200 fi
1201
1202 if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then
1203  QT_LDFLAGS=""
1204 else
1205  QT_LDFLAGS="-L$qt_libraries"
1206  all_libraries="$all_libraries $QT_LDFLAGS"
1207 fi
1208 test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS"
1209
1210 AC_SUBST(QT_INCLUDES)
1211 AC_SUBST(QT_LDFLAGS)
1212 KDE_PATH_QT_MOC
1213
1214 if test "x$kde_use_qt_emb" != "xyes"; then
1215 LIB_QT="$kde_int_qt "'$(X_PRE_LIBS) -lXext -lX11 $(X_EXTRA_LIBS)'
1216 else
1217 LIB_QT=$kde_int_qt
1218 fi
1219 test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS"
1220
1221 AC_SUBST(LIB_QT)
1222 AC_SUBST(LIB_QPE)
1223
1224 AC_SUBST(kde_qtver)
1225 ])
1226
1227 AC_DEFUN(KDE_PATH_QT,
1228 [
1229 KDE_PATH_QT_1_3
1230 ])
1231
1232 dnl ------------------------------------------------------------------------
1233 dnl Now, the same with KDE
1234 dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed)
1235 dnl and $(kde_includes) will be the kdehdrlocation (if needed)
1236 dnl ------------------------------------------------------------------------
1237 dnl
1238 AC_DEFUN(KDE_BASE_PATH_KDE,
1239 [
1240 AC_PREREQ([2.13])
1241 AC_REQUIRE([KDE_PATH_QT])dnl
1242 KDE_CHECK_RPATH
1243 AC_MSG_CHECKING([for KDE])
1244
1245 if test "${prefix}" != NONE; then
1246   kde_includes=${prefix}/include
1247   ac_kde_includes=$prefix/include
1248
1249   if test "${exec_prefix}" != NONE; then
1250     kde_libraries=${exec_prefix}/lib
1251     ac_kde_libraries=$exec_prefix/lib
1252   else
1253     kde_libraries=${prefix}/lib
1254     ac_kde_libraries=$prefix/lib
1255   fi
1256 else
1257   ac_kde_includes=
1258   ac_kde_libraries=
1259   kde_libraries=""
1260   kde_includes=""
1261 fi
1262
1263 AC_CACHE_VAL(ac_cv_have_kde,
1264 [#try to guess kde locations
1265
1266 if test "$kde_qtver" = 1; then
1267   kde_check_header="ksock.h"
1268   kde_check_lib="libkdecore.la"
1269 else
1270   kde_check_header="ksharedptr.h"
1271   kde_check_lib="libkio.la"
1272 fi
1273
1274 if test -z "$1"; then
1275
1276 kde_incdirs="/usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes"
1277 test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs"
1278 kde_incdirs="$ac_kde_includes $kde_incdirs"
1279 KDE_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir)
1280 ac_kde_includes="$kde_incdir"
1281
1282 if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then
1283   AC_MSG_ERROR([
1284 in the prefix, you've chosen, are no KDE headers installed. This will fail.
1285 So, check this please and use another prefix!])
1286 fi
1287
1288 kde_libdirs="/usr/lib/kde/lib /usr/local/kde/lib /usr/kde/lib /usr/lib/kde /usr/lib/kde3 /usr/lib /usr/X11R6/lib /usr/local/lib /opt/kde3/lib /opt/kde/lib /usr/X11R6/kde/lib"
1289 test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib $KDEDIR $kde_libdirs"
1290 kde_libdirs="$ac_kde_libraries $kde_libdirs"
1291 KDE_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir)
1292 ac_kde_libraries="$kde_libdir"
1293
1294 if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then
1295 AC_MSG_ERROR([
1296 in the prefix, you've chosen, are no KDE libraries installed. This will fail.
1297 So, check this please and use another prefix!])
1298 fi
1299 ac_kde_libraries="$kde_libdir"
1300
1301 if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO; then
1302   ac_cv_have_kde="have_kde=no"
1303 else
1304   ac_cv_have_kde="have_kde=yes \
1305     ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
1306 fi
1307
1308 else dnl test -z $1
1309
1310   ac_cv_have_kde="have_kde=no"
1311
1312 fi
1313 ])dnl
1314
1315 eval "$ac_cv_have_kde"
1316
1317 if test "$have_kde" != "yes"; then
1318  if test "${prefix}" = NONE; then
1319   ac_kde_prefix="$ac_default_prefix"
1320  else
1321   ac_kde_prefix="$prefix"
1322  fi
1323  if test "$exec_prefix" = NONE; then
1324   ac_kde_exec_prefix="$ac_kde_prefix"
1325   AC_MSG_RESULT([will be installed in $ac_kde_prefix])
1326  else
1327   ac_kde_exec_prefix="$exec_prefix"
1328   AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix])
1329  fi
1330
1331  kde_libraries="${ac_kde_exec_prefix}/lib"
1332  kde_includes=${ac_kde_prefix}/include
1333
1334 else
1335   ac_cv_have_kde="have_kde=yes \
1336     ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
1337   AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes])
1338
1339   kde_libraries="$ac_kde_libraries"
1340   kde_includes="$ac_kde_includes"
1341 fi
1342 AC_SUBST(kde_libraries)
1343 AC_SUBST(kde_includes)
1344
1345 if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes"  || test "$kde_includes" = "/usr/include"; then
1346  KDE_INCLUDES=""
1347 else
1348  KDE_INCLUDES="-I$kde_includes"
1349  all_includes="$KDE_INCLUDES $all_includes"
1350 fi
1351  
1352 KDE_LDFLAGS="-L$kde_libraries"
1353 if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then 
1354  all_libraries="$all_libraries $KDE_LDFLAGS"
1355 fi
1356
1357 AC_SUBST(KDE_LDFLAGS)
1358 AC_SUBST(KDE_INCLUDES)
1359
1360 AC_SUBST(all_includes)
1361 AC_SUBST(all_libraries)
1362
1363 AC_SUBST(AUTODIRS)
1364 ])
1365
1366
1367 AC_DEFUN(KDE_CREATE_LIBS_ALIASES,
1368 [
1369    AC_REQUIRE([KDE_PATH_X])
1370
1371 if test $kde_qtver != 1; then
1372    LIB_KDECORE='-lkdecore'
1373    AC_SUBST(LIB_KDECORE)
1374    LIB_KDEUI='-lkdeui'
1375    AC_SUBST(LIB_KDEUI)
1376 else
1377    LIB_KDECORE='-lkdecore -lXext $(LIB_QT)'
1378    AC_SUBST(LIB_KDECORE)
1379    LIB_KDEUI='-lkdeui $(LIB_KDECORE)'
1380    AC_SUBST(LIB_KDEUI)
1381 fi
1382 ])
1383
1384 AC_DEFUN(KDE_PATH_KDE,
1385 [
1386   KDE_BASE_PATH_KDE
1387   KDE_CREATE_LIBS_ALIASES
1388 ])
1389
1390
1391 AC_DEFUN(KDE_CHECK_COMPILER_FLAG,
1392 [
1393 AC_MSG_CHECKING(whether $CXX supports -$1)
1394 kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
1395 AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
1396 [
1397   AC_LANG_PUSH(C++)
1398   save_CXXFLAGS="$CXXFLAGS"
1399   CXXFLAGS="$CXXFLAGS -$1"
1400   AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
1401   CXXFLAGS="$save_CXXFLAGS"
1402   AC_LANG_POP(C++)
1403 ])
1404 if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
1405  AC_MSG_RESULT(yes)
1406  :
1407  $2
1408 else
1409  AC_MSG_RESULT(no)
1410  :
1411  $3
1412 fi
1413 ])
1414
1415 dnl KDE_REMOVE_FORBIDDEN removes forbidden arguments from variables
1416 dnl use: KDE_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
1417 dnl it's all white-space separated
1418 AC_DEFUN(KDE_REMOVE_FORBIDDEN,
1419 [ __val=$$1
1420   __forbid=" $2 "
1421   if test -n "$__val"; then
1422     __new=""
1423     ac_save_IFS=$IFS
1424     IFS="       "
1425     for i in $__val; do
1426       case "$__forbid" in
1427         *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
1428         *) # Careful to not add spaces, where there were none, because otherwise
1429            # libtool gets confused, if we change e.g. CXX
1430            if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
1431       esac
1432     done
1433     IFS=$ac_save_IFS
1434     $1=$__new
1435   fi
1436 ])
1437
1438 dnl KDE_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
1439 AC_DEFUN(KDE_VALIDIFY_CXXFLAGS,
1440 [dnl
1441 if test "x$kde_use_qt_emb" != "xyes"; then
1442  KDE_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
1443  KDE_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
1444 else
1445  KDE_REMOVE_FORBIDDEN(CXX, [-rpath])
1446  KDE_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
1447 fi
1448 ])
1449
1450 AC_DEFUN(KDE_CHECK_COMPILERS,
1451 [
1452   AC_PROG_CXX
1453
1454   KDE_CHECK_COMPILER_FLAG(fexceptions,[CXXFLAGS="$CXXFLAGS -fexceptions"])
1455
1456   case "$host" in
1457       *-*-irix*)  test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;;
1458       *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";;
1459       *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";;
1460       *-*-solaris*) 
1461         if test "$GXX" = yes; then
1462           libstdcpp=`$CXX -print-file-name=libstdc++.so`
1463           if test ! -f $libstdcpp; then
1464              AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so])
1465           fi
1466         fi
1467         ;;
1468   esac
1469
1470   KDE_VALIDIFY_CXXFLAGS
1471
1472   AC_PROG_CXXCPP
1473 ])
1474
1475 AC_DEFUN(KDE_CHECK_RPATH,
1476 [
1477 AC_MSG_CHECKING(for rpath)
1478 AC_ARG_ENABLE(rpath,
1479       [  --disable-rpath         do not use the rpath feature of ld],
1480       USE_RPATH=$enableval, USE_RPATH=yes)
1481
1482 if test -z "$KDE_RPATH" && test "$USE_RPATH" = "yes"; then
1483
1484   KDE_RPATH="-Wl,--rpath -Wl,\$(kde_libraries)"
1485
1486   if test -n "$qt_libraries"; then
1487     KDE_RPATH="$KDE_RPATH -Wl,--rpath -Wl,\$(qt_libraries)"
1488   fi
1489   dnl $x_libraries is set to /usr/lib in case
1490   if test -n "$X_LIBS"; then
1491     KDE_RPATH="$KDE_RPATH -Wl,--rpath -Wl,\$(x_libraries)"
1492   fi
1493 fi
1494 AC_SUBST(KDE_RPATH)
1495 AC_MSG_RESULT($USE_RPATH)
1496 ])
1497
1498
1499 AC_DEFUN(KDE_CHECK_LIBPTHREAD,
1500 [
1501 AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] )
1502 AC_SUBST(LIBPTHREAD)
1503 ])
1504
1505 AC_DEFUN(KDE_CHECK_PTHREAD_OPTION,
1506 [
1507     AC_ARG_ENABLE(kernel-threads, [  --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.],
1508         kde_use_kernthreads=$enableval, kde_use_kernthreads=no)
1509
1510     if test "$kde_use_kernthreads" = "yes"; then
1511       ac_save_CXXFLAGS="$CXXFLAGS"
1512       ac_save_CFLAGS="$CXXFLAGS"
1513       CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS"
1514       CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS"
1515       AC_CHECK_HEADERS(pthread/linuxthreads/pthread.h)
1516       CXXFLAGS="$ac_save_CXXFLAGS"
1517       CFLAGS="$ac_save_CFLAGS"
1518       if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then
1519         kde_use_kernthreads=no
1520       else
1521         dnl Add proper -I and -l statements
1522         AC_CHECK_LIB(lthread, pthread_join, [LIBPTHREAD="-llthread -llgcc_r"]) dnl for FreeBSD
1523         if test "x$LIBPTHREAD" = "x"; then
1524           kde_use_kernthreads=no
1525         else
1526           USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
1527         fi
1528       fi
1529     else 
1530       USE_THREADS=""
1531       if test -z "$LIBPTHREAD"; then
1532         KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-pthread"] )
1533       fi
1534     fi
1535
1536     case $host_os in
1537         solaris*)
1538                 KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
1539                 CXXFLAGS="$CXXFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
1540                 ;;
1541         freebsd*)
1542                 CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
1543                 ;;
1544         aix*)
1545                 CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
1546                 LIBPTHREAD="$LIBPTHREAD -lc_r"
1547                 ;;
1548         linux*) CXXFLAGS="$CXXFLAGS -D_REENTRANT"
1549                 if test "$CXX" = "KCC"; then
1550                   CXXFLAGS="$CXXFLAGS --thread_safe"
1551                 fi
1552                 ;;
1553         *)
1554                 ;;
1555     esac
1556     AC_SUBST(USE_THREADS)
1557     AC_SUBST(LIBPTHREAD)
1558 ])
1559
1560 AC_DEFUN(KDE_CHECK_THREADING,
1561 [
1562   AC_REQUIRE([KDE_CHECK_LIBPTHREAD])
1563   AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION])
1564   dnl default is yes if libpthread is found and no if no libpthread is available
1565   if test -z "$LIBPTHREAD"; then
1566     if test -z "$USE_THREADS"; then
1567       kde_check_threading_default=no
1568     else
1569       kde_check_threading_default=yes
1570     fi
1571   else
1572     kde_check_threading_default=yes
1573   fi
1574   AC_ARG_ENABLE(threading, [  --disable-threading     disables threading even if libpthread found ],
1575    kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default)
1576   if test "x$kde_use_threading" = "xyes"; then
1577     AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)])
1578   fi
1579 ])