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