* misc.c (is_secured_filename): New.
[gnupg.git] / configure.ac
index fb096a6..bc79f88 100644 (file)
@@ -1,6 +1,6 @@
 dnl Configure.ac script for GnuPG
-dnl Copyright (C) 1998, 1999, 2000, 2001, 2002,
-dnl               2003 Free Software Foundation, Inc.
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+dnl               2004 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GnuPG.
 dnl
@@ -21,11 +21,12 @@ dnl
 dnl (Process this file with autoconf to produce a configure script.)
 dnlAC_REVISION($Revision$)dnl
 
-AC_PREREQ(2.57)
+AC_PREREQ(2.59)
+min_automake_version="1.7.9"
 
 # Remember to change the version number immediately *after* a release
 # and remove the "-cvs" or "rc" suffix immediately *before* a release.
-AC_INIT(gnupg, 1.3.5-cvs, bug-gnupg@gnu.org)
+AC_INIT(gnupg, 1.3.91-cvs, bug-gnupg@gnu.org)
 # Set development_version to yes if the minor number is odd or you
 # feel that the default check for a development version is not
 # sufficient.
@@ -101,12 +102,29 @@ if test "$use_m_guard" = yes ; then
     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
 fi
 
+AC_MSG_CHECKING([whether SELinux support is requested])
+AC_ARG_ENABLE(selinux-support,
+              AC_HELP_STRING([--enable-selinux-support],
+                             [enable SELinux support]),
+              selinux_support=$enableval, selinux_support=no)
+AC_MSG_RESULT($selinux_support)
+
 AC_MSG_CHECKING([whether OpenPGP card support is requested])
 AC_ARG_ENABLE(card-support,
-    [  --enable-card-support   enable OpenPGP card support],
-    card_support=$enableval, card_support=no)
+              AC_HELP_STRING([--disable-card-support],
+                             [disable OpenPGP card support]),
+              card_support=$enableval, card_support=yes)
 AC_MSG_RESULT($card_support)
 
+AC_MSG_CHECKING([whether readline support is requested])
+AC_ARG_WITH(readline,
+              AC_HELP_STRING([--without-readline],
+                             [do not support fancy command line editing]),
+              [readline_support="$withval"], [readline_support=yes])  
+case "$readline_support" in yes);; no);; *)readline_support=yes;; esac
+AC_MSG_RESULT($readline_support)
+
+
 dnl See if we are disabling any algorithms or features for a smaller
 dnl binary
 
@@ -286,6 +304,19 @@ if test "$use_exec" = yes ; then
         try_hkp=$enableval, try_hkp=yes)
     AC_MSG_RESULT($try_hkp)
 
