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