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