(DLLIBS): Fixed last change.
[gnupg.git] / configure.ac
index 888db1e..71d01dc 100644 (file)
@@ -1,5 +1,6 @@
 dnl Configure.ac script for GnuPG
-dnl Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002,
+dnl               2003 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GnuPG.
 dnl
@@ -24,7 +25,7 @@ AC_PREREQ(2.52)
 
 # 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.2-cvs, bug-gnupg@gnu.org)
+AC_INIT(gnupg, 1.3.4-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.
@@ -32,20 +33,13 @@ development_version=yes
 
 ALL_LINGUAS="de"
 
-PACKAGE=$PACKAGE_NAME
-VERSION=$PACKAGE_VERSION
-
 AC_CONFIG_AUX_DIR(scripts)
 AC_CONFIG_SRCDIR(g10/g10.c)
 AC_CANONICAL_TARGET()
-AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AM_INIT_AUTOMAKE
 AM_CONFIG_HEADER(config.h)
 
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
-AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
-AC_DEFINE(_GNU_SOURCE,1,[Some tests rely on this (stpcpy) and it should be used for new programs anyway])
+AC_GNU_SOURCE
 
 dnl
 dnl  Check for random module options
@@ -109,17 +103,22 @@ 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 OpenPGP card support is requested])
+AC_ARG_ENABLE(card-support,
+    [  --enable-card-support   enable OpenPGP card support],
+    card_support=$enableval, card_support=no)
+AC_MSG_RESULT($card_support)
+
 dnl See if we are disabling any algorithms or features for a smaller
 dnl binary
 
-try_dynload=no
+try_extensions=no
 
 use_idea=yes
 use_cast5=yes
 use_blowfish=yes
 use_aes=yes
 use_twofish=yes
-use_tiger192=yes
 use_sha256=yes
 use_sha512=yes
 use_exec=yes
@@ -131,7 +130,6 @@ AC_ARG_ENABLE(minimal,
    use_blowfish=no
    use_aes=no
    use_twofish=no
-   use_tiger192=no
    use_sha256=no
    use_sha512=no
    use_exec=no)
@@ -157,7 +155,7 @@ if test x"$use_idea" = xyes ; then
    else
       IDEA_O=idea-stub.o
       tmp=no
-      try_dynload=yes
+      try_extensions=yes
    fi
    AC_SUBST(IDEA_O)
    AC_MSG_RESULT($tmp)
@@ -199,13 +197,6 @@ if test x"$use_twofish" = xyes ; then
    AC_DEFINE(USE_TWOFISH,1,[Define to include the TWOFISH cipher])
 fi
 
-dnl TIGER192 is defined only after we confirm 64-bit support later
-AC_MSG_CHECKING([whether to enable the TIGER/192 digest])
-AC_ARG_ENABLE(tiger192,
-   AC_HELP_STRING([--disable-tiger192],[disable the TIGER/192 digest]),
-   use_tiger192=$enableval)
-AC_MSG_RESULT($use_tiger192)
-
 AC_MSG_CHECKING([whether to enable the SHA-256 digest])
 AC_ARG_ENABLE(sha256,
    AC_HELP_STRING([--disable-sha256],[disable the SHA-256 digest]),
@@ -277,10 +268,6 @@ if test "$use_exec" = yes ; then
         try_hkp=$enableval, try_hkp=yes)
     AC_MSG_RESULT($try_hkp)
 
-    if test "$try_hkp" = yes ; then
-      AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
-    fi
-
     AC_MSG_CHECKING([whether email keyserver support is requested])
     AC_ARG_ENABLE(mailto,
     [  --disable-mailto        disable email keyserver interface],
@@ -318,6 +305,10 @@ AH_BOTTOM([
 #define EXEC_TEMPFILE_ONLY
 #endif
 
+/* This is the major version number of GnuPG so that
+   source included files can test for this. */
+#define GNUPG_MAJOR_VERSION 1
+
 #include "g10defs.h"
 ])
 
@@ -336,6 +327,8 @@ AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
 AC_PROG_CC
 AC_PROG_CPP
+AC_PROG_RANLIB
+AC_CHECK_TOOL(AR, ar, :)
 AC_PATH_PROG(PERL,"perl")
 AC_ISC_POSIX
 AC_SYS_LARGEFILE
@@ -350,6 +343,8 @@ MPI_OPT_FLAGS=""
 
 
 try_gettext=yes
+have_dosish_system=no
+no_need_for_dlopen=no
 case "${target}" in
     *-*-mingw32*)
         # special stuff for Windoze NT
