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