2004-05-21 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 #
134 # From /usr/share/aclocal/iconv.m4.
135 #
136 #serial AM2
137
138 dnl From Bruno Haible.
139
140 AC_DEFUN([AM_ICONV],
141 [
142   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
143   dnl those with the standalone portable GNU libiconv installed).
144
145   AC_ARG_WITH([libiconv-prefix],
146 [  --with-libiconv-prefix=DIR  search for libiconv in DIR/include and DIR/lib], [
147     for dir in `echo "$withval" | tr : ' '`; do
148       if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
149       if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
150     done
151    ])
152
153   AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
154     am_cv_func_iconv="no, consider installing GNU libiconv"
155     am_cv_lib_iconv=no
156     AC_TRY_LINK([#include <stdlib.h>
157 #include <iconv.h>],
158       [iconv_t cd = iconv_open("","");
159        iconv(cd,NULL,NULL,NULL,NULL);
160        iconv_close(cd);],
161       am_cv_func_iconv=yes)
162     if test "$am_cv_func_iconv" != yes; then
163       am_save_LIBS="$LIBS"
164       LIBS="$LIBS -liconv"
165       AC_TRY_LINK([#include <stdlib.h>
166 #include <iconv.h>],
167         [iconv_t cd = iconv_open("","");
168          iconv(cd,NULL,NULL,NULL,NULL);
169          iconv_close(cd);],
170         am_cv_lib_iconv=yes
171         am_cv_func_iconv=yes)
172       LIBS="$am_save_LIBS"
173     fi
174   ])
175   if test "$am_cv_func_iconv" = yes; then
176     AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
177     AC_MSG_CHECKING([for iconv declaration])
178     AC_CACHE_VAL(am_cv_proto_iconv, [
179       AC_TRY_COMPILE([
180 #include <stdlib.h>
181 #include <iconv.h>
182 extern
183 #ifdef __cplusplus
184 "C"
185 #endif
186 #if defined(__STDC__) || defined(__cplusplus)
187 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
188 #else
189 size_t iconv();
190 #endif
191 ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
192       am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
193     am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
194     AC_MSG_RESULT([$]{ac_t:-
195          }[$]am_cv_proto_iconv)
196     AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
197       [Define as const if the declaration of iconv() needs const.])
198   fi
199   LIBICONV=
200   if test "$am_cv_lib_iconv" = yes; then
201     LIBICONV="-liconv"
202   fi
203   AC_SUBST(LIBICONV)
204 ])
205
206
207 dnl
208 dnl GNUPG_CHECK_TYPEDEF(TYPE, HAVE_NAME)
209 dnl Check whether a typedef exists and create a #define $2 if it exists
210 dnl
211 AC_DEFUN(GNUPG_CHECK_TYPEDEF,
212   [ AC_MSG_CHECKING(for $1 typedef)
213     AC_CACHE_VAL(gnupg_cv_typedef_$1,
214     [AC_TRY_COMPILE([#define _GNU_SOURCE 1
215     #include <stdlib.h>
216     #include <sys/types.h>], [
217     #undef $1
218     int a = sizeof($1);
219     ], gnupg_cv_typedef_$1=yes, gnupg_cv_typedef_$1=no )])
220     AC_MSG_RESULT($gnupg_cv_typedef_$1)
221     if test "$gnupg_cv_typedef_$1" = yes; then
222         AC_DEFINE($2,1,[Defined if a `]$1[' is typedef'd])
223     fi
224   ])
225
226
227 ######################################################################
228 # Check whether mlock is broken (hpux 10.20 raises a SIGBUS if mlock
229 # is not called from uid 0 (not tested whether uid 0 works)
230 # For DECs Tru64 we have also to check whether mlock is in librt
231 # mlock is there a macro using memlk()
232 ######################################################################
233 dnl GNUPG_CHECK_MLOCK
234 dnl
235 define(GNUPG_CHECK_MLOCK,
236   [ AC_CHECK_FUNCS(mlock)
237     if test "$ac_cv_func_mlock" = "no"; then
238         AC_CHECK_HEADERS(sys/mman.h)
239         if test "$ac_cv_header_sys_mman_h" = "yes"; then
240             # Add librt to LIBS:
241             AC_CHECK_LIB(rt, memlk)
242             AC_CACHE_CHECK([whether mlock is in sys/mman.h],
243                             gnupg_cv_mlock_is_in_sys_mman,
244                 [AC_TRY_LINK([
245                     #include <assert.h>
246                     #ifdef HAVE_SYS_MMAN_H
247                     #include <sys/mman.h>
248                     #endif
249                 ], [
250                     int i;
251
252                     /* glibc defines this for functions which it implements
253                      * to always fail with ENOSYS.  Some functions are actually
254                      * named something starting with __ and the normal name
255                      * is an alias.  */
256                     #if defined (__stub_mlock) || defined (__stub___mlock)
257                     choke me
258                     #else
259                     mlock(&i, 4);
260                     #endif
261                     ; return 0;
262                 ],
263                 gnupg_cv_mlock_is_in_sys_mman=yes,
264                 gnupg_cv_mlock_is_in_sys_mman=no)])
265             if test "$gnupg_cv_mlock_is_in_sys_mman" = "yes"; then
266                 AC_DEFINE(HAVE_MLOCK,1,
267                           [Defined if the system supports an mlock() call])
268             fi
269         fi
270     fi
271     if test "$ac_cv_func_mlock" = "yes"; then
272         AC_MSG_CHECKING(whether mlock is broken)
273           AC_CACHE_VAL(gnupg_cv_have_broken_mlock,
274              AC_TRY_RUN([
275                 #include <stdlib.h>
276                 #include <unistd.h>
277                 #include <errno.h>
278                 #include <sys/mman.h>
279                 #include <sys/types.h>
280                 #include <fcntl.h>
281
282                 int main()
283                 {
284                     char *pool;
285                     int err;
286                     long int pgsize = getpagesize();
287
288                     pool = malloc( 4096 + pgsize );
289                     if( !pool )
290                         return 2;
291                     pool += (pgsize - ((long int)pool % pgsize));
292
293                     err = mlock( pool, 4096 );
294                     if( !err || errno == EPERM )
295                         return 0; /* okay */
296
297                     return 1;  /* hmmm */
298                 }
299
300             ],
301             gnupg_cv_have_broken_mlock="no",
302             gnupg_cv_have_broken_mlock="yes",
303             gnupg_cv_have_broken_mlock="assume-no"
304            )
305          )
306          if test "$gnupg_cv_have_broken_mlock" = "yes"; then
307              AC_DEFINE(HAVE_BROKEN_MLOCK,1,
308                        [Defined if the mlock() call does not work])
309              AC_MSG_RESULT(yes)
310              AC_CHECK_FUNCS(plock)
311          else
312             if test "$gnupg_cv_have_broken_mlock" = "no"; then
313                 AC_MSG_RESULT(no)
314             else
315                 AC_MSG_RESULT(assuming no)
316             fi
317          fi
318     fi
319   ])
320
321 # Configure paths for GLIB
322 # Owen Taylor     97-11-3
323
324 dnl AM_PATH_GLIB([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
325 dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if "gmodule" or 
326 dnl gthread is specified in MODULES, pass to glib-config
327 dnl
328 AC_DEFUN(AM_PATH_GLIB,
329 [dnl 
330 dnl Get the cflags and libraries from the glib-config script
331 dnl
332 AC_ARG_WITH(glib-prefix,[  --with-glib-prefix=PFX   Prefix where GLIB is installed (optional)],
333             glib_config_prefix="$withval", glib_config_prefix="")
334 AC_ARG_WITH(glib-exec-prefix,[  --with-glib-exec-prefix=PFX Exec prefix where GLIB is installed (optional)],
335             glib_config_exec_prefix="$withval", glib_config_exec_prefix="")
336 AC_ARG_ENABLE(glibtest, [  --disable-glibtest       Do not try to compile and run a test GLIB program],
337                     , enable_glibtest=yes)
338
339   if test x$glib_config_exec_prefix != x ; then
340      glib_config_args="$glib_config_args --exec-prefix=$glib_config_exec_prefix"
341      if test x${GLIB_CONFIG+set} != xset ; then
342         GLIB_CONFIG=$glib_config_exec_prefix/bin/glib-config
343      fi
344   fi
345   if test x$glib_config_prefix != x ; then
346      glib_config_args="$glib_config_args --prefix=$glib_config_prefix"
347      if test x${GLIB_CONFIG+set} != xset ; then
348         GLIB_CONFIG=$glib_config_prefix/bin/glib-config
349      fi
350   fi
351
352   for module in . $4
353   do
354       case "$module" in
355          gmodule) 
356              glib_config_args="$glib_config_args gmodule"
357          ;;
358          gthread) 
359              glib_config_args="$glib_config_args gthread"
360          ;;
361       esac
362   done
363
364   AC_PATH_PROG(GLIB_CONFIG, glib-config, no)
365   min_glib_version=ifelse([$1], ,0.99.7,$1)
366   AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
367   no_glib=""
368   if test "$GLIB_CONFIG" = "no" ; then
369     no_glib=yes
370   else
371     GLIB_CFLAGS=`$GLIB_CONFIG $glib_config_args --cflags`
372     GLIB_LIBS=`$GLIB_CONFIG $glib_config_args --libs`
373     glib_config_major_version=`$GLIB_CONFIG $glib_config_args --version | \
374            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
375     glib_config_minor_version=`$GLIB_CONFIG $glib_config_args --version | \
376            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
377     glib_config_micro_version=`$GLIB_CONFIG $glib_config_args --version | \
378            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
379     if test "x$enable_glibtest" = "xyes" ; then
380       ac_save_CFLAGS="$CFLAGS"
381       ac_save_LIBS="$LIBS"
382       CFLAGS="$CFLAGS $GLIB_CFLAGS"
383       LIBS="$GLIB_LIBS $LIBS"
384 dnl
385 dnl Now check if the installed GLIB is sufficiently new. (Also sanity
386 dnl checks the results of glib-config to some extent
387 dnl
388       rm -f conf.glibtest
389       AC_TRY_RUN([
390 #include <glib.h>
391 #include <stdio.h>
392 #include <stdlib.h>
393
394 int 
395 main ()
396 {
397   int major, minor, micro;
398   char *tmp_version;
399
400   system ("touch conf.glibtest");
401
402   /* HP/UX 9 (%@#!) writes to sscanf strings */
403   tmp_version = g_strdup("$min_glib_version");
404   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
405      printf("%s, bad version string\n", "$min_glib_version");
406      exit(1);
407    }
408
409   if ((glib_major_version != $glib_config_major_version) ||
410       (glib_minor_version != $glib_config_minor_version) ||
411       (glib_micro_version != $glib_config_micro_version))
412     {
413       printf("\n*** 'glib-config --version' returned %d.%d.%d, but GLIB (%d.%d.%d)\n", 
414              $glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
415              glib_major_version, glib_minor_version, glib_micro_version);
416       printf ("*** was found! If glib-config was correct, then it is best\n");
417       printf ("*** to remove the old version of GLIB. You may also be able to fix the error\n");
418       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
419       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
420       printf("*** required on your system.\n");
421       printf("*** If glib-config was wrong, set the environment variable GLIB_CONFIG\n");
422       printf("*** to point to the correct copy of glib-config, and remove the file config.cache\n");
423       printf("*** before re-running configure\n");
424     } 
425   else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
426            (glib_minor_version != GLIB_MINOR_VERSION) ||
427            (glib_micro_version != GLIB_MICRO_VERSION))
428     {
429       printf("*** GLIB header files (version %d.%d.%d) do not match\n",
430              GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
431       printf("*** library (version %d.%d.%d)\n",
432              glib_major_version, glib_minor_version, glib_micro_version);
433     }
434   else
435     {
436       if ((glib_major_version > major) ||
437         ((glib_major_version == major) && (glib_minor_version > minor)) ||
438         ((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
439       {
440         return 0;
441        }
442      else
443       {
444         printf("\n*** An old version of GLIB (%d.%d.%d) was found.\n",
445                glib_major_version, glib_minor_version, glib_micro_version);
446         printf("*** You need a version of GLIB newer than %d.%d.%d. The latest version of\n",
447                major, minor, micro);
448         printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
449         printf("***\n");
450         printf("*** If you have already installed a sufficiently new version, this error\n");
451         printf("*** probably means that the wrong copy of the glib-config shell script is\n");
452         printf("*** being found. The easiest way to fix this is to remove the old version\n");
453         printf("*** of GLIB, but you can also set the GLIB_CONFIG environment to point to the\n");
454         printf("*** correct copy of glib-config. (In this case, you will have to\n");
455         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
456         printf("*** so that the correct libraries are found at run-time))\n");
457       }
458     }
459   return 1;
460 }
461 ],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
462        CFLAGS="$ac_save_CFLAGS"
463        LIBS="$ac_save_LIBS"
464      fi
465   fi
466   if test "x$no_glib" = x ; then
467      AC_MSG_RESULT(yes)
468      ifelse([$2], , :, [$2])     
469   else
470      AC_MSG_RESULT(no)
471      if test "$GLIB_CONFIG" = "no" ; then
472        echo "*** The glib-config script installed by GLIB could not be found"
473        echo "*** If GLIB was installed in PREFIX, make sure PREFIX/bin is in"
474        echo "*** your path, or set the GLIB_CONFIG environment variable to the"
475        echo "*** full path to glib-config."
476      else
477        if test -f conf.glibtest ; then
478         :
479        else
480           echo "*** Could not run GLIB test program, checking why..."
481           CFLAGS="$CFLAGS $GLIB_CFLAGS"
482           LIBS="$LIBS $GLIB_LIBS"
483           AC_TRY_LINK([
484 #include <glib.h>
485 #include <stdio.h>
486 ],      [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
487         [ echo "*** The test program compiled, but did not run. This usually means"
488           echo "*** that the run-time linker is not finding GLIB or finding the wrong"
489           echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
490           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
491           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
492           echo "*** is required on your system"
493           echo "***"
494           echo "*** If you have an old version installed, it is best to remove it, although"
495           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
496           echo "***"
497           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
498           echo "*** came with the system with the command"
499           echo "***"
500           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
501         [ echo "*** The test program failed to compile or link. See the file config.log for the"
502           echo "*** exact error that occured. This usually means GLIB was incorrectly installed"
503           echo "*** or that you have moved GLIB since it was installed. In the latter case, you"
504           echo "*** may want to edit the glib-config script: $GLIB_CONFIG" ])
505           CFLAGS="$ac_save_CFLAGS"
506           LIBS="$ac_save_LIBS"
507        fi
508      fi
509      GLIB_CFLAGS=""
510      GLIB_LIBS=""
511      ifelse([$3], , :, [$3])
512   fi
513   AC_SUBST(GLIB_CFLAGS)
514   AC_SUBST(GLIB_LIBS)
515   rm -f conf.glibtest
516 ])
517
518
519 # Configure paths for GTK+
520 # Owen Taylor     97-11-3
521
522 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
523 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
524 dnl
525 AC_DEFUN(AM_PATH_GTK,
526 [dnl 
527 dnl Get the cflags and libraries from the gtk-config script
528 dnl
529 AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
530             gtk_config_prefix="$withval", gtk_config_prefix="")
531 AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
532             gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
533 AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
534                     , enable_gtktest=yes)
535
536   for module in . $4
537   do
538       case "$module" in
539          gthread) 
540              gtk_config_args="$gtk_config_args gthread"
541          ;;
542       esac
543   done
544
545   if test x$gtk_config_exec_prefix != x ; then
546      gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
547      if test x${GTK_CONFIG+set} != xset ; then
548         GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
549      fi
550   fi
551   if test x$gtk_config_prefix != x ; then
552      gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
553      if test x${GTK_CONFIG+set} != xset ; then
554         GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
555      fi
556   fi
557
558   AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
559   min_gtk_version=ifelse([$1], ,0.99.7,$1)
560   AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
561   no_gtk=""
562   if test "$GTK_CONFIG" = "no" ; then
563     no_gtk=yes
564   else
565     GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
566     GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
567     gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
568            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
569     gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
570            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
571     gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
572            sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
573     if test "x$enable_gtktest" = "xyes" ; then
574       ac_save_CFLAGS="$CFLAGS"
575       ac_save_LIBS="$LIBS"
576       CFLAGS="$CFLAGS $GTK_CFLAGS"
577       LIBS="$GTK_LIBS $LIBS"
578 dnl
579 dnl Now check if the installed GTK is sufficiently new. (Also sanity
580 dnl checks the results of gtk-config to some extent
581 dnl
582       rm -f conf.gtktest
583       AC_TRY_RUN([
584 #include <gtk/gtk.h>
585 #include <stdio.h>
586 #include <stdlib.h>
587
588 int 
589 main ()
590 {
591   int major, minor, micro;
592   char *tmp_version;
593
594   system ("touch conf.gtktest");
595
596   /* HP/UX 9 (%@#!) writes to sscanf strings */
597   tmp_version = g_strdup("$min_gtk_version");
598   if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
599      printf("%s, bad version string\n", "$min_gtk_version");
600      exit(1);
601    }
602
603   if ((gtk_major_version != $gtk_config_major_version) ||
604       (gtk_minor_version != $gtk_config_minor_version) ||
605       (gtk_micro_version != $gtk_config_micro_version))
606     {
607       printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", 
608              $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
609              gtk_major_version, gtk_minor_version, gtk_micro_version);
610       printf ("*** was found! If gtk-config was correct, then it is best\n");
611       printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
612       printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
613       printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
614       printf("*** required on your system.\n");
615       printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
616       printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
617       printf("*** before re-running configure\n");
618     } 
619 #if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
620   else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
621            (gtk_minor_version != GTK_MINOR_VERSION) ||
622            (gtk_micro_version != GTK_MICRO_VERSION))
623     {
624       printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
625              GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
626       printf("*** library (version %d.%d.%d)\n",
627              gtk_major_version, gtk_minor_version, gtk_micro_version);
628     }
629 #endif /* defined (GTK_MAJOR_VERSION) ... */
630   else
631     {
632       if ((gtk_major_version > major) ||
633         ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
634         ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
635       {
636         return 0;
637        }
638      else
639       {
640         printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
641                gtk_major_version, gtk_minor_version, gtk_micro_version);
642         printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
643                major, minor, micro);
644         printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
645         printf("***\n");
646         printf("*** If you have already installed a sufficiently new version, this error\n");
647         printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
648         printf("*** being found. The easiest way to fix this is to remove the old version\n");
649         printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
650         printf("*** correct copy of gtk-config. (In this case, you will have to\n");
651         printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
652         printf("*** so that the correct libraries are found at run-time))\n");
653       }
654     }
655   return 1;
656 }
657 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
658        CFLAGS="$ac_save_CFLAGS"
659        LIBS="$ac_save_LIBS"
660      fi
661   fi
662   if test "x$no_gtk" = x ; then
663      AC_MSG_RESULT(yes)
664      ifelse([$2], , :, [$2])     
665   else
666      AC_MSG_RESULT(no)
667      if test "$GTK_CONFIG" = "no" ; then
668        echo "*** The gtk-config script installed by GTK could not be found"
669        echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
670        echo "*** your path, or set the GTK_CONFIG environment variable to the"
671        echo "*** full path to gtk-config."
672      else
673        if test -f conf.gtktest ; then
674         :
675        else
676           echo "*** Could not run GTK test program, checking why..."
677           CFLAGS="$CFLAGS $GTK_CFLAGS"
678           LIBS="$LIBS $GTK_LIBS"
679           AC_TRY_LINK([
680 #include <gtk/gtk.h>
681 #include <stdio.h>
682 ],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
683         [ echo "*** The test program compiled, but did not run. This usually means"
684           echo "*** that the run-time linker is not finding GTK or finding the wrong"
685           echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
686           echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
687           echo "*** to the installed location  Also, make sure you have run ldconfig if that"
688           echo "*** is required on your system"
689           echo "***"
690           echo "*** If you have an old version installed, it is best to remove it, although"
691           echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
692           echo "***"
693           echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
694           echo "*** came with the system with the command"
695           echo "***"
696           echo "***    rpm --erase --nodeps gtk gtk-devel" ],
697         [ echo "*** The test program failed to compile or link. See the file config.log for the"
698           echo "*** exact error that occured. This usually means GTK was incorrectly installed"
699           echo "*** or that you have moved GTK since it was installed. In the latter case, you"
700           echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
701           CFLAGS="$ac_save_CFLAGS"
702           LIBS="$ac_save_LIBS"
703        fi
704      fi
705      GTK_CFLAGS=""
706      GTK_LIBS=""
707      ifelse([$3], , :, [$3])
708   fi
709   AC_SUBST(GTK_CFLAGS)
710   AC_SUBST(GTK_LIBS)
711   rm -f conf.gtktest
712 ])
713 ##   -*- autoconf -*-
714
715
716 dnl    This file is part of the KDE libraries/packages
717 dnl    Copyright (C) 1997 Janos Farkas (chexum@shadow.banki.hu)
718 dnl              (C) 1997,98,99 Stephan Kulow (coolo@kde.org)
719 dnl              (C) 2002 g10 Code GmbH
720 dnl              Modified for PINENTRY by Marcus Brinkmann.
721 dnl
722 dnl    This file is free software; you can redistribute it and/or
723 dnl    modify it under the terms of the GNU Library General Public
724 dnl    License as published by the Free Software Foundation; either
725 dnl    version 2 of the License, or (at your option) any later version.
726
727 dnl    This library is distributed in the hope that it will be useful,
728 dnl    but WITHOUT ANY WARRANTY; without even the implied warranty of
729 dnl    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
730 dnl    Library General Public License for more details.
731
732 dnl    You should have received a copy of the GNU Library General Public License
733 dnl    along with this library; see the file COPYING.LIB.  If not, write to
734 dnl    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
735 dnl    Boston, MA 02111-1307, USA.
736
737 dnl ------------------------------------------------------------------------
738 dnl Find a file (or one of more files in a list of dirs)
739 dnl ------------------------------------------------------------------------
740 dnl
741 AC_DEFUN(QT_FIND_FILE,
742 [
743 $3=NO
744 for i in $2;
745 do
746   for j in $1;
747   do
748     echo "configure: __oline__: $i/$j" >&AS_MESSAGE_LOG_FD
749     if test -r "$i/$j"; then
750       echo "taking that" >&AS_MESSAGE_LOG_FD
751       $3=$i
752       break 2
753     fi
754   done
755 done
756 ])
757
758 dnl ------------------------------------------------------------------------
759 dnl Find the meta object compiler in the PATH,
760 dnl in $QTDIR/bin, and some more usual places
761 dnl ------------------------------------------------------------------------
762 dnl
763 AC_DEFUN(QT_PATH_MOC,
764 [
765    qt_bindirs=""
766    for dir in $qt_dirs; do
767       qt_bindirs="$qt_bindirs:$dir/bin:$dir/src/moc"
768    done
769    qt_bindirs="$qt_bindirs:/usr/bin:/usr/X11R6/bin:/usr/local/qt/bin"
770    if test ! "$ac_qt_bindir" = "NO"; then
771       qt_bindirs="$ac_qt_bindir:$qt_bindirs"
772    fi
773
774    AC_PATH_PROG(MOC, moc, no, [$qt_bindirs])
775    if test "$MOC" = no; then
776     #AC_MSG_ERROR([No Qt meta object compiler (moc) found!
777     #Please check whether you installed Qt correctly.
778     #You need to have a running moc binary.
779     #configure tried to run $ac_cv_path_moc and the test didn't
780     #succeed. If configure shouldn't have tried this one, set
781     #the environment variable MOC to the right one before running
782     #configure.
783     #])
784     have_moc="no"
785    else
786     have_moc="yes"
787     AC_SUBST(MOC)
788    fi
789 ])
790
791
792 dnl ------------------------------------------------------------------------
793 dnl Find the header files and libraries for the X Window System.
794 dnl Extended the macro AC_PATH_XTRA.
795 dnl ------------------------------------------------------------------------
796 dnl
797 AC_DEFUN(QT_PATH_X,
798 [
799 AC_ARG_ENABLE(
800   embedded,
801   [  --enable-embedded       link to Qt-embedded, don't use X],
802   qt_use_emb=$enableval,
803   qt_use_emb=no
804 )
805
806 AC_ARG_ENABLE(
807   palmtop,
808   [  --enable-palmtop       link to Qt-embedded, don't use X, link to the Qt Palmtop Environment],
809   qt_use_emb_palm=$enableval,
810   qt_use_emb_palm=no
811 )
812
813 if test "$qt_use_emb" = "no"; then
814   AC_PATH_X
815   AC_PATH_XTRA
816   if test "$no_x" = yes; then
817     AC_MSG_ERROR([Can't find X. Please check your installation and add the correct paths!])
818   fi
819   QT_CXXFLAGS="$X_CFLAGS"
820   QT_LDFLAGS="$X_LIBS"
821   QT_LIBS="$X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS"
822   QTE_NORTTI=""
823 else
824   dnl We're using QT Embedded
825   QT_CXXFLAGS="-fno-rtti -DQWS"
826   QT_LDFLAGS="-DQWS"
827   QT_LIBS=""
828   QTE_NORTTI="-fno-rtti -DQWS"
829 fi
830 AC_SUBST(QT_CXXFLAGS)
831 AC_SUBST(QT_LDFLAGS)
832 AC_SUBST(QT_LIBS)
833 AC_SUBST(QTE_NORTTI)
834 ])
835
836 AC_DEFUN(QT_PRINT_PROGRAM,
837 [
838 AC_REQUIRE([QT_CHECK_VERSION])
839 cat > conftest.$ac_ext <<EOF
840 #include "confdefs.h"
841 #include <qglobal.h>
842 #include <qapplication.h>
843 EOF
844 if test "$qt_ver" = "2"; then
845 cat >> conftest.$ac_ext <<EOF
846 #include <qevent.h>
847 #include <qstring.h>
848 #include <qstyle.h>
849 EOF
850
851 if test $qt_subver -gt 0; then
852 cat >> conftest.$ac_ext <<EOF
853 #include <qiconview.h>
854 EOF
855 fi
856 fi
857
858 if test "$qt_ver" = "3"; then
859 cat >> conftest.$ac_ext <<EOF
860 #include <qcursor.h>
861 #include <qstylefactory.h>
862 #include <private/qucomextra_p.h>
863 EOF
864 fi
865
866 echo "#if ! ($qt_verstring)" >> conftest.$ac_ext
867 cat >> conftest.$ac_ext <<EOF
868 #error 1
869 #endif
870
871 int main() {
872 EOF
873 if test "$qt_ver" = "2"; then
874 cat >> conftest.$ac_ext <<EOF
875     QStringList *t = new QStringList();
876     Q_UNUSED(t);
877 EOF
878 if test $qt_subver -gt 0; then
879 cat >> conftest.$ac_ext <<EOF
880     QIconView iv(0);
881     iv.setWordWrapIconText(false);
882     QString s;
883     s.setLatin1("Elvis is alive", 14);
884 EOF
885 fi
886 fi
887 if test "$qt_ver" = "3"; then
888 cat >> conftest.$ac_ext <<EOF
889     (void)QStyleFactory::create(QString::null);
890     QCursor c(Qt::WhatsThisCursor);
891 EOF
892 fi
893 cat >> conftest.$ac_ext <<EOF
894     return 0;
895 }
896 EOF
897 ])
898
899
900 AC_DEFUN(QT_CHECK_VERSION,
901 [
902 if test -z "$1"; then
903   qt_ver=3
904   qt_subver=1
905 else
906   qt_subver=`echo "$1" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'`
907   # following is the check if subversion isnĀ“t found in passed argument
908   if test "$qt_subver" = "$1"; then
909     qt_subver=1
910   fi
911   qt_ver=`echo "$1" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
912   if test "$qt_ver" = "1"; then
913     qt_subver=42
914   fi
915 fi
916
917 if test -z "$2"; then
918   if test "$qt_ver" = "2"; then
919     if test $qt_subver -gt 0; then
920       qt_minversion=">= Qt 2.2.2"
921     else
922       qt_minversion=">= Qt 2.0.2"
923     fi
924   fi
925   if test "$qt_ver" = "3"; then
926     qt_minversion=">= Qt 3.0.1"
927   fi
928   if test "$qt_ver" = "1"; then
929     qt_minversion=">= 1.42 and < 2.0"
930   fi
931 else
932    qt_minversion=$2
933 fi
934
935 if test -z "$3"; then
936    if test $qt_ver = 3; then
937      qt_verstring="QT_VERSION >= 301"
938    fi
939    if test $qt_ver = 2; then
940      if test $qt_subver -gt 0; then
941        qt_verstring="QT_VERSION >= 222"
942      else
943        qt_verstring="QT_VERSION >= 200"
944      fi
945    fi
946    if test $qt_ver = 1; then
947     qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
948    fi
949 else
950    qt_verstring=$3
951 fi
952
953 if test $qt_ver = 3; then
954   qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt"
955 fi
956 if test $qt_ver = 2; then
957   qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
958 fi
959 if test $qt_ver = 1; then
960   qt_dirs="$QTDIR /usr/lib/qt"
961 fi
962 ])
963
964
965 dnl ------------------------------------------------------------------------
966 dnl Try to find the Qt headers and libraries.
967 dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
968 dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
969 dnl ------------------------------------------------------------------------
970 dnl
971 AC_DEFUN(QT_PATH_1_3,
972 [
973 AC_REQUIRE([QT_PATH_X])
974 AC_REQUIRE([QT_CHECK_VERSION])
975
976 dnl ------------------------------------------------------------------------
977 dnl Add configure flag to enable linking to MT version of Qt library.
978 dnl ------------------------------------------------------------------------
979
980 AC_ARG_ENABLE(
981   mt,
982   [  --disable-mt            link to non-threaded Qt (deprecated)],
983   qt_use_mt=$enableval,
984   [
985     if test $qt_ver = 3; then
986       qt_use_mt=yes
987     else
988       qt_use_mt=no
989     fi
990   ]
991 )
992
993 USING_QT_MT=""
994
995 dnl ------------------------------------------------------------------------
996 dnl If we not get --disable-qt-mt then adjust some vars for the host.
997 dnl ------------------------------------------------------------------------
998
999 QT_MT_LDFLAGS=
1000 QT_MT_LIBS=
1001 if test "x$qt_use_mt" = "xyes"; then
1002   QT_CHECK_THREADING
1003   if test "x$qt_use_threading" = "xyes"; then
1004     QT_CXXFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $QT_CXXFLAGS"
1005     QT_MT_LDFLAGS="$USE_THREADS"
1006     QT_MT_LIBS="$LIBPTHREAD"
1007   else
1008     qt_use_mt=no
1009   fi
1010 fi
1011 AC_SUBST(QT_MT_LDFLAGS)
1012 AC_SUBST(QT_MT_LIBS)
1013
1014 dnl ------------------------------------------------------------------------
1015 dnl If we haven't been told how to link to Qt, we work it out for ourselves.
1016 dnl ------------------------------------------------------------------------
1017 if test -z "$LIBQT_GLOB"; then
1018   if test "x$qt_use_emb" = "xyes"; then
1019     LIBQT_GLOB="libqte.*"
1020   else
1021     LIBQT_GLOB="libqt.*"
1022   fi
1023 fi
1024
1025 if test -z "$LIBQT"; then
1026 dnl ------------------------------------------------------------
1027 dnl If we got --enable-embedded then adjust the Qt library name.
1028 dnl ------------------------------------------------------------
1029   if test "x$qt_use_emb" = "xyes"; then
1030     qtlib="qte"
1031   else
1032     qtlib="qt"
1033   fi
1034 fi
1035
1036 if test -z "$LIBQPE"; then
1037 dnl ------------------------------------------------------------
1038 dnl If we got --enable-palmtop then add -lqpe to the link line
1039 dnl ------------------------------------------------------------
1040   if test "x$qt_use_emb" = "xyes"; then
1041     if test "x$qt_use_emb_palm" = "xyes"; then
1042       LIB_QPE="-lqpe"
1043     else
1044       LIB_QPE=""
1045     fi
1046   else
1047     LIB_QPE=""
1048   fi
1049 fi
1050
1051 dnl ------------------------------------------------------------------------
1052 dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
1053 dnl ------------------------------------------------------------------------
1054
1055 if test "x$qt_use_mt" = "xyes"; then
1056   if test -z "$LIBQT"; then
1057     LIBQT="-l$qtlib-mt"
1058   else
1059     LIBQT="$qtlib-mt"
1060   fi
1061   LIBQT_GLOB="lib$qtlib-mt.*"
1062   USING_QT_MT="using -mt"
1063 else
1064   LIBQT="-l$qtlib"
1065 fi
1066
1067 AC_MSG_CHECKING([for Qt])
1068
1069 QT_LIBS="$LIBQT $QT_LIBS"
1070 test -z "$QT_MT_LIBS" || QT_LIBS="$QT_LIBS $QT_MT_LIBS"
1071
1072 ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
1073 qt_libraries=""
1074 qt_includes=""
1075 AC_ARG_WITH(qt-dir,
1076     [  --with-qt-dir=DIR       where the root of Qt is installed ],
1077     [  ac_qt_includes="$withval"/include
1078        ac_qt_libraries="$withval"/lib
1079        ac_qt_bindir="$withval"/bin
1080     ])
1081
1082 AC_ARG_WITH(qt-includes,
1083     [  --with-qt-includes=DIR  where the Qt includes are. ],
1084     [
1085        ac_qt_includes="$withval"
1086     ])
1087
1088 kde_qt_libs_given=no
1089
1090 AC_ARG_WITH(qt-libraries,
1091     [  --with-qt-libraries=DIR where the Qt library is installed.],
1092     [  ac_qt_libraries="$withval"
1093        kde_qt_libs_given=yes
1094     ])
1095
1096 AC_CACHE_VAL(ac_cv_have_qt,
1097 [#try to guess Qt locations
1098
1099 qt_incdirs=""
1100 for dir in $qt_dirs; do
1101    qt_incdirs="$qt_incdirs $dir/include $dir"
1102 done
1103 qt_incdirs="$QTINC $qt_incdirs /usr/local/qt/include  /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/X11R6/include/qt2 /usr/include/qt3 $x_includes"
1104 if test ! "$ac_qt_includes" = "NO"; then
1105    qt_incdirs="$ac_qt_includes $qt_incdirs"
1106 fi
1107
1108 if test "$qt_ver" != "1"; then
1109   kde_qt_header=qstyle.h
1110 else
1111   kde_qt_header=qglobal.h
1112 fi
1113
1114 QT_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
1115 ac_qt_includes="$qt_incdir"
1116
1117 qt_libdirs=""
1118 for dir in $qt_dirs; do
1119    qt_libdirs="$qt_libdirs $dir/lib $dir"
1120 done
1121 qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries"
1122 if test ! "$ac_qt_libraries" = "NO"; then
1123   qt_libdir=$ac_qt_libraries
1124 else
1125   qt_libdirs="$ac_qt_libraries $qt_libdirs"
1126   # if the Qt was given, the chance is too big that libqt.* doesn't exist
1127   qt_libdir=NONE
1128   for dir in $qt_libdirs; do
1129     try="ls -1 $dir/${LIBQT_GLOB}"
1130     if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AS_MESSAGE_LOG_FD; fi
1131   done
1132 fi
1133
1134 ac_qt_libraries="$qt_libdir"
1135
1136 AC_LANG_PUSH(C++)
1137
1138 ac_cxxflags_safe="$CXXFLAGS"
1139 ac_ldflags_safe="$LDFLAGS"
1140 ac_libs_safe="$LIBS"
1141
1142 CXXFLAGS="$CXXFLAGS -I$qt_incdir $QT_CXXFLAGS"
1143 LDFLAGS="$LDFLAGS -L$qt_libdir $QT_LDFLAGS"
1144 LIBS="$LIBS $QT_LIBS"
1145
1146 QT_PRINT_PROGRAM
1147
1148 if AC_TRY_EVAL(ac_link) && test -s conftest; then
1149   rm -f conftest*
1150 else
1151   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1152   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1153   ac_qt_libraries="NO"
1154 fi
1155 rm -f conftest*
1156 CXXFLAGS="$ac_cxxflags_safe"
1157 LDFLAGS="$ac_ldflags_safe"
1158 LIBS="$ac_libs_safe"
1159
1160 AC_LANG_POP(C++)
1161 if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
1162   ac_cv_have_qt="have_qt=no"
1163   ac_qt_notfound=""
1164   missing_qt_mt=""
1165   if test "$ac_qt_includes" = NO; then
1166     if test "$ac_qt_libraries" = NO; then
1167       ac_qt_notfound="(headers and libraries)";
1168     else
1169       ac_qt_notfound="(headers)";
1170     fi
1171   else
1172     if test "x$qt_use_mt" = "xyes"; then
1173        missing_qt_mt="
1174 Make sure that you have compiled Qt with thread support!"
1175        ac_qt_notfound="(library $qtlib-mt)";
1176     else
1177        ac_qt_notfound="(library $qtlib)";
1178     fi
1179   fi
1180
1181   #AC_MSG_ERROR([Qt ($qt_minversion) $ac_qt_notfound not found. Please check your installation!
1182   #For more details about this problem, look at the end of config.log.$missing_qt_mt])
1183   have_qt="no"
1184 else
1185   have_qt="yes"
1186 fi
1187 ])
1188
1189 eval "$ac_cv_have_qt"
1190
1191 if test "$have_qt" != yes; then
1192   AC_MSG_RESULT([$have_qt]);
1193 else
1194   ac_cv_have_qt="have_qt=yes \
1195     ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
1196   AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT])
1197
1198   qt_libraries="$ac_qt_libraries"
1199   qt_includes="$ac_qt_includes"
1200 fi
1201
1202 AC_SUBST(qt_libraries)
1203 AC_SUBST(qt_includes)
1204
1205 if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
1206  QT_INCLUDES=""
1207 else
1208  QT_INCLUDES="-I$qt_includes"
1209 fi
1210
1211 if test "$qt_libraries" != "$x_libraries" && test -n "$qt_libraries"; then
1212  QT_LDFLAGS="$QT_LDFLAGS -L$qt_libraries"
1213 fi
1214 test -z "$QT_MT_LDFLAGS" || QT_LDFLAGS="$QT_LDFLAGS $QT_MT_LDFLAGS"
1215
1216 AC_SUBST(QT_INCLUDES)
1217 QT_PATH_MOC
1218
1219
1220 AC_SUBST(LIB_QPE)
1221 ])
1222
1223 AC_DEFUN(QT_PATH,
1224 [
1225 QT_PATH_1_3
1226 QT_CHECK_RPATH
1227 ])
1228
1229
1230 AC_DEFUN(QT_CHECK_COMPILER_FLAG,
1231 [
1232 AC_MSG_CHECKING(whether $CXX supports -$1)
1233 kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
1234 AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
1235 [
1236   AC_LANG_PUSH(C++)
1237   save_CXXFLAGS="$CXXFLAGS"
1238   CXXFLAGS="$CXXFLAGS -$1"
1239   AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
1240   CXXFLAGS="$save_CXXFLAGS"
1241   AC_LANG_POP(C++)
1242 ])
1243 if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
1244  AC_MSG_RESULT(yes)
1245  :
1246  $2
1247 else
1248  AC_MSG_RESULT(no)
1249  :
1250  $3
1251 fi
1252 ])
1253
1254 dnl QT_REMOVE_FORBIDDEN removes forbidden arguments from variables
1255 dnl use: QT_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
1256 dnl it's all white-space separated
1257 AC_DEFUN(QT_REMOVE_FORBIDDEN,
1258 [ __val=$$1
1259   __forbid=" $2 "
1260   if test -n "$__val"; then
1261     __new=""
1262     ac_save_IFS=$IFS
1263     IFS="       "
1264     for i in $__val; do
1265       case "$__forbid" in
1266         *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
1267         *) # Careful to not add spaces, where there were none, because otherwise
1268            # libtool gets confused, if we change e.g. CXX
1269            if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
1270       esac
1271     done
1272     IFS=$ac_save_IFS
1273     $1=$__new
1274   fi
1275 ])
1276
1277 dnl QT_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
1278 AC_DEFUN(QT_VALIDIFY_CXXFLAGS,
1279 [dnl
1280 if test "x$qt_use_emb" != "xyes"; then
1281  QT_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
1282  QT_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
1283 else
1284  QT_REMOVE_FORBIDDEN(CXX, [-rpath])
1285  QT_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
1286 fi
1287 ])
1288
1289 AC_DEFUN(QT_CHECK_COMPILERS,
1290 [
1291   AC_PROG_CXX
1292
1293   QT_CHECK_COMPILER_FLAG(fexceptions,[QT_CXXFLAGS="$QT_CXXFLAGS -fexceptions"])
1294
1295   case "$host" in
1296       *-*-irix*)  test "$GXX" = yes && QT_CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $QT_CXXFLAGS" ;;
1297       *-*-sysv4.2uw*) QT_CXXFLAGS="-D_UNIXWARE $QT_CXXFLAGS";;
1298       *-*-sysv5uw7*) QT_CXXFLAGS="-D_UNIXWARE7 $QT_CXXFLAGS";;
1299       *-*-solaris*) 
1300         if test "$GXX" = yes; then
1301           libstdcpp=`$CXX -print-file-name=libstdc++.so`
1302           if test ! -f $libstdcpp; then
1303              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])
1304           fi
1305         fi
1306         ;;
1307   esac
1308
1309   QT_VALIDIFY_CXXFLAGS
1310
1311   AC_PROG_CXXCPP
1312 ])
1313
1314 AC_DEFUN(QT_CHECK_RPATH,
1315 [
1316 AC_MSG_CHECKING(for rpath)
1317 AC_ARG_ENABLE(rpath,
1318       [  --disable-rpath         do not use the rpath feature of ld],
1319       USE_RPATH=$enableval, USE_RPATH=yes)
1320
1321 if test -z "$QT_RPATH" && test "$USE_RPATH" = "yes"; then
1322
1323   QT_RPATH=""
1324   if test -n "$qt_libraries"; then
1325     QT_RPATH="$QT_RPATH -Wl,--rpath -Wl,\$(qt_libraries)"
1326   fi
1327   dnl $x_libraries is set to /usr/lib in case
1328   if test -n "$X_LIBS"; then
1329     QT_RPATH="$QT_RPATH -Wl,--rpath -Wl,\$(x_libraries)"
1330   fi
1331 fi
1332 AC_SUBST(x_libraries)
1333 AC_SUBST(QT_RPATH)
1334 AC_MSG_RESULT($USE_RPATH)
1335 ])
1336
1337
1338 AC_DEFUN(QT_CHECK_LIBPTHREAD,
1339 [
1340 AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] )
1341 AC_SUBST(LIBPTHREAD)
1342 ])
1343
1344 AC_DEFUN(QT_CHECK_PTHREAD_OPTION,
1345 [
1346     AC_ARG_ENABLE(kernel-threads, [  --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.],
1347         kde_use_kernthreads=$enableval, kde_use_kernthreads=no)
1348
1349     if test "$kde_use_kernthreads" = "yes"; then
1350       ac_save_CXXFLAGS="$CXXFLAGS"
1351       ac_save_CFLAGS="$CXXFLAGS"
1352       CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS"
1353       CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS"
1354       AC_CHECK_HEADERS(pthread/linuxthreads/pthread.h)
1355       CXXFLAGS="$ac_save_CXXFLAGS"
1356       CFLAGS="$ac_save_CFLAGS"
1357       if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then
1358         kde_use_kernthreads=no
1359       else
1360         dnl Add proper -I and -l statements
1361         AC_CHECK_LIB(lthread, pthread_join, [LIBPTHREAD="-llthread -llgcc_r"]) dnl for FreeBSD
1362         if test "x$LIBPTHREAD" = "x"; then
1363           kde_use_kernthreads=no
1364         else
1365           USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
1366         fi
1367       fi
1368     else 
1369       USE_THREADS=""
1370       if test -z "$LIBPTHREAD"; then
1371         QT_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-pthread"] )
1372       fi
1373     fi
1374
1375     case $host_os in
1376         solaris*)
1377                 QT_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
1378                 QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
1379                 ;;
1380         freebsd*)
1381                 QT_CXXFLAGS="$QT_CXXFLAGS -D_THREAD_SAFE"
1382                 ;;
1383         aix*)
1384                 QT_CXXFLAGS="$QT_CXXFLAGS -D_THREAD_SAFE"
1385                 LIBPTHREAD="$LIBPTHREAD -lc_r"
1386                 ;;
1387         linux*) QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT"
1388                 if test "$CXX" = "KCC"; then
1389                   QT_CXXFLAGS="$QT_CXXFLAGS --thread_safe"
1390                 fi
1391                 ;;
1392         *)
1393                 ;;
1394     esac
1395     AC_SUBST(USE_THREADS)
1396     AC_SUBST(LIBPTHREAD)
1397 ])
1398
1399 AC_DEFUN(QT_CHECK_THREADING,
1400 [
1401   AC_REQUIRE([QT_CHECK_LIBPTHREAD])
1402   AC_REQUIRE([QT_CHECK_PTHREAD_OPTION])
1403   dnl default is yes if libpthread is found and no if no libpthread is available
1404   if test -z "$LIBPTHREAD"; then
1405     if test -z "$USE_THREADS"; then
1406       kde_check_threading_default=no
1407     else
1408       kde_check_threading_default=yes
1409     fi
1410   else
1411     kde_check_threading_default=yes
1412   fi
1413   AC_ARG_ENABLE(threading, [  --disable-threading     disables threading even if libpthread found ],
1414    qt_use_threading=$enableval, qt_use_threading=$kde_check_threading_default)
1415   if test "x$qt_use_threading" = "xyes"; then
1416     AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)])
1417   fi
1418 ])