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