+    AC_MSG_CHECKING([whether HTTP key fetching support is requested])
+    AC_ARG_ENABLE(http,
+      AC_HELP_STRING([--disable-http],[disable HTTP key fetching interface]),
+        try_http=$enableval, try_http=yes)
+    AC_MSG_RESULT($try_http)
+
+    AC_MSG_CHECKING([whether Finger key fetching support is requested])
+    AC_ARG_ENABLE(finger,
+      AC_HELP_STRING([--disable-finger],
+                     [disable Finger key fetching interface]),
+        try_finger=$enableval, try_finger=yes)
+    AC_MSG_RESULT($try_finger)
+
     AC_MSG_CHECKING([whether email keyserver support is requested])
     AC_ARG_ENABLE(mailto,
     [  --disable-mailto        disable email keyserver interface],
@@ -309,6 +340,31 @@ AC_ARG_WITH(included-zlib,
 AC_MSG_RESULT($g10_force_zlib)
 
 dnl
+dnl Check for the key/uid cache size.  This can't be zero, but can be
+dnl pretty small on embedded systems.
+dnl
+AC_MSG_CHECKING([for the size of the key and uid cache])
+AC_ARG_ENABLE(key-cache,
+       AC_HELP_STRING([--enable-key-cache=SIZE],[Set key cache to SIZE (default 4096)]),,enableval=4096)
+
+if test "$enableval" = "no"; then
+   enableval=5
+elif test "$enableval" = "yes" || test "$enableval" = ""; then
+   enableval=4096
+fi
+
+changequote(,)dnl
+key_cache_size=`echo "$enableval" | sed 's/[A-Za-z]//g'`
+changequote([,])dnl
+
+if test "$enableval" != "$key_cache_size" || test "$key_cache_size" -lt 5; then
+   AC_MSG_ERROR([invalid key-cache size])
+fi
+
+AC_MSG_RESULT($key_cache_size)
+AC_DEFINE_UNQUOTED(PK_UID_CACHE_SIZE,$key_cache_size,[Size of the key and UID caches])
+
+dnl
 dnl Check whether we want to use Linux capabilities
 dnl
 AC_MSG_CHECKING([whether use of capabilities is requested])
@@ -351,6 +407,7 @@ AC_PATH_PROG(PERL,"perl")
 AC_ISC_POSIX
 AC_SYS_LARGEFILE
 AC_PROG_INSTALL
+AC_PROG_LN_S
 AC_PROG_AWK
 AC_CHECK_PROG(DOCBOOK_TO_MAN, docbook-to-man, yes, no)
 AM_CONDITIONAL(HAVE_DOCBOOK_TO_MAN, test "$ac_cv_prog_DOCBOOK_TO_MAN" = yes)
@@ -378,6 +435,7 @@ case "${target}" in
         have_dosish_system=yes
         need_dlopen=no
         try_gettext="no"
+       LDAPLIBS="-lwldap32"
         ;;
     i?86-emx-os2 | i?86-*-os2*emx )
         # OS/2 with the EMX environment
@@ -439,11 +497,19 @@ AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
 AC_SUBST(MPI_OPT_FLAGS)
 GNUPG_SYS_SYMBOL_UNDERSCORE
 
-dnl This needs to go after AC_PROG_CC so that $EXEEXT is defined
-if test "$try_hkp" = yes ; then
+dnl These need to go after AC_PROG_CC so that $EXEEXT is defined
+if test x"$try_hkp" = xyes ; then
   AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
 fi
 
+if test x"$try_http" = xyes ; then
+  AC_SUBST(GPGKEYS_HTTP,"gpgkeys_http$EXEEXT")
+fi
+
+if test x"$try_finger" = xyes ; then
+  AC_SUBST(GPGKEYS_FINGER,"gpgkeys_finger$EXEEXT")
+fi
+
 dnl Must check for network library requirements before doing link tests
 dnl for ldap, for example. If ldap libs are static (or dynamic and without
 dnl ELF runtime link paths), then link will fail and LDAP support won't
@@ -457,10 +523,11 @@ AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
 dnl Now try for the resolver functions so we can use DNS SRV
 
 AC_ARG_ENABLE(dns-srv,
-   AC_HELP_STRING([--disable-dns-srv],[disable the use of DNS SRV in HKP]),
+   AC_HELP_STRING([--disable-dns-srv],
+       [disable the use of DNS SRV in HKP and HTTP]),
    use_dns_srv=$enableval,use_dns_srv=yes)
 
-if test x"$try_hkp" = xyes && test x"$use_dns_srv" = xyes ; then
+if (test x"$try_hkp" = xyes || test x"$try_http" = xyes) && test x"$use_dns_srv" = xyes ; then
   _srv_save_libs=$LIBS
   LIBS=""
   # the double underscore thing is a glibc-ism?
@@ -496,10 +563,12 @@ fi
 AC_SUBST(SRVLIBS)
 
 # Try and link a LDAP test program to weed out unusable LDAP
-# libraries.  -lldap [-llber [-lresolv]] is for OpenLDAP.  OpenLDAP in
-# general is terrible with creating weird dependencies.  If all else
-# fails, the user can play guess-the-dependency by using something
-# like ./configure LDAPLIBS="-Lfoo -lbar"
+# libraries.  -lldap [-llber [-lresolv]] is for older OpenLDAPs.
+# OpenLDAP, circa 1999, was terrible with creating weird dependencies.
+# This seems to have all been resolved, so I'm simplifying this code
+# significantly.  If all else fails, the user can play
+# guess-the-dependency by using something like ./configure
+# LDAPLIBS="-Lfoo -lbar"
 
 if test "$try_ldap" = yes ; then
   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
@@ -511,56 +580,17 @@ if test "$try_ldap" = yes ; then
                 [gnupg_cv_func_ldap_init=yes],[gnupg_cv_func_ldap_init=no])
     AC_MSG_RESULT([$gnupg_cv_func_ldap_init])
 
