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