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