-    if test $gnupg_cv_func_ldap_init = no; then
-      AC_MSG_CHECKING([whether I can make LDAP be sane with lber.h])
-      AC_TRY_LINK([#include <lber.h>
-#include <ldap.h>],[ldap_open("foobar",1234);],
-         [gnupg_cv_func_ldaplber_init=yes],[gnupg_cv_func_ldaplber_init=no])
-      AC_MSG_RESULT([$gnupg_cv_func_ldaplber_init])
-    fi
-
-    if test "$gnupg_cv_func_ldaplber_init" = yes ; then
-       AC_DEFINE(NEED_LBER_H,1,[Define if the LDAP library requires including lber.h before ldap.h])
-    fi
-
-    if test "$gnupg_cv_func_ldap_init" = yes || \
-       test "$gnupg_cv_func_ldaplber_init" = yes ; then
+    if test "$gnupg_cv_func_ldap_init" = yes ; then
        LDAPLIBS=$MY_LDAPLIBS
        GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
 
-       AC_MSG_CHECKING([whether LDAP supports ldap_get_option])
-
-       if test "$gnupg_cv_func_ldap_init" = yes ; then
-         AC_TRY_LINK([#include <ldap.h>],
-            [ldap_get_option((void *)0,0,(void *)0);],
-            [gnupg_cv_func_ldap_get_option=yes],
-            [gnupg_cv_func_ldap_get_option=no])
-       else
-         AC_TRY_LINK([#include <lber.h>
-#include <ldap.h>],[ldap_get_option((void *)0,0,(void *)0);],
-            [gnupg_cv_func_ldap_get_option=yes],
-            [gnupg_cv_func_ldap_get_option=no])
-       fi
+       AC_CHECK_FUNCS(ldap_get_option ldap_set_option ldap_start_tls_s)
 
-       AC_MSG_RESULT([$gnupg_cv_func_ldap_get_option])
-
-       if test "$gnupg_cv_func_ldap_get_option" = yes ; then
-          AC_DEFINE(HAVE_LDAP_GET_OPTION,1,[Define if the LDAP library has ldap_get_option])
-       else
+       if test "$ac_cv_func_ldap_get_option" != yes ; then
           AC_MSG_CHECKING([whether LDAP supports ld_errno])
-
-         if test "$gnupg_cv_func_ldap_init" = yes ; then
-           AC_TRY_COMPILE([#include <ldap.h>],
-              [LDAP *ldap; ldap->ld_errno;],
-              [gnupg_cv_func_ldap_ld_errno=yes],
-              [gnupg_cv_func_ldap_ld_errno=no])
-          else
-           AC_TRY_LINK([#include <lber.h>
-#include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
-              [gnupg_cv_func_ldap_ld_errno=yes],
-              [gnupg_cv_func_ldap_ld_errno=no])
-          fi
-
+         AC_TRY_LINK([#include <ldap.h>],[LDAP *ldap; ldap->ld_errno;],
+            [gnupg_cv_func_ldap_ld_errno=yes],
+            [gnupg_cv_func_ldap_ld_errno=no])
           AC_MSG_RESULT([$gnupg_cv_func_ldap_ld_errno])
 
          if test "$gnupg_cv_func_ldap_ld_errno" = yes ; then
@@ -577,6 +607,7 @@ fi
 
 AC_SUBST(GPGKEYS_LDAP)
 AC_SUBST(LDAPLIBS)
+AM_CONDITIONAL(GPGKEYS_LDAP, test "$GPGKEYS_LDAP" != "")
 
 dnl This isn't necessarily sendmail itself, but anything that gives a
 dnl sendmail-ish interface to the outside world.  That includes qmail,
@@ -645,6 +676,7 @@ AC_SUBST(MPI_OPT_FLAGS)
 
 dnl Checks for libraries.
 
+AM_GNU_GETTEXT_VERSION(0.14.1)
 if test "$try_gettext" = yes; then
   AM_GNU_GETTEXT(,[need-ngettext])
 
@@ -696,12 +728,17 @@ if test "$try_extensions" = yes ; then
   AC_DEFINE(USE_DYNAMIC_LINKING,1,[Define to enable the use of extensions])
 fi
 
+if test "$selinux_support" = yes ; then
+  AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
+fi
+
 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
 
 dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h getopt.h)
 
+
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
@@ -757,11 +794,11 @@ AC_FUNC_FSEEKO
 AC_FUNC_VPRINTF
 AC_FUNC_FORK
 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
-AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times)
+AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv)
 AC_CHECK_FUNCS(memmove gettimeofday getrusage setrlimit clock_gettime)
 AC_CHECK_FUNCS(atexit raise getpagesize strftime nl_langinfo setlocale)
 AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
-AC_REPLACE_FUNCS(mkdtemp)
+AC_REPLACE_FUNCS(mkdtemp timegm)
 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
 
 # See if getopt is in libiberty.  This is of course not optimal since
@@ -814,6 +851,12 @@ dnl
 dnl Check whether we can use Linux capabilities as requested
 dnl
 if test "$use_capabilities" = "yes" ; then
+
+AC_MSG_WARN([[
+***
+*** WARNING: using capabilities with GnuPG is experimental code!
+***]])
+
 use_capabilities=no
 AC_CHECK_HEADERS(sys/capability.h)
 if test "$ac_cv_header_sys_capability_h" = "yes" ; then
@@ -1067,18 +1110,24 @@ AC_SUBST(ZLIBS)
 #
 # libusb allows us to use the integrated CCID smartcard reader driver.
 #
-# Note, that we need the CVS (unstable) version. 
-#
 LIBUSB_LIBS=""
 if test "$card_support" = yes; then
-    AC_CHECK_LIB(usb, usb_find_device,
+    AC_CHECK_LIB(usb, usb_bulk_write,
                  [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
                    AC_DEFINE(HAVE_LIBUSB,1,
                    [defined if libusb is available])
                  ])
 fi
 AC_SUBST(LIBUSB_LIBS)
+AC_CHECK_FUNCS(usb_get_busses)
 
+#
+# Check for readline support
+#
+if test "$readline_support" = yes ; then
+    AC_CHECK_LIB(readline, add_history)
+    AC_CHECK_HEADERS([readline/readline.h])
+fi
 
 
 # Allow users to append something to the version string without
@@ -1118,6 +1167,7 @@ AC_SUBST(W32LIBS)
 if test "$GCC" = yes; then
     if test "$USE_MAINTAINER_MODE" = "yes"; then
         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
+        CFLAGS="$CFLAGS -Wformat-nonliteral"
     else
         CFLAGS="$CFLAGS -Wall"
     fi