* trustdb.c (init_trustdb, get_validity): Don't use a changed trust model
[gnupg.git] / configure.ac
1 dnl Configure.ac script for GnuPG
2 dnl Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3 dnl
4 dnl This file is part of GnuPG.
5 dnl
6 dnl GnuPG is free software; you can redistribute it and/or modify
7 dnl it under the terms of the GNU General Public License as published by
8 dnl the Free Software Foundation; either version 2 of the License, or
9 dnl (at your option) any later version.
10 dnl 
11 dnl GnuPG is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 dnl GNU General Public License for more details.
15 dnl 
16 dnl You should have received a copy of the GNU General Public License
17 dnl along with this program; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 dnl
20 dnl (Process this file with autoconf to produce a configure script.)
21 dnlAC_REVISION($Revision$)dnl
22
23 AC_PREREQ(2.52)
24
25 # Remember to change the version number immediately *after* a release
26 # and remove the "-cvs" or "rc" suffix immediately *before* a release.
27 AC_INIT(gnupg, 1.3.2-cvs, bug-gnupg@gnu.org)
28 # Set development_version to yes if the minor number is odd or you
29 # feel that the default check for a development version is not
30 # sufficient.
31 development_version=yes
32
33 ALL_LINGUAS="de"
34
35 PACKAGE=$PACKAGE_NAME
36 VERSION=$PACKAGE_VERSION
37
38 AC_CONFIG_AUX_DIR(scripts)
39 AC_CONFIG_SRCDIR(g10/g10.c)
40 AC_CANONICAL_TARGET()
41 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
42 AM_CONFIG_HEADER(config.h)
43
44 AC_SUBST(PACKAGE)
45 AC_SUBST(VERSION)
46 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
47 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
48 AC_DEFINE(_GNU_SOURCE,1,[Some tests rely on this (stpcpy) and it should be used for new programs anyway])
49
50 dnl
51 dnl  Check for random module options
52 dnl
53 AC_MSG_CHECKING([which random module to use])
54 AC_ARG_ENABLE(static-rnd,
55     [  --enable-static-rnd=[egd|unix|linux|auto]  ],
56 [use_static_rnd=$enableval], [use_static_rnd=default] )
57
58 if test "$use_static_rnd" = no; then
59     use_static_rnd=default
60 fi
61
62 case "$use_static_rnd" in
63     egd | linux | unix | default )
64       AC_MSG_RESULT($use_static_rnd)
65       ;;
66     auto )
67       AC_MSG_RESULT(automagically selected at runtime)
68       ;;
69     * )
70       AC_MSG_RESULT(invalid argument)
71       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
72       ;;
73 esac
74
75 AC_ARG_WITH(egd-socket,
76     [  --with-egd-socket=NAME  use NAME for the EGD socket],
77             egd_socket_name="$withval", egd_socket_name="" )
78 AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
79                    [Define if you don't want the default EGD socket name.
80                     For details see cipher/rndegd.c])
81
82
83 dnl
84 dnl See whether the user wants to disable checking for /dev/random
85
86 AC_MSG_CHECKING([whether use of /dev/random is requested])
87 AC_ARG_ENABLE(dev-random,
88 [  --disable-dev-random    disable the use of dev random],
89     try_dev_random=$enableval, try_dev_random=yes)
90 AC_MSG_RESULT($try_dev_random)
91
92
93 dnl
94 dnl  Check other options
95 dnl
96
97 # We don't need idea but some people claim that they need it for
98 # research etc., so we allow to place an idea source code into the
99 # cipher directory and statically link it if available, otherwise we
100 # link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
101 AC_MSG_CHECKING(for extra cipher modules)
102 tmp=""
103 if test -f $srcdir/cipher/idea.c; then 
104    IDEA_O=idea.o
105    tmp=idea
106 else
107    IDEA_O=idea-stub.o
108    tmp=no
109 fi
110 AC_SUBST(IDEA_O)
111 AC_MSG_RESULT($tmp)
112
113 # if the static idea is present, disable dynload.
114 if test "$IDEA_O" = idea-stub.o ; then
115   AC_MSG_CHECKING([whether use of extensions is requested])
116   AC_ARG_ENABLE(dynload,
117   [  --disable-dynload       disable use of extensions],
118       try_dynload=$enableval, try_dynload=yes)
119   AC_MSG_RESULT($try_dynload)
120 else
121   try_dynload=no
122 fi
123
124 AC_MSG_CHECKING([whether assembler modules are requested])
125 AC_ARG_ENABLE(asm,
126 [  --disable-asm           do not use assembler modules],
127      try_asm_modules=$enableval, try_asm_modules=yes)
128 AC_MSG_RESULT($try_asm_modules)
129
130 AC_MSG_CHECKING([whether memory guard is requested])
131 AC_ARG_ENABLE(m-guard,
132     [  --enable-m-guard        enable memory guard facility],
133     use_m_guard=$enableval, use_m_guard=no)
134 AC_MSG_RESULT($use_m_guard)
135 if test "$use_m_guard" = yes ; then
136     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
137 fi
138
139 AC_MSG_CHECKING([whether to enable old-style TIGER digest support])
140 AC_ARG_ENABLE(old-tiger,
141     [  --enable-old-tiger      enable old-style TIGER digest support],
142     old_tiger=$enableval, old_tiger=no)
143 AC_MSG_RESULT($old_tiger)
144 if test "$old_tiger" = yes ; then
145     AC_DEFINE(USE_OLD_TIGER,1,[Define to use the old fake OID for TIGER digest support])
146 fi
147
148 AC_MSG_CHECKING([whether to enable external program execution])
149 AC_ARG_ENABLE(exec,
150     [  --disable-exec          disable all external program execution],
151     use_exec=$enableval, use_exec=yes)
152 AC_MSG_RESULT($use_exec)
153 if test "$use_exec" = no ; then
154     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
155 fi
156
157 if test "$use_exec" = yes ; then
158   AC_MSG_CHECKING([whether to enable photo ID viewing])
159   AC_ARG_ENABLE(photo-viewers,
160       [  --disable-photo-viewers disable photo ID viewers],
161       [if test "$enableval" = no ; then
162          AC_DEFINE(DISABLE_PHOTO_VIEWER,1,[define to disable photo viewing])
163       fi],enableval=yes)
164   gnupg_cv_enable_photo_viewers=$enableval
165   AC_MSG_RESULT($enableval)
166
167   if test "$gnupg_cv_enable_photo_viewers" = yes ; then
168     AC_MSG_CHECKING([whether to use a fixed photo ID viewer])
169     AC_ARG_WITH(photo-viewer,
170         [  --with-photo-viewer=FIXED_VIEWER  set a fixed photo ID viewer],
171         [if test "$withval" = yes ; then
172            withval=no
173         elif test "$withval" != no ; then
174            AC_DEFINE_UNQUOTED(FIXED_PHOTO_VIEWER,"$withval",
175                             [if set, restrict photo-viewer to this])
176         fi],withval=no)
177     AC_MSG_RESULT($withval)
178   fi
179
180   AC_MSG_CHECKING([whether to enable external keyserver helpers])
181   AC_ARG_ENABLE(keyserver-helpers,
182       [  --disable-keyserver-helpers  disable all external keyserver support],
183       [if test "$enableval" = no ; then
184          AC_DEFINE(DISABLE_KEYSERVER_HELPERS,1,
185                   [define to disable keyserver helpers])
186       fi],enableval=yes)
187   gnupg_cv_enable_keyserver_helpers=$enableval
188   AC_MSG_RESULT($enableval)
189
190   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
191     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
192     AC_ARG_ENABLE(ldap,
193     [  --disable-ldap          disable LDAP keyserver interface],
194         try_ldap=$enableval, try_ldap=yes)
195     AC_MSG_RESULT($try_ldap)
196
197     AC_MSG_CHECKING([whether HKP keyserver support is requested])
198     AC_ARG_ENABLE(hkp,
199     [  --disable-hkp           disable HKP keyserver interface],
200         try_hkp=$enableval, try_hkp=yes)
201     AC_MSG_RESULT($try_hkp)
202
203     if test "$try_hkp" = yes ; then
204       AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
205     fi
206
207     AC_MSG_CHECKING([whether email keyserver support is requested])
208     AC_ARG_ENABLE(mailto,
209     [  --disable-mailto        disable email keyserver interface],
210         try_mailto=$enableval, try_mailto=yes)
211     AC_MSG_RESULT($try_mailto)
212     fi
213
214     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
215     AC_ARG_ENABLE(keyserver-path,
216         [  --disable-keyserver-path disable the exec-path option for keyserver helpers],
217         [if test "$enableval" = no ; then
218          AC_DEFINE(DISABLE_KEYSERVER_PATH,1,[define to disable exec-path for keyserver helpers])
219         fi],enableval=yes)
220     AC_MSG_RESULT($enableval)
221   fi
222
223 AC_MSG_CHECKING([whether the included zlib is requested])
224 AC_ARG_WITH(included-zlib,
225     [  --with-included-zlib    use the zlib code included here],
226 [g10_force_zlib=yes], [g10_force_zlib=no] )
227 AC_MSG_RESULT($g10_force_zlib)
228
229 dnl
230 dnl Check whether we want to use Linux capabilities
231 dnl
232 AC_MSG_CHECKING([whether use of capabilities is requested])
233 AC_ARG_WITH(capabilities,
234     [  --with-capabilities     use linux capabilities [default=no]],
235 [use_capabilities="$withval"],[use_capabilities=no])
236 AC_MSG_RESULT($use_capabilities)
237
238
239 AH_BOTTOM([
240 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
241 #define EXEC_TEMPFILE_ONLY
242 #endif
243
244 #include "g10defs.h"
245 ])
246
247
248 AM_MAINTAINER_MODE
249
250 dnl Checks for programs.
251
252 AC_PROG_MAKE_SET
253 AM_SANITY_CHECK
254 missing_dir=`cd $ac_aux_dir && pwd`
255 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
256 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
257 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
258 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
259 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
260 AC_PROG_CC
261 AC_PROG_CPP
262 AC_PATH_PROG(PERL,"perl")
263 AC_ISC_POSIX
264 AC_SYS_LARGEFILE
265 AC_PROG_INSTALL
266 AC_PROG_AWK
267 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
268 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
269 GNUPG_CHECK_FAQPROG
270 GNUPG_CHECK_DOCBOOK_TO_TEXI
271
272 MPI_OPT_FLAGS=""
273
274
275 try_gettext=yes
276 case "${target}" in
277     *-*-mingw32*)
278         # special stuff for Windoze NT
279         ac_cv_have_dev_random=no
280         AC_DEFINE(USE_ONLY_8DOT3,1,
281                   [set this to limit filenames to the 8.3 format])
282         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
283                   [defined if we must run on a stupid file system])
284         AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
285                   [defined if we run on some of the PCDOS like systems 
286                    (DOS, Windoze. OS/2) with special properties like
287                     no file modes])
288         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
289                   [because the Unix gettext has too much overhead on
290                    MingW32 systems and these systems lack Posix functions,
291                    we use a simplified version of gettext])
292         try_gettext="no"
293         ;;
294     i?86-emx-os2 | i?86-*-os2*emx )
295         # OS/2 with the EMX environment
296         ac_cv_have_dev_random=no
297         AC_DEFINE(HAVE_DRIVE_LETTERS)
298         AC_DEFINE(HAVE_DOSISH_SYSTEM)
299         try_gettext="no"
300         ;;
301
302     i?86-*-msdosdjgpp*)
303         # DOS with the DJGPP environment
304         ac_cv_have_dev_random=no
305         AC_DEFINE(HAVE_DRIVE_LETTERS)
306         AC_DEFINE(HAVE_DOSISH_SYSTEM)
307         try_gettext="no"
308         ;;
309
310     *-*-freebsd*)
311        # FreeBSD
312        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
313        LDFLAGS="$LDFLAGS -L/usr/local/lib"
314        ;;
315
316     *-*-hpux*)
317         if test -z "$GCC" ; then
318             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
319         fi
320         ;;
321     *-dec-osf4*)
322         if test -z "$GCC" ; then
323             # Suppress all warnings
324             # to get rid of the unsigned/signed char mismatch warnings.
325             CFLAGS="$CFLAGS -w"
326         fi
327         ;;
328     *-dec-osf5*)
329         if test -z "$GCC" ; then
330             # Use the newer compiler `-msg_disable ptrmismatch' to
331             # get rid of the unsigned/signed char mismatch warnings.
332             # Using this may hide other pointer mismatch warnings, but
333             # it at least lets other warning classes through
334             CFLAGS="$CFLAGS -msg_disable ptrmismatch"
335         fi
336         ;;
337     m68k-atari-mint)
338         ;;
339     *)
340        ;;
341 esac
342
343 AC_SUBST(MPI_OPT_FLAGS)
344 GNUPG_SYS_SYMBOL_UNDERSCORE
345
346 dnl Must check for network library requirements before doing link tests
347 dnl for ldap, for example. If ldap libs are static (or dynamic and without
348 dnl ELF runtime link paths), then link will fail and LDAP support won't
349 dnl be detected.
350
351 AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
352         [NETLIBS="-lnsl $NETLIBS"]))
353 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
354         [NETLIBS="-lsocket $NETLIBS"]))
355
356 # Try and link a LDAP test program to weed out unusable LDAP
357 # libraries.  -lldap [-llber [-lresolv]] is for OpenLDAP.  OpenLDAP in
358 # general is terrible with creating weird dependencies.  If all else
359 # fails, the user can play guess-the-dependency by using something
360 # like ./configure LDAPLIBS="-Lfoo -lbar"
361
362 if test "$try_ldap" = yes ; then
363   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
364     _ldap_save_libs=$LIBS
365     LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
366
367     AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
368     AC_TRY_LINK([#include <ldap.h>],[ldap_open("foobar",1234);],
369                 [gnupg_cv_func_ldap_init=yes],[gnupg_cv_func_ldap_init=no])
370     AC_MSG_RESULT([$gnupg_cv_func_ldap_init])
371
372     if test $gnupg_cv_func_ldap_init = no; then
373       AC_MSG_CHECKING([whether I can make LDAP be sane with lber.h])
374       AC_TRY_LINK([#include <lber.h>
375 #include <ldap.h>],[ldap_open("foobar",1234);],
376          [gnupg_cv_func_ldaplber_init=yes],[gnupg_cv_func_ldaplber_init=no])
377       AC_MSG_RESULT([$gnupg_cv_func_ldaplber_init])
378     fi
379
380     if test "$gnupg_cv_func_ldaplber_init" = yes ; then
381        AC_DEFINE(NEED_LBER_H,1,[Define if the LDAP library requires including lber.h before ldap.h])
382     fi
383
384     if test "$gnupg_cv_func_ldap_init" = yes || \
385         test "$gnupg_cv_func_ldaplber_init" = yes ; then
386        LDAPLIBS=$MY_LDAPLIBS
387        GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
388
389        AC_MSG_CHECKING([whether LDAP supports ldap_get_option])
390
391        if test "$gnupg_cv_func_ldap_init" = yes ; then
392           AC_TRY_LINK([#include <ldap.h>],
393              [ldap_get_option((void *)0,0,(void *)0);],
394              [gnupg_cv_func_ldap_get_option=yes],
395              [gnupg_cv_func_ldap_get_option=no])
396         else
397           AC_TRY_LINK([#include <lber.h>
398 #include <ldap.h>],[ldap_get_option((void *)0,0,(void *)0);],
399              [gnupg_cv_func_ldap_get_option=yes],
400              [gnupg_cv_func_ldap_get_option=no])
401        fi
402
403        AC_MSG_RESULT([$gnupg_cv_func_ldap_get_option])
404
405        if test "$gnupg_cv_func_ldap_get_option" = yes ; then
406           AC_DEFINE(HAVE_LDAP_GET_OPTION,1,[Define if the LDAP library has ldap_get_option])
407        else
408           AC_MSG_CHECKING([whether LDAP supports ld_errno])
409
410           if test "$gnupg_cv_func_ldap_init" = yes ; then
411             AC_TRY_COMPILE([#include <ldap.h>],
412                [LDAP *ldap; ldap->ld_errno;],
413                [gnupg_cv_func_ldap_ld_errno=yes],
414                [gnupg_cv_func_ldap_ld_errno=no])
415            else
416             AC_TRY_LINK([#include <lber.h>
417 #include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
418                [gnupg_cv_func_ldap_ld_errno=yes],
419                [gnupg_cv_func_ldap_ld_errno=no])
420           fi
421
422           AC_MSG_RESULT([$gnupg_cv_func_ldap_ld_errno])
423
424           if test "$gnupg_cv_func_ldap_ld_errno" = yes ; then
425              AC_DEFINE(HAVE_LDAP_LD_ERRNO,1,[Define if the LDAP library supports ld_errno])
426           fi
427        fi
428     fi
429
430     LIBS=$_ldap_save_libs
431
432     if test "$GPGKEYS_LDAP" != "" ; then break; fi
433   done
434 fi
435
436 AC_SUBST(GPGKEYS_LDAP)
437 AC_SUBST(LDAPLIBS)
438
439 dnl This isn't necessarily sendmail itself, but anything that gives a
440 dnl sendmail-ish interface to the outside world.  That includes qmail,
441 dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
442
443 if test "$try_mailto" = yes ; then
444   AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
445
446   if test "$with_mailprog" = yes ; then
447     AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
448     if test "$ac_cv_path_SENDMAIL" ; then
449       GPGKEYS_MAILTO="gpgkeys_mailto"
450     fi
451   elif test "$with_mailprog" != no ; then
452     AC_MSG_CHECKING([for a mail transport program])
453     AC_SUBST(SENDMAIL,$with_mailprog)
454     AC_MSG_RESULT($with_mailprog)
455     GPGKEYS_MAILTO="gpgkeys_mailto"
456   fi
457 fi
458
459 AC_SUBST(GPGKEYS_MAILTO)
460
461 case "${target}" in
462     *-*-mingw32*)
463         PRINTABLE_OS_NAME="MingW32"
464         ;;
465     *-*-cygwin*)
466         PRINTABLE_OS_NAME="Cygwin"
467         ;;
468     i?86-emx-os2 | i?86-*-os2*emx )
469         PRINTABLE_OS_NAME="OS/2"
470         ;;
471     i?86-*-msdosdjgpp*)
472         PRINTABLE_OS_NAME="MSDOS/DJGPP"
473         try_dynload=no
474         ;;
475     *-linux*)
476         PRINTABLE_OS_NAME="GNU/Linux"
477         ;;
478 dnl let that after linux to avoid gnu-linux problems
479     *-gnu*)
480         PRINTABLE_OS_NAME="GNU/Hurd"
481         ;;
482     *)
483         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
484         ;;
485 esac
486 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
487                    [A human readable text with the name of the OS])
488
489
490 #
491 # 1. Set names of random devices
492 #
493 NAME_OF_DEV_RANDOM="/dev/random"
494 NAME_OF_DEV_URANDOM="/dev/urandom"
495 case "${target}" in
496     *-openbsd*)
497         NAME_OF_DEV_RANDOM="/dev/srandom"
498         NAME_OF_DEV_URANDOM="/dev/urandom"
499         ;;
500 esac
501 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
502                    [defined to the name of the strong random device])
503 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
504                    [defined to the name of the weaker random device])
505 AC_SUBST(MPI_OPT_FLAGS)
506
507
508 dnl Checks for libraries.
509
510 if test "$try_gettext" = yes; then
511   AM_GNU_GETTEXT
512 else
513   USE_NLS=no
514   USE_INCLUDED_LIBINTL=no
515   BUILD_INCLUDED_LIBINTL=no
516   AC_SUBST(USE_NLS)
517   AC_SUBST(USE_INCLUDED_LIBINTL)
518   AC_SUBST(BUILD_INCLUDED_LIBINTL)
519 fi
520
521
522 if test "$try_dynload" = yes ; then
523   AC_CHECK_LIB(dl,dlopen)
524   if test "$ac_cv_lib_dl_dlopen" = "yes"; then
525     AC_DEFINE(USE_DYNAMIC_LINKING,1,
526               [define to enable the use of extensions])
527     AC_DEFINE(HAVE_DL_DLOPEN,1,
528               [Defined when the dlopen function family is available])
529   else
530     AC_CHECK_FUNCS(dlopen)
531     if test "$ac_cv_func_dlopen" = "yes"; then
532       AC_DEFINE(USE_DYNAMIC_LINKING)
533       AC_DEFINE(HAVE_DL_DLOPEN)
534     fi
535   fi
536 else
537   AC_MSG_CHECKING(for dynamic loading)
538   DYNLINK_LDFLAGS=
539   DYNLINK_MOD_CFLAGS=
540   AC_MSG_RESULT(has been disabled)
541 fi
542
543 dnl Checks for header files.
544 AC_HEADER_STDC
545 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h)
546
547 dnl Checks for typedefs, structures, and compiler characteristics.
548 AC_C_CONST
549 AC_C_INLINE
550 AC_C_VOLATILE
551 AC_TYPE_SIZE_T
552 AC_TYPE_MODE_T
553 AC_TYPE_SIGNAL
554 AC_DECL_SYS_SIGLIST
555
556 GNUPG_CHECK_ENDIAN
557
558 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
559 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
560 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
561 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
562 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
563
564 AC_CHECK_SIZEOF(unsigned short, 2)
565 AC_CHECK_SIZEOF(unsigned int, 4)
566 AC_CHECK_SIZEOF(unsigned long, 4)
567 AC_CHECK_SIZEOF(unsigned long long, 0)
568
569 if test "$ac_cv_sizeof_unsigned_short" = "0" \
570    || test "$ac_cv_sizeof_unsigned_int" = "0" \
571    || test "$ac_cv_sizeof_unsigned_long" = "0"; then
572     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
573 fi
574
575 dnl Checks for library functions.
576 AC_FUNC_FSEEKO
577 AC_FUNC_VPRINTF
578 AC_FUNC_FORK
579 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
580 AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid)
581 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
582 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
583 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat)
584 AC_REPLACE_FUNCS(mkdtemp)
585
586 #
587 # check for gethrtime and run a testprogram to see whether
588 # it is broken.  It has been reported that some Solaris and HP UX systems 
589 # raise an SIGILL
590 #
591 AC_CACHE_CHECK([for gethrtime], 
592                [gnupg_cv_func_gethrtime],
593                [AC_TRY_LINK([#include <sys/times.h>],[
594                    hrtime_t tv;
595                    tv = gethrtime();
596                  ],
597                  [gnupg_cv_func_gethrtime=yes],
598                  [gnupg_cv_func_gethrtime=no])
599                ])
600 if test $gnupg_cv_func_gethrtime = yes; then
601      AC_DEFINE([HAVE_GETHRTIME], 1,
602                [Define if you have the `gethrtime(2)' function.])
603      AC_CACHE_CHECK([whether gethrtime is broken], 
604                [gnupg_cv_func_broken_gethrtime],
605                [AC_TRY_RUN([
606                    #include <sys/times.h>
607                    int main () {
608                    hrtime_t tv;
609                    tv = gethrtime(); 
610                  }
611                  ],
612                  [gnupg_cv_func_broken_gethrtime=no],
613                  [gnupg_cv_func_broken_gethrtime=yes],
614                  [gnupg_cv_func_broken_gethrtime=assume-no])
615                 ])
616     if test $gnupg_cv_func_broken_gethrtime = yes; then
617       AC_DEFINE([HAVE_BROKEN_GETHRTIME], 1,
618       [Define if `gethrtime(2)' does not work correctly i.e. issues a SIGILL.])
619     fi
620 fi
621      
622
623 GNUPG_CHECK_MLOCK
624 GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
625
626 dnl
627 dnl Check whether we can use Linux capabilities as requested
628 dnl
629 if test "$use_capabilities" = "yes" ; then
630 use_capabilities=no
631 AC_CHECK_HEADERS(sys/capability.h)
632 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
633   AC_CHECK_LIB(cap, cap_init, ac_need_libcap=1)
634   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
635      AC_DEFINE(USE_CAPABILITIES,1,
636                [define if capabilities should be used])
637      LIBS="$LIBS -lcap"
638      use_capabilities=yes
639   fi
640 fi
641 if test "$use_capabilities" = "no" ; then
642     AC_MSG_WARN([[
643 ***
644 *** The use of capabilities on this system is not possible.
645 *** You need a recent Linux kernel and some patches:
646 ***   fcaps-2.2.9-990610.patch      (kernel patch for 2.2.9)
647 ***   fcap-module-990613.tar.gz     (kernel module)
648 ***   libcap-1.92.tar.gz            (user mode library and utilities)
649 *** And you have to configure the kernel with CONFIG_VFS_CAP_PLUGIN
650 *** set (filesystems menu). Be warned: This code is *really* ALPHA.
651 ***]])
652 fi
653 fi
654
655
656 GNUPG_CHECK_IPC
657 if test "$ac_cv_header_sys_shm_h" = "yes"; then
658   AC_DEFINE(USE_SHM_COPROCESSING,1,
659             [define if the shared memory interface should be made available])
660 fi
661
662 dnl
663 dnl check whether we have a random device
664 dnl
665 if test "$try_dev_random" = yes ; then
666     AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
667     [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
668       ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
669     if test "$ac_cv_have_dev_random" = yes; then
670         AC_DEFINE(HAVE_DEV_RANDOM,1,
671                  [defined if the system supports a random device] )
672     fi
673 else
674     AC_MSG_CHECKING(for random device)
675     ac_cv_have_dev_random=no
676     AC_MSG_RESULT(has been disabled)
677 fi
678
679
680 dnl
681 dnl Figure out the default random module.
682 dnl
683 random_modules=""
684 if test "$use_static_rnd" = default; then
685      if test "$ac_cv_have_dev_random" = yes; then
686         random_modules="rndlinux"
687      else
688          case "${target}" in
689             *-*-mingw32*|*-*-cygwin*)
690                 random_modules="rndw32"
691                 ;;
692             i?86-emx-os2|i?86-*-os2*emx)
693                 random_modules="rndos2"
694                 ;;
695             m68k-atari-mint)
696                 random_modules="rndatari"
697                 ;;
698             i?86-*-msdosdjgpp*)
699                 :
700                 ;;
701             *)
702                 random_modules="rndlinux rndegd rndunix"
703                 AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
704                           [Allow to select random modules at runtime.])
705                 ;;
706          esac
707      fi
708 else
709   if test "$use_static_rnd" = auto; then
710      random_modules="rndlinux rndegd rndunix"
711      AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
712   else
713      random_modules="rnd$use_static_rnd";
714   fi
715 fi
716
717 if test -z "$random_modules"; then
718    AC_MSG_ERROR(no random module available)
719 fi
720 print_egd_warning=no
721 for rndmod in $random_modules "" ; do
722   case "$rndmod" in
723     rndlinux)
724          AC_DEFINE(USE_RNDLINUX,1, 
725                   [Defined if the /dev/random based RNG should be used.])
726          ;;
727     rndunix)
728          AC_DEFINE(USE_RNDUNIX,1, 
729                   [Defined if the default Unix RNG should be used.])
730          print_egd_warning=yes
731           ;;
732     rndegd)
733          AC_DEFINE(USE_RNDEGD,1, 
734                   [Defined if the EGD based RNG should be used.])
735          EGDLIBS=$NETLIBS
736          AC_SUBST(EGDLIBS)
737          ;;
738     rndw32)
739          AC_DEFINE(USE_RNDW32,1, 
740                   [Defined if the Windows specific RNG should be used.])
741         ;;
742    esac
743 done
744
745 dnl setup assembler stuff
746 AC_MSG_CHECKING(for mpi assembler functions)
747 if test -f $srcdir/mpi/config.links ; then
748     . $srcdir/mpi/config.links
749     AC_CONFIG_LINKS("$mpi_ln_list")
750     ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
751     ac_cv_mpi_sflags="$mpi_sflags"
752     ac_cv_mpi_config_done="yes"
753     AC_MSG_RESULT(done)
754 else
755     AC_MSG_RESULT(failed)
756     AC_MSG_ERROR([mpi/config.links missing!])
757 fi
758 MPI_EXTRA_ASM_OBJS=""
759 show_extraasm=""
760 if test "$ac_cv_mpi_extra_asm_modules" != ""; then
761 for i in $ac_cv_mpi_extra_asm_modules; do
762     show_extraasm="$show_extraasm $i"
763     MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
764 done
765 fi
766 AC_SUBST(MPI_EXTRA_ASM_OBJS)
767 MPI_SFLAGS="$ac_cv_mpi_sflags"
768 AC_SUBST(MPI_SFLAGS)
769
770 # Sanity check regex.  Tests adapted from mutt.
771
772 AC_MSG_CHECKING([whether regular expression support is requested])
773 AC_ARG_ENABLE(regex,
774 [  --disable-regex         do not handle regular expressions in trust sigs],
775      use_regex=$enableval, use_regex=yes)
776 AC_MSG_RESULT($use_regex)
777
778 if test "$use_regex" = yes ; then
779   AC_MSG_CHECKING([whether the included regex lib is requested])
780   AC_ARG_WITH(included-regex,
781       [  --with-included-regex   use the included GNU regex library],
782       [gnupg_cv_included_regex=yes],[gnupg_cv_included_regex=no])
783   AC_MSG_RESULT($gnupg_cv_included_regex)
784
785   if test $gnupg_cv_included_regex = no ; then
786      # Does the system have regex functions at all?
787      AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
788                            gnupg_cv_included_regex=yes)
789   fi
790
791   if test $gnupg_cv_included_regex = no ; then
792      AC_CACHE_CHECK([whether your system's regexp library is broken],
793        [gnupg_cv_regex_broken],
794        AC_TRY_RUN([
795 #include <unistd.h>
796 #include <regex.h>
797 main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }],
798        gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
799
800      if test $gnupg_cv_regex_broken = yes ; then
801       AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
802       gnupg_cv_included_regex=yes
803      fi
804   fi
805
806   if test $gnupg_cv_included_regex = yes; then
807      AC_DEFINE(USE_GNU_REGEX,1,[ Define if you want to use the included regex lib ])
808      AC_SUBST(REGEX_O,regex.o)
809   fi
810 else
811
812   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
813 fi
814
815 dnl Do we have zlib? Must do it here because Solaris failed
816 dnl when compiling a conftest (due to the "-lz" from LIBS).
817 use_local_zlib=yes
818 if test "$g10_force_zlib" = "yes"; then
819   :
820 else
821   _cppflags="${CPPFLAGS}"
822   _ldflags="${LDFLAGS}"
823
824   AC_ARG_WITH(zlib,
825   [  --with-zlib=DIR         use libz in DIR],[
826     if test -d "$withval"; then
827       CPPFLAGS="${CPPFLAGS} -I$withval/include"
828       LDFLAGS="${LDFLAGS} -L$withval/lib"
829     fi
830   ])
831
832   AC_CHECK_HEADER(zlib.h,
833       AC_CHECK_LIB(z, deflateInit2_,
834        use_local_zlib=no
835        LIBS="$LIBS -lz",
836        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
837        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
838 fi
839  
840 if test "$use_local_zlib" = yes ; then
841     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
842     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
843     ZLIBS="../zlib/libzlib.a"
844 else
845     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
846     ZLIBS=
847 fi
848 AC_SUBST(ZLIBS)
849
850
851 # Allow users to append something to the version string without
852 # flagging it as development version.  The user version parts is
853 # considered everything after a dash. 
854 if test "$development_version" != yes; then
855   changequote(,)dnl
856   tmp_pat='[a-zA-Z]'
857   changequote([,])dnl
858   if echo "$VERSION" | sed 's/-.*//' | grep "$tmp_pat" >/dev/null ; then
859     development_version=yes
860   fi
861 fi
862 if test "$development_version" = yes; then
863     AC_DEFINE(IS_DEVELOPMENT_VERSION,1,
864             [Defined if this is not a regular release])
865 fi
866
867 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
868
869 GNUPG_CHECK_GNUMAKE
870
871 # add some extra libs here so that previous tests don't fail for
872 # mysterious reasons - the final link step should bail out. 
873 case "${target}" in
874     *-*-mingw32*)
875         LIBS="$LIBS -lwsock32"
876         ;;
877     *)
878        ;;
879 esac
880
881
882 if test "$GCC" = yes; then
883     if test "$USE_MAINTAINER_MODE" = "yes"; then
884         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
885     else
886         CFLAGS="$CFLAGS -Wall"
887     fi
888 fi
889
890 AC_SUBST(NETLIBS)
891
892
893 if test "$print_egd_warning" = yes; then
894   AC_MSG_WARN([[
895 ***
896 *** The performance of the UNIX random gatherer module is not very good
897 *** and it does not keep the entropy pool over multiple invocations of
898 *** GnuPG.  The suggested way to overcome this problem is to use the
899 ***
900 ***               Entropy Gathering Daemon (EGD)
901 ***
902 *** which provides a entropy source for the whole system.  It is written
903 *** in Perl and available at the GnuPG FTP servers.  For more information
904 *** consult the GnuPG webpages:
905 ***
906 ***           http://www.gnupg.org/download.html#egd
907 ***
908 *** You may want to run ./configure with --enable-static-rnd=egd to use it.
909 ***]])
910 fi
911
912
913
914 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
915
916 AC_SUBST(GNUPG_LIBEXECDIR,"${libexecdir}/gnupg")
917
918 AC_CONFIG_COMMANDS(g10defs.h,[[
919 cat >g10defs.tmp <<G10EOF
920 /* Generated automatically by configure */
921 #ifdef HAVE_DRIVE_LETTERS
922   #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
923   #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
924   #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
925   #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
926   #define GNUPG_HOMEDIR     "c:\\\\gnupg"
927 #else
928   #define G10_LOCALEDIR     "${datadir}/locale"
929   #define GNUPG_LIBDIR      "${libdir}/gnupg"
930   #define GNUPG_LIBEXECDIR  "${libexecdir}/gnupg"
931   #define GNUPG_DATADIR     "${datadir}/gnupg"
932   #ifdef __VMS
933     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
934   #else
935     #define GNUPG_HOMEDIR "~/.gnupg" 
936   #endif
937 #endif
938 /* those are here to be redefined by handcrafted g10defs.h.
939    Please note that the string version must not contain more
940    than one character because the using code assumes strlen()==1 */
941 #ifdef HAVE_DOSISH_SYSTEM
942 #define DIRSEP_C '\\\\'
943 #define EXTSEP_C '.'
944 #define DIRSEP_S "\\\\"
945 #define EXTSEP_S "."
946 #else
947 #define DIRSEP_C '/'
948 #define EXTSEP_C '.'
949 #define DIRSEP_S "/"
950 #define EXTSEP_S "."
951 #endif
952 G10EOF
953 cat mpi/mpi-asm-defs.h >>g10defs.tmp 
954 if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then
955     echo "g10defs.h is unchanged"
956     rm -f g10defs.tmp
957 else
958     rm -f g10defs.h
959     mv g10defs.tmp g10defs.h
960     echo "g10defs.h created"
961 fi
962 ]],[[
963 prefix=$prefix
964 exec_prefix=$exec_prefix
965 libdir=$libdir
966 libexecdir=$libexecdir
967 datadir=$datadir
968 DATADIRNAME=$DATADIRNAME
969 ]])
970
971
972 AC_CONFIG_FILES([
973 Makefile
974 intl/Makefile
975 po/Makefile.in
976 util/Makefile
977 mpi/Makefile
978 cipher/Makefile
979 g10/Makefile
980 keyserver/Makefile
981 keyserver/gpgkeys_mailto
982 keyserver/gpgkeys_test
983 doc/Makefile
984 tools/Makefile
985 zlib/Makefile
986 checks/Makefile
987 ])
988 AC_OUTPUT
989
990 # Give some feedback
991 echo
992 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
993 if test -n "$show_extraasm"; then
994   echo "  Extra cpu specific functions:$show_extraasm"
995 fi
996 echo