@@ -358,21 +353,19 @@ case "${target}" in
                   [set this to limit filenames to the 8.3 format])
         AC_DEFINE(HAVE_DRIVE_LETTERS,1,
                   [defined if we must run on a stupid file system])
-        AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
-                  [defined if we run on some of the PCDOS like systems 
-                   (DOS, Windoze. OS/2) with special properties like
-                    no file modes])
         AC_DEFINE(USE_SIMPLE_GETTEXT,1,
                   [because the Unix gettext has too much overhead on
                    MingW32 systems and these systems lack Posix functions,
                    we use a simplified version of gettext])
+        have_dosish_system=yes
+        no_need_for_dlopen=yes
         try_gettext="no"
         ;;
     i?86-emx-os2 | i?86-*-os2*emx )
         # OS/2 with the EMX environment
         ac_cv_have_dev_random=no
         AC_DEFINE(HAVE_DRIVE_LETTERS)
-        AC_DEFINE(HAVE_DOSISH_SYSTEM)
+        have_dosish_system=yes
         try_gettext="no"
         ;;
 
@@ -380,7 +373,7 @@ case "${target}" in
         # DOS with the DJGPP environment
         ac_cv_have_dev_random=no
         AC_DEFINE(HAVE_DRIVE_LETTERS)
-        AC_DEFINE(HAVE_DOSISH_SYSTEM)
+        have_dosish_system=yes
         try_gettext="no"
         ;;
 
@@ -417,9 +410,22 @@ case "${target}" in
        ;;
 esac
 
+if test "$have_dosish_system" = yes; then
+   AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
+             [defined if we run on some of the PCDOS like systems 
+              (DOS, Windoze. OS/2) with special properties like
+              no file modes])
+fi
+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
+  AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$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
@@ -430,6 +436,34 @@ AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname,
 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
        [NETLIBS="-lsocket $NETLIBS"]))
 
+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]),
+   use_dns_srv=$enableval,use_dns_srv=yes)
+
+if test x"$try_hkp" = xyes && test x"$use_dns_srv" = xyes ; then
+  _srv_save_libs=$LIBS
+  LIBS=""
+  # the double underscore thing is a glibc-ism?
+  AC_SEARCH_LIBS(res_query,resolv bind,,
+                 AC_SEARCH_LIBS(__res_query,resolv bind,,use_dns_srv=no))
+  AC_SEARCH_LIBS(dn_expand,resolv bind,,
+                 AC_SEARCH_LIBS(__dn_expand,resolv bind,,use_dns_srv=no))
+  AC_SEARCH_LIBS(dn_skipname,resolv bind,,
+                 AC_SEARCH_LIBS(__dn_skipname,resolv bind,,use_dns_srv=no))
+
+  if test x"$use_dns_srv" = xyes ; then
+     AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
+     SRVLIBS=$LIBS
+  else
+     AC_MSG_WARN([Resolver functions not found.  Disabling DNS SRV.])
+  fi
+  LIBS=$_srv_save_libs
+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
@@ -547,15 +581,11 @@ case "${target}" in
         ;;
     i?86-*-msdosdjgpp*)
         PRINTABLE_OS_NAME="MSDOS/DJGPP"
-        try_dynload=no
+        try_extensions=no
         ;;
     *-linux*)
         PRINTABLE_OS_NAME="GNU/Linux"
         ;;
-dnl let that after linux to avoid gnu-linux problems
-    *-gnu*)
-        PRINTABLE_OS_NAME="GNU/Hurd"
-        ;;
     *)
         PRINTABLE_OS_NAME=`uname -s || echo "Unknown"`
         ;;
@@ -585,7 +615,13 @@ AC_SUBST(MPI_OPT_FLAGS)
 dnl Checks for libraries.
 
 if test "$try_gettext" = yes; then
-  AM_GNU_GETTEXT
+  AM_GNU_GETTEXT(,[need-ngettext])
+
+  # gettext requires some extra checks.  These really should be part of
+  # the basic AM_GNU_GETTEXT macro.  TODO: move other gettext-specific
+  # function checks to here.
+
+  AC_CHECK_FUNCS(strchr)
 else
   USE_NLS=no
   USE_INCLUDED_LIBINTL=no
@@ -595,31 +631,41 @@ else
   AC_SUBST(BUILD_INCLUDED_LIBINTL)
 fi
 
-
-if test "$try_dynload" = yes ; then
-  AC_CHECK_LIB(dl,dlopen)
-  if test "$ac_cv_lib_dl_dlopen" = "yes"; then
-    AC_DEFINE(USE_DYNAMIC_LINKING,1,
-              [define to enable the use of extensions])
-    AC_DEFINE(HAVE_DL_DLOPEN,1,
-              [Defined when the dlopen function family is available])
+if test "$try_extensions" = yes || test x"$card_support" = xyes ; then
+  if test "$no_need_for_dlopen" = yes; then
+    AC_SUBST(DLLIBS,"")
   else
-    AC_CHECK_FUNCS(dlopen)
-    if test "$ac_cv_func_dlopen" = "yes"; then
-      AC_DEFINE(USE_DYNAMIC_LINKING)
-      AC_DEFINE(HAVE_DL_DLOPEN)
+    AC_CHECK_FUNC(dlopen,,AC_CHECK_LIB(dl,dlopen,found_dlopen=yes))
+    if test x"$found_dlopen" = "xyes" ; then
+      AC_DEFINE(HAVE_DL_DLOPEN,1,
+                [Defined when the dlopen function family is available])
+      AC_SUBST(DLLIBS,"-ldl")
+      if test "$try_extensions" = yes ; then
+         AC_DEFINE(USE_DYNAMIC_LINKING,1,
+                [define to enable the use of extensions])
+      fi
+    else
+      if test "$try_extensions" = yes ; then
+         AC_MSG_WARN([dlopen not found.  Disabling extensions.])
+      fi
+  
+      if test "$card_support" = yes ; then
+         AC_MSG_WARN([dlopen not found.  Disabling OpenPGP card support.])
+         card_support=no
+      fi
     fi
   fi
-else
-  AC_MSG_CHECKING(for dynamic loading)
-  DYNLINK_LDFLAGS=
-  DYNLINK_MOD_CFLAGS=
-  AC_MSG_RESULT(has been disabled)
+fi
+if test "$card_support" = yes ; then
+  AC_DEFINE(ENABLE_CARD_SUPPORT,1,
+           [Define to include the OpenPGP card 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)
+AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h getopt.h)
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -642,7 +688,15 @@ AC_CHECK_SIZEOF(unsigned short)
 AC_CHECK_SIZEOF(unsigned int)
 AC_CHECK_SIZEOF(unsigned long)
 AC_CHECK_SIZEOF(unsigned long long)
-AC_CHECK_SIZEOF(uint64_t)
+
+# Ensure that we have UINT64_C before we bother to check for uint64_t
+AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
+   AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
+uint64_t foo=UINT64_C(42);]),gnupg_cv_uint64_c_works=yes,gnupg_cv_uint64_c_works=no))
+
+if test "$gnupg_cv_uint64_c_works" = "yes" ; then
+   AC_CHECK_SIZEOF(uint64_t)
+fi
 
 if test "$ac_cv_sizeof_unsigned_short" = "0" \
    || test "$ac_cv_sizeof_unsigned_int" = "0" \
@@ -654,22 +708,9 @@ dnl Do we have any 64-bit data types?
 if test "$ac_cv_sizeof_unsigned_int" != "8" \
    && test "$ac_cv_sizeof_unsigned_long" != "8" \
    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
-   && test "$ac_cv_sizeof_uint64_t" != "8"; then
-    AC_MSG_WARN([No 64-bit types.  Disabling TIGER/192, SHA-384, and SHA-512])
+   && test x"$ac_cv_sizeof_uint64_t" != "x8"; then
+    AC_MSG_WARN([No 64-bit types.  Disabling SHA-384 and SHA-512])
 else
-  if test x"$use_tiger192" = xyes ; then
-     AC_SUBST(TIGER_O,tiger.o)
-     AC_DEFINE(USE_TIGER192,1,[Define to include the TIGER/192 digest])
-
-     AC_MSG_CHECKING([whether to enable old-style TIGER/192 digest support])
-     AC_ARG_ENABLE(old-tiger,
-        [  --enable-old-tiger      enable old-style TIGER/192 digest support],
-        old_tiger=$enableval, old_tiger=no)
-     AC_MSG_RESULT($old_tiger)
-     if test "$old_tiger" = yes ; then
-        AC_DEFINE(USE_OLD_TIGER,1,[Define to use the old fake OID for TIGER/192 digest support])
-     fi
-  fi
   if test x"$use_sha512" = xyes ; then
      AC_SUBST(SHA512_O,sha512.o)
      AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
@@ -681,11 +722,18 @@ 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)
+AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times)
 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)
+AC_CHECK_FUNCS(waitpid wait4 sigaction sigprocmask rand pipe stat getaddrinfo)
 AC_REPLACE_FUNCS(mkdtemp)
+AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
+
+# See if getopt is in libiberty.  This is of course not optimal since
+# it might be somewhere other than libiberty, but does cover the
+# mingw32 case.
+
+AC_CHECK_FUNC(getopt,,AC_CHECK_LIB(iberty,getopt,AC_SUBST(GETOPT,"-liberty")))
 
 #
 # check for gethrtime and run a testprogram to see whether
@@ -836,8 +884,6 @@ for rndmod in $random_modules "" ; do
     rndegd)
          AC_DEFINE(USE_RNDEGD,1, 
                   [Defined if the EGD based RNG should be used.])
-         EGDLIBS=$NETLIBS
-         AC_SUBST(EGDLIBS)
          ;;
     rndw32)
          AC_DEFINE(USE_RNDW32,1, 
@@ -936,22 +982,38 @@ else
   AC_CHECK_HEADER(zlib.h,
       AC_CHECK_LIB(z, deflateInit2_,
        use_local_zlib=no
-       LIBS="$LIBS -lz",
+       ZLIBS="-lz",
        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
 fi
+
 if test "$use_local_zlib" = yes ; then
     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
     AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
     ZLIBS="../zlib/libzlib.a"
 else
     AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
-    ZLIBS=
 fi
 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,
+                 [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
+                   AC_DEFINE(HAVE_LIBUSB,1,
+                   [defined if libusb is available])
+                 ])
+fi
+AC_SUBST(LIBUSB_LIBS)
+
+
+
 # Allow users to append something to the version string without
 # flagging it as development version.  The user version parts is
 # considered everything after a dash. 
@@ -976,12 +1038,15 @@ GNUPG_CHECK_GNUMAKE
 # mysterious reasons - the final link step should bail out. 
 case "${target}" in
     *-*-mingw32*)
-        LIBS="$LIBS -lwsock32"
+dnl      NETLIBS="$NETLIBS -lwsock32"
+       W32LIBS="-lwsock32"
         ;;
     *)
        ;;
 esac
 
+AC_SUBST(NETLIBS)
+AC_SUBST(W32LIBS)
 
 if test "$GCC" = yes; then
     if test "$USE_MAINTAINER_MODE" = "yes"; then
@@ -991,8 +1056,6 @@ if test "$GCC" = yes; then
     fi
 fi
 
-AC_SUBST(NETLIBS)
-
 
 if test "$print_egd_warning" = yes; then
   AC_MSG_WARN([[
@@ -1007,9 +1070,10 @@ if test "$print_egd_warning" = yes; then
 *** in Perl and available at the GnuPG FTP servers.  For more information
 *** consult the GnuPG webpages:
 ***
-***           http://www.gnupg.org/download.html#egd
+***           http://www.gnupg.org/download/#EGD
 ***
-*** You may want to run ./configure with --enable-static-rnd=egd to use it.
+*** You may want to run ./configure with --enable-static-rnd=egd or
+*** --enable-static-rnd=auto to use it.
 ***]])
 fi
 
@@ -1019,20 +1083,20 @@ AC_CONFIG_COMMANDS(g10defs.h,[[
 cat >g10defs.tmp <<G10EOF
 /* Generated automatically by configure */
 #ifdef HAVE_DRIVE_LETTERS
-  #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
-  #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
-  #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
-  #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
-  #define GNUPG_HOMEDIR     "c:\\\\gnupg"
+#define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
+#define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
+#define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
+#define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
+#define GNUPG_HOMEDIR     "c:\\\\gnupg"
 #else
-  #define G10_LOCALEDIR     "${datadir}/locale"
-  #define GNUPG_LIBDIR      "${libdir}/gnupg"
-  #define GNUPG_DATADIR     "${datadir}/gnupg"
-  #ifdef __VMS
-    #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
-  #else
-    #define GNUPG_HOMEDIR "~/.gnupg" 
-  #endif
+#define G10_LOCALEDIR     "${datadir}/locale"
+#define GNUPG_LIBDIR      "${libdir}/gnupg"
+#define GNUPG_DATADIR     "${datadir}/gnupg"
+#ifdef __VMS
+#define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
+#else
+#define GNUPG_HOMEDIR "~/.gnupg" 
+#endif
 #endif
 /* those are here to be redefined by handcrafted g10defs.h.
    Please note that the string version must not contain more
@@ -1048,6 +1112,9 @@ cat >g10defs.tmp <<G10EOF
 #define DIRSEP_S "/"
 #define EXTSEP_S "."
 #endif
+/* This is the same as VERSION, but should be overridden if the
+   platform cannot handle things like dots '.' in filenames. */
+#define SAFE_VERSION VERSION
 G10EOF
 cat mpi/mpi-asm-defs.h >>g10defs.tmp 
 if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then