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