About to release 0.6.6
[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 AC_DEFUN(QT_CHECK_DIRECT,
966 [
967 AC_REQUIRE([QT_CHECK_VERSION])
968 AC_MSG_CHECKING([if Qt compiles without flags])
969 AC_CACHE_VAL(kde_cv_qt_direct,
970 [
971 AC_LANG_PUSH(C++)
972 ac_LD_LIBRARY_PATH_safe=$LD_LIBRARY_PATH
973 ac_LIBRARY_PATH="$LIBRARY_PATH"
974 ac_cxxflags_safe="$CXXFLAGS"
975 ac_ldflags_safe="$LDFLAGS"
976 ac_libs_safe="$LIBS"
977
978 CXXFLAGS="$CXXFLAGS -I$qt_includes"
979 LDFLAGS="$LDFLAGS $QT_LDFLAGS"
980 LIBS="$QT_LIBS"
981 LD_LIBRARY_PATH=
982 export LD_LIBRARY_PATH
983 LIBRARY_PATH=
984 export LIBRARY_PATH
985
986 QT_PRINT_PROGRAM
987
988 if AC_TRY_EVAL(ac_link) && test -s conftest; then
989   kde_cv_qt_direct="yes"
990 else
991   kde_cv_qt_direct="no"
992   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
993   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
994 fi
995
996 rm -f conftest*
997 CXXFLAGS="$ac_cxxflags_safe"
998 LDFLAGS="$ac_ldflags_safe"
999 LIBS="$ac_libs_safe"
1000
1001 LD_LIBRARY_PATH="$ac_LD_LIBRARY_PATH_safe"
1002 export LD_LIBRARY_PATH
1003 LIBRARY_PATH="$ac_LIBRARY_PATH"
1004 export LIBRARY_PATH
1005 AC_LANG_POP(C++)
1006 ])
1007
1008 if test "$kde_cv_qt_direct" = "yes"; then
1009   AC_MSG_RESULT(yes)
1010   $1
1011 else
1012   AC_MSG_RESULT(no)
1013   $2
1014 fi
1015 ])
1016
1017 dnl ------------------------------------------------------------------------
1018 dnl Try to find the Qt headers and libraries.
1019 dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
1020 dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
1021 dnl ------------------------------------------------------------------------
1022 dnl
1023 AC_DEFUN(QT_PATH_1_3,
1024 [
1025 AC_REQUIRE([QT_PATH_X])
1026 AC_REQUIRE([QT_CHECK_VERSION])
1027
1028 dnl ------------------------------------------------------------------------
1029 dnl Add configure flag to enable linking to MT version of Qt library.
1030 dnl ------------------------------------------------------------------------
1031
1032 AC_ARG_ENABLE(
1033   mt,
1034   [  --disable-mt            link to non-threaded Qt (deprecated)],
1035   qt_use_mt=$enableval,
1036   [
1037     if test $qt_ver = 3; then
1038       qt_use_mt=yes
1039     else
1040       qt_use_mt=no
1041     fi
1042   ]
1043 )
1044
1045 USING_QT_MT=""
1046
1047 dnl ------------------------------------------------------------------------
1048 dnl If we not get --disable-qt-mt then adjust some vars for the host.
1049 dnl ------------------------------------------------------------------------
1050
1051 QT_MT_LDFLAGS=
1052 QT_MT_LIBS=
1053 if test "x$qt_use_mt" = "xyes"; then
1054   QT_CHECK_THREADING
1055   if test "x$qt_use_threading" = "xyes"; then
1056     QT_CXXFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $QT_CXXFLAGS"
1057     QT_MT_LDFLAGS="$USE_THREADS"
1058     QT_MT_LIBS="$LIBPTHREAD"
1059   else
1060     qt_use_mt=no
1061   fi
1062 fi
1063 AC_SUBST(QT_MT_LDFLAGS)
1064 AC_SUBST(QT_MT_LIBS)
1065
1066 dnl ------------------------------------------------------------------------
1067 dnl If we haven't been told how to link to Qt, we work it out for ourselves.
1068 dnl ------------------------------------------------------------------------
1069 if test -z "$LIBQT_GLOB"; then
1070   if test "x$qt_use_emb" = "xyes"; then
1071     LIBQT_GLOB="libqte.*"
1072   else
1073     LIBQT_GLOB="libqt.*"
1074   fi
1075 fi
1076
1077 if test -z "$LIBQT"; then
1078 dnl ------------------------------------------------------------
1079 dnl If we got --enable-embedded then adjust the Qt library name.
1080 dnl ------------------------------------------------------------
1081   if test "x$qt_use_emb" = "xyes"; then
1082     qtlib="qte"
1083   else
1084     qtlib="qt"
1085   fi
1086 fi
1087
1088 if test -z "$LIBQPE"; then
1089 dnl ------------------------------------------------------------
1090 dnl If we got --enable-palmtop then add -lqpe to the link line
1091 dnl ------------------------------------------------------------
1092   if test "x$qt_use_emb" = "xyes"; then
1093     if test "x$qt_use_emb_palm" = "xyes"; then
1094       LIB_QPE="-lqpe"
1095     else
1096       LIB_QPE=""
1097     fi
1098   else
1099     LIB_QPE=""
1100   fi
1101 fi
1102
1103 dnl ------------------------------------------------------------------------
1104 dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
1105 dnl ------------------------------------------------------------------------
1106
1107 if test "x$qt_use_mt" = "xyes"; then
1108   if test -z "$LIBQT"; then
1109     LIBQT="-l$qtlib-mt"
1110   else
1111     LIBQT="$qtlib-mt"
1112   fi
1113   LIBQT_GLOB="lib$qtlib-mt.*"
1114   USING_QT_MT="using -mt"
1115 else
1116   LIBQT="-l$qtlib"
1117 fi
1118
1119 AC_MSG_CHECKING([for Qt])
1120
1121 QT_LIBS="$LIBQT $QT_LIBS"
1122 test -z "$QT_MT_LIBS" || QT_LIBS="$QT_LIBS $QT_MT_LIBS"
1123
1124 ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
1125 qt_libraries=""
1126 qt_includes=""
1127 AC_ARG_WITH(qt-dir,
1128     [  --with-qt-dir=DIR       where the root of Qt is installed ],
1129     [  ac_qt_includes="$withval"/include
1130        ac_qt_libraries="$withval"/lib
1131        ac_qt_bindir="$withval"/bin
1132     ])
1133
1134 AC_ARG_WITH(qt-includes,
1135     [  --with-qt-includes=DIR  where the Qt includes are. ],
1136     [
1137        ac_qt_includes="$withval"
1138     ])
1139
1140 kde_qt_libs_given=no
1141
1142 AC_ARG_WITH(qt-libraries,
1143     [  --with-qt-libraries=DIR where the Qt library is installed.],
1144     [  ac_qt_libraries="$withval"
1145        kde_qt_libs_given=yes
1146     ])
1147
1148 AC_CACHE_VAL(ac_cv_have_qt,
1149 [#try to guess Qt locations
1150
1151 qt_incdirs=""
1152 for dir in $qt_dirs; do
1153    qt_incdirs="$qt_incdirs $dir/include $dir"
1154 done
1155 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"
1156 if test ! "$ac_qt_includes" = "NO"; then
1157    qt_incdirs="$ac_qt_includes $qt_incdirs"
1158 fi
1159
1160 if test "$qt_ver" != "1"; then
1161   kde_qt_header=qstyle.h
1162 else
1163   kde_qt_header=qglobal.h
1164 fi
1165
1166 QT_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
1167 ac_qt_includes="$qt_incdir"
1168
1169 qt_libdirs=""
1170 for dir in $qt_dirs; do
1171    qt_libdirs="$qt_libdirs $dir/lib $dir"
1172 done
1173 qt_libdirs="$QTLIB $qt_libdirs /usr/X11R6/lib /usr/lib /usr/local/qt/lib $x_libraries"
1174 if test ! "$ac_qt_libraries" = "NO"; then
1175   qt_libdir=$ac_qt_libraries
1176 else
1177   qt_libdirs="$ac_qt_libraries $qt_libdirs"
1178   # if the Qt was given, the chance is too big that libqt.* doesn't exist
1179   qt_libdir=NONE
1180   for dir in $qt_libdirs; do
1181     try="ls -1 $dir/${LIBQT_GLOB}"
1182     if test -n "`$try 2> /dev/null`"; then qt_libdir=$dir; break; else echo "tried $dir" >&AS_MESSAGE_LOG_FD; fi
1183   done
1184 fi
1185
1186 ac_qt_libraries="$qt_libdir"
1187
1188 AC_LANG_PUSH(C++)
1189
1190 ac_cxxflags_safe="$CXXFLAGS"
1191 ac_ldflags_safe="$LDFLAGS"
1192 ac_libs_safe="$LIBS"
1193
1194 CXXFLAGS="$CXXFLAGS -I$qt_incdir $QT_CXXFLAGS"
1195 LDFLAGS="$LDFLAGS -L$qt_libdir $QT_LDFLAGS"
1196 LIBS="$LIBS $QT_LIBS"
1197
1198 QT_PRINT_PROGRAM
1199
1200 if AC_TRY_EVAL(ac_link) && test -s conftest; then
1201   rm -f conftest*
1202 else
1203   echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
1204   cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
1205   ac_qt_libraries="NO"
1206 fi
1207 rm -f conftest*
1208 CXXFLAGS="$ac_cxxflags_safe"
1209 LDFLAGS="$ac_ldflags_safe"
1210 LIBS="$ac_libs_safe"
1211
1212 AC_LANG_POP(C++)
1213 if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
1214   ac_cv_have_qt="have_qt=no"
1215   ac_qt_notfound=""
1216   missing_qt_mt=""
1217   if test "$ac_qt_includes" = NO; then
1218     if test "$ac_qt_libraries" = NO; then
1219       ac_qt_notfound="(headers and libraries)";
1220     else
1221       ac_qt_notfound="(headers)";
1222     fi
1223   else
1224     if test "x$qt_use_mt" = "xyes"; then
1225        missing_qt_mt="
1226 Make sure that you have compiled Qt with thread support!"
1227        ac_qt_notfound="(library $qtlib-mt)";
1228     else
1229        ac_qt_notfound="(library $qtlib)";
1230     fi
1231   fi
1232
1233   #AC_MSG_ERROR([Qt ($qt_minversion) $ac_qt_notfound not found. Please check your installation!
1234   #For more details about this problem, look at the end of config.log.$missing_qt_mt])
1235   have_qt="no"
1236 else
1237   have_qt="yes"
1238 fi
1239 ])
1240
1241 eval "$ac_cv_have_qt"
1242
1243 if test "$have_qt" != yes; then
1244   AC_MSG_RESULT([$have_qt]);
1245 else
1246   ac_cv_have_qt="have_qt=yes \
1247     ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
1248   AC_MSG_RESULT([libraries $ac_qt_libraries, headers $ac_qt_includes $USING_QT_MT])
1249
1250   qt_libraries="$ac_qt_libraries"
1251   qt_includes="$ac_qt_includes"
1252 fi
1253
1254 if test ! "$kde_qt_libs_given" = "yes"; then
1255 QT_CHECK_DIRECT(qt_libraries= ,[])
1256 fi
1257
1258 AC_SUBST(qt_libraries)
1259 AC_SUBST(qt_includes)
1260
1261 if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
1262  QT_INCLUDES=""
1263 else
1264  QT_INCLUDES="-I$qt_includes"
1265 fi
1266
1267 if test "$qt_libraries" != "$x_libraries" && test -n "$qt_libraries"; then
1268  QT_LDFLAGS="$QT_LDFLAGS -L$qt_libraries"
1269 fi
1270 test -z "$QT_MT_LDFLAGS" || QT_LDFLAGS="$QT_LDFLAGS $QT_MT_LDFLAGS"
1271
1272 AC_SUBST(QT_INCLUDES)
1273 QT_PATH_MOC
1274
1275
1276 AC_SUBST(LIB_QPE)
1277 ])
1278
1279 AC_DEFUN(QT_PATH,
1280 [
1281 QT_PATH_1_3
1282 QT_CHECK_RPATH
1283 ])
1284
1285
1286 AC_DEFUN(QT_CHECK_COMPILER_FLAG,
1287 [
1288 AC_MSG_CHECKING(whether $CXX supports -$1)
1289 kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
1290 AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
1291 [
1292   AC_LANG_PUSH(C++)
1293   save_CXXFLAGS="$CXXFLAGS"
1294   CXXFLAGS="$CXXFLAGS -$1"
1295   AC_TRY_LINK([],[ return 0; ], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
1296   CXXFLAGS="$save_CXXFLAGS"
1297   AC_LANG_POP(C++)
1298 ])
1299 if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
1300  AC_MSG_RESULT(yes)
1301  :
1302  $2
1303 else
1304  AC_MSG_RESULT(no)
1305  :
1306  $3
1307 fi
1308 ])
1309
1310 dnl QT_REMOVE_FORBIDDEN removes forbidden arguments from variables
1311 dnl use: QT_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
1312 dnl it's all white-space separated
1313 AC_DEFUN(QT_REMOVE_FORBIDDEN,
1314 [ __val=$$1
1315   __forbid=" $2 "
1316   if test -n "$__val"; then
1317     __new=""
1318     ac_save_IFS=$IFS
1319     IFS="       "
1320     for i in $__val; do
1321       case "$__forbid" in
1322         *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
1323         *) # Careful to not add spaces, where there were none, because otherwise
1324            # libtool gets confused, if we change e.g. CXX
1325            if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
1326       esac
1327     done
1328     IFS=$ac_save_IFS
1329     $1=$__new
1330   fi
1331 ])
1332
1333 dnl QT_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
1334 AC_DEFUN(QT_VALIDIFY_CXXFLAGS,
1335 [dnl
1336 if test "x$qt_use_emb" != "xyes"; then
1337  QT_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
1338  QT_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
1339 else
1340  QT_REMOVE_FORBIDDEN(CXX, [-rpath])
1341  QT_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
1342 fi
1343 ])
1344
1345 AC_DEFUN(QT_CHECK_COMPILERS,
1346 [
1347   AC_PROG_CXX
1348
1349   QT_CHECK_COMPILER_FLAG(fexceptions,[QT_CXXFLAGS="$QT_CXXFLAGS -fexceptions"])
1350
1351   case "$host" in
1352       *-*-irix*)  test "$GXX" = yes && QT_CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $QT_CXXFLAGS" ;;
1353       *-*-sysv4.2uw*) QT_CXXFLAGS="-D_UNIXWARE $QT_CXXFLAGS";;
1354       *-*-sysv5uw7*) QT_CXXFLAGS="-D_UNIXWARE7 $QT_CXXFLAGS";;
1355       *-*-solaris*) 
1356         if test "$GXX" = yes; then
1357           libstdcpp=`$CXX -print-file-name=libstdc++.so`
1358           if test ! -f $libstdcpp; then
1359              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])
1360           fi
1361         fi
1362         ;;
1363   esac
1364
1365   QT_VALIDIFY_CXXFLAGS
1366
1367   AC_PROG_CXXCPP
1368 ])
1369
1370 AC_DEFUN(QT_CHECK_RPATH,
1371 [
1372 AC_MSG_CHECKING(for rpath)
1373 AC_ARG_ENABLE(rpath,
1374       [  --disable-rpath         do not use the rpath feature of ld],
1375       USE_RPATH=$enableval, USE_RPATH=yes)
1376
1377 if test -z "$QT_RPATH" && test "$USE_RPATH" = "yes"; then
1378
1379   QT_RPATH=""
1380   if test -n "$qt_libraries"; then
1381     QT_RPATH="$QT_RPATH -Wl,--rpath -Wl,\$(qt_libraries)"
1382   fi
1383   dnl $x_libraries is set to /usr/lib in case
1384   if test -n "$X_LIBS"; then
1385     QT_RPATH="$QT_RPATH -Wl,--rpath -Wl,\$(x_libraries)"
1386   fi
1387 fi
1388 AC_SUBST(x_libraries)
1389 AC_SUBST(QT_RPATH)
1390 AC_MSG_RESULT($USE_RPATH)
1391 ])
1392
1393
1394 AC_DEFUN(QT_CHECK_LIBPTHREAD,
1395 [
1396 AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] )
1397 AC_SUBST(LIBPTHREAD)
1398 ])
1399
1400 AC_DEFUN(QT_CHECK_PTHREAD_OPTION,
1401 [
1402     AC_ARG_ENABLE(kernel-threads, [  --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.],
1403         kde_use_kernthreads=$enableval, kde_use_kernthreads=no)
1404
1405     if test "$kde_use_kernthreads" = "yes"; then
1406       ac_save_CXXFLAGS="$CXXFLAGS"
1407       ac_save_CFLAGS="$CXXFLAGS"
1408       CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS"
1409       CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS"
1410       AC_CHECK_HEADERS(pthread/linuxthreads/pthread.h)
1411       CXXFLAGS="$ac_save_CXXFLAGS"
1412       CFLAGS="$ac_save_CFLAGS"
1413       if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then
1414         kde_use_kernthreads=no
1415       else
1416         dnl Add proper -I and -l statements
1417         AC_CHECK_LIB(lthread, pthread_join, [LIBPTHREAD="-llthread -llgcc_r"]) dnl for FreeBSD
1418         if test "x$LIBPTHREAD" = "x"; then
1419           kde_use_kernthreads=no
1420         else
1421           USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
1422         fi
1423       fi
1424     else 
1425       USE_THREADS=""
1426       if test -z "$LIBPTHREAD"; then
1427         QT_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-pthread"] )
1428       fi
1429     fi
1430
1431     case $host_os in
1432         solaris*)
1433                 QT_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
1434                 QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
1435                 ;;
1436         freebsd*)
1437                 QT_CXXFLAGS="$QT_CXXFLAGS -D_THREAD_SAFE"
1438                 ;;
1439         aix*)
1440                 QT_CXXFLAGS="$QT_CXXFLAGS -D_THREAD_SAFE"
1441                 LIBPTHREAD="$LIBPTHREAD -lc_r"
1442                 ;;
1443         linux*) QT_CXXFLAGS="$QT_CXXFLAGS -D_REENTRANT"
1444                 if test "$CXX" = "KCC"; then
1445                   QT_CXXFLAGS="$QT_CXXFLAGS --thread_safe"
1446                 fi
1447                 ;;
1448         *)
1449                 ;;
1450     esac
1451     AC_SUBST(USE_THREADS)
1452     AC_SUBST(LIBPTHREAD)
1453 ])
1454
1455 AC_DEFUN(QT_CHECK_THREADING,
1456 [
1457   AC_REQUIRE([QT_CHECK_LIBPTHREAD])
1458   AC_REQUIRE([QT_CHECK_PTHREAD_OPTION])
1459   dnl default is yes if libpthread is found and no if no libpthread is available
1460   if test -z "$LIBPTHREAD"; then
1461     if test -z "$USE_THREADS"; then
1462       kde_check_threading_default=no
1463     else
1464       kde_check_threading_default=yes
1465     fi
1466   else
1467     kde_check_threading_default=yes
1468   fi
1469   AC_ARG_ENABLE(threading, [  --disable-threading     disables threading even if libpthread found ],
1470    qt_use_threading=$enableval, qt_use_threading=$kde_check_threading_default)
1471   if test "x$qt_use_threading" = "xyes"; then
1472     AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread (will enable threaded code)])
1473   fi
1474 ])