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