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