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