About to do a new release
[gnupg.git] / configure.ac
index 5063c4b..27c9cdb 100644 (file)
@@ -1,6 +1,6 @@
-dnl Configure.ac script for GnuPG
-dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
-dnl               2004 Free Software Foundation, Inc.
+dnl configure.ac script for GnuPG
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+dnl               2006 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GnuPG.
 dnl
@@ -9,31 +9,38 @@ dnl it under the terms of the GNU General Public License as published by
 dnl the Free Software Foundation; either version 2 of the License, or
 dnl (at your option) any later version.
 dnl 
-dnl GnuPG is distributed in the hope that it will be useful,
+dnl GnuPG is distributed in the hope that it will be useful,g
 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 dnl GNU General Public License for more details.
 dnl 
 dnl You should have received a copy of the GNU General Public License
 dnl along with this program; if not, write to the Free Software
-dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+dnl MA 02110-1301, USA
 dnl
 dnl (Process this file with autoconf to produce a configure script.)
-dnlAC_REVISION($Revision$)dnl
 
 AC_PREREQ(2.59)
 min_automake_version="1.9.3"
 
-# 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.4.1-cvs, bug-gnupg@gnu.org)
+# Remember to change the version number immediately *after* a release.
+# Set my_issvn to "yes" for non-released code.  Remember to run an
+# "svn up" and "autogen.sh" right before creating a distribution.
+m4_define([my_version], [1.4.4])
+m4_define([my_issvn], [no])
+
+m4_define([svn_revision], m4_esyscmd([echo -n $((svn info 2>/dev/null \
+          || echo 'Revision: 0')|sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
+AC_INIT([gnupg], my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision]),
+        [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.
 development_version=no
 
 AC_CONFIG_AUX_DIR(scripts)
-AC_CONFIG_SRCDIR(g10/g10.c)
+AC_CONFIG_SRCDIR(g10/gpg.c)
 AC_CANONICAL_HOST
 AM_INIT_AUTOMAKE([std-options])
 AM_CONFIG_HEADER(config.h)
@@ -93,15 +100,17 @@ AC_ARG_ENABLE(asm,
      try_asm_modules=$enableval, try_asm_modules=yes)
 AC_MSG_RESULT($try_asm_modules)
 
-AC_MSG_CHECKING([whether memory guard is requested])
-AC_ARG_ENABLE(m-guard,
-    [  --enable-m-guard        enable memory guard facility],
-    use_m_guard=$enableval, use_m_guard=no)
-AC_MSG_RESULT($use_m_guard)
-if test "$use_m_guard" = yes ; then
-    AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
-fi
-
+dnl AC_MSG_CHECKING([whether memory guard is requested])
+dnl AC_ARG_ENABLE(m-guard,
+dnl     [  --enable-m-guard        enable memory guard facility],
+dnl     use_m_guard=$enableval, use_m_guard=no)
+dnl AC_MSG_RESULT($use_m_guard)
+dnl if test "$use_m_guard" = yes ; then
+dnl     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
+dnl fi
+
+# SELinux support includes tracking of sensitive files to avoid
+# leaking their contents through processing these files by gpg itself
 AC_MSG_CHECKING([whether SELinux support is requested])
 AC_ARG_ENABLE(selinux-support,
               AC_HELP_STRING([--enable-selinux-support],
@@ -109,12 +118,6 @@ AC_ARG_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,
-              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 the new iconv based code is requested])
 AC_ARG_ENABLE(gnupg-iconv,
@@ -123,13 +126,6 @@ AC_ARG_ENABLE(gnupg-iconv,
               gnupg_use_iconv=$enableval, gnupg_use_iconv=yes)
 AC_MSG_RESULT($gnupg_use_iconv)
 
-AC_MSG_CHECKING([whether to enable the experimental backsigs code])
-AC_ARG_ENABLE(backsigs,
-              AC_HELP_STRING([--enable-backsigs],
-                             [enable the experimental backsigs code]),
-              do_backsigs=$enableval, do_backsigs=no)
-AC_MSG_RESULT($do_backsigs)
-
 dnl See if we are disabling any algorithms or features for a smaller
 dnl binary
 
@@ -145,6 +141,9 @@ use_sha256=yes
 use_sha512=yes
 use_bzip2=yes
 use_exec=yes
+card_support=yes
+agent_support=yes
+disable_keyserver_path=no
 
 AC_ARG_ENABLE(minimal,
    AC_HELP_STRING([--enable-minimal],[build the smallest gpg binary possible]),
@@ -157,7 +156,27 @@ AC_ARG_ENABLE(minimal,
    use_sha256=no
    use_sha512=no
    use_bzip2=no
-   use_exec=no)
+   use_exec=no
+   card_support=no
+   agent_support=no)
+
+
+AC_MSG_CHECKING([whether OpenPGP card support is requested])
+AC_ARG_ENABLE(card-support,
+              AC_HELP_STRING([--disable-card-support],
+                             [disable OpenPGP card support]),
+              card_support=$enableval)
+AC_MSG_RESULT($card_support)
+
+
+# Note that we may later disable the agent support based on the platform.
+AC_MSG_CHECKING([whether gpg-agent support is requested])
+AC_ARG_ENABLE(agent-support,
+              AC_HELP_STRING([--disable-agent-support],
+                             [disable gpg-agent support]),
+              agent_support=$enableval)
+AC_MSG_RESULT($agent_support)
+
 
 AC_MSG_CHECKING([whether to enable the RSA public key algorithm])
 AC_ARG_ENABLE(rsa,
@@ -233,11 +252,11 @@ fi
 
 AC_MSG_CHECKING([whether to enable the SHA-256 digest])
 AC_ARG_ENABLE(sha256,
-   AC_HELP_STRING([--disable-sha256],[disable the SHA-256 digest]),
+   AC_HELP_STRING([--disable-sha256],[disable the SHA-224 and SHA-256 digests]),
    use_sha256=$enableval)
 AC_MSG_RESULT($use_sha256)
 if test x"$use_sha256" = xyes ; then
-   AC_DEFINE(USE_SHA256,1,[Define to include the SHA-256 digest])
+   AC_DEFINE(USE_SHA256,1,[Define to include the SHA-224 and SHA-256 digests])
 fi
 
 dnl SHA512 is defined only after we confirm 64-bit support later
@@ -310,12 +329,6 @@ dnl LDAP is defined only after we confirm the library is available later
       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],
@@ -323,18 +336,18 @@ dnl LDAP is defined only after we confirm the library is available later
       try_finger=$enableval, try_finger=yes)
     AC_MSG_RESULT($try_finger)
 
-    AC_MSG_CHECKING([whether ftp key fetching support is requested])
-    AC_ARG_ENABLE(ftp,
-      AC_HELP_STRING([--disable-ftp],
-        [disable ftp key fetching interface only]),
-      try_ftp=$enableval, try_ftp=yes)
-    AC_MSG_RESULT($try_ftp)
+    AC_MSG_CHECKING([whether generic object key fetching support is requested])
+    AC_ARG_ENABLE(generic,
+      AC_HELP_STRING([--disable-generic],
+        [disable generic object key fetching interface only]),
+      try_generic=$enableval, try_generic=yes)
+    AC_MSG_RESULT($try_generic)
 
     AC_MSG_CHECKING([whether email keyserver support is requested])
     AC_ARG_ENABLE(mailto,
-      AC_HELP_STRING([--disable-mailto],
-       [disable email keyserver interface only]),
-      try_mailto=$enableval, try_mailto=yes)
+      AC_HELP_STRING([--enable-mailto],
+       [enable email keyserver interface only]),
+      try_mailto=$enableval, try_mailto=no)
     AC_MSG_RESULT($try_mailto)
     fi
 
@@ -343,7 +356,7 @@ dnl LDAP is defined only after we confirm the library is available later
       AC_HELP_STRING([--disable-keyserver-path],
         [disable the exec-path option for keyserver helpers]),
       [if test "$enableval" = no ; then
-        AC_DEFINE(DISABLE_KEYSERVER_PATH,1,[define to disable exec-path for keyserver helpers])
+         disable_keyserver_path=yes
       fi],enableval=yes)
     AC_MSG_RESULT($enableval)
   fi
@@ -351,7 +364,7 @@ dnl LDAP is defined only after we confirm the library is available later
 AC_MSG_CHECKING([whether the included zlib is requested])
 AC_ARG_WITH(included-zlib,
     [  --with-included-zlib    use the zlib code included here],
-[g10_force_zlib=yes], [g10_force_zlib=no] )
+[g10_force_zlib="$withval"], [g10_force_zlib=no] )
 AC_MSG_RESULT($g10_force_zlib)
 
 dnl
@@ -396,6 +409,18 @@ AH_TOP([
 ])
 
 AH_BOTTOM([
+/* We didn't define endianness above, so get it from OS macros.  This
+is intended for making fat binary builds on OS X. */
+#if !defined(BIG_ENDIAN_HOST) && !defined(LITTLE_ENDIAN_HOST)
+#if defined(__BIG_ENDIAN__)
+#define BIG_ENDIAN_HOST 1
+#elif defined(__LITTLE_ENDIAN__)
+#define LITTLE_ENDIAN_HOST 1
+#else
+#error "No endianness found"
+#endif
+#endif
+
 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
 #define EXEC_TEMPFILE_ONLY
 #endif
@@ -409,7 +434,6 @@ AH_BOTTOM([
 #endif /*GNUPG_CONFIG_H_INCLUDED*/
 ])
 
-
 AM_MAINTAINER_MODE
 
 dnl Checks for programs.
@@ -430,16 +454,15 @@ 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)
 GNUPG_CHECK_FAQPROG
 GNUPG_CHECK_DOCBOOK_TO_TEXI
+GNUPG_CHECK_USTAR
 
 MPI_OPT_FLAGS=""
 
-
 try_gettext=yes
 have_dosish_system=no
 need_dlopen=yes
@@ -455,9 +478,15 @@ case "${host}" in
                   [because the Unix gettext has too much overhead on
                    MingW32 systems and these systems lack Posix functions,
                    we use a simplified version of gettext])
+        AC_DEFINE(HAVE_W32_SYSTEM,1,
+                  [Defined if we run on a W32 API based system])
+        disable_keyserver_path=yes
         have_dosish_system=yes
         need_dlopen=no
         try_gettext="no"
+        agent_support=no
+       use_simple_gettext=yes
+       have_w32_system=yes
         ;;
     i?86-emx-os2 | i?86-*-os2*emx )
         # OS/2 with the EMX environment
@@ -465,6 +494,7 @@ case "${host}" in
         AC_DEFINE(HAVE_DRIVE_LETTERS)
         have_dosish_system=yes
         try_gettext="no"
+        agent_support=no
         ;;
 
     i?86-*-msdosdjgpp*)
@@ -473,14 +503,9 @@ case "${host}" in
         AC_DEFINE(HAVE_DRIVE_LETTERS)
         have_dosish_system=yes
         try_gettext="no"
+        agent_support=no
         ;;
 
-    *-*-freebsd*)
-       # FreeBSD
-       CPPFLAGS="$CPPFLAGS -I/usr/local/include"
-       LDFLAGS="$LDFLAGS -L/usr/local/lib"
-       ;;
-
     *-*-hpux*)
         if test -z "$GCC" ; then
             CFLAGS="$CFLAGS -Ae -D_HPUX_SOURCE"
@@ -495,11 +520,11 @@ case "${host}" in
         ;;
     *-dec-osf5*)
         if test -z "$GCC" ; then
-            # Use the newer compiler `-msg_disable ptrmismatch' to
+            # Use the newer compiler `-msg_disable ptrmismatch1' to
             # get rid of the unsigned/signed char mismatch warnings.
             # Using this may hide other pointer mismatch warnings, but
            # it at least lets other warning classes through
-            CFLAGS="$CFLAGS -msg_disable ptrmismatch"
+            CFLAGS="$CFLAGS -msg_disable ptrmismatch1"
         fi
         ;;
     m68k-atari-mint)
@@ -516,27 +541,29 @@ if test "$have_dosish_system" = yes; then
 fi
 AM_CONDITIONAL(HAVE_DOSISH_SYSTEM, test "$have_dosish_system" = yes)
 
+AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
+AM_CONDITIONAL(HAVE_W32_SYSTEM, test x"$have_w32_system" = xyes)
+
+if test "$disable_keyserver_path" = yes; then
+    AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
+              [define to disable exec-path for keyserver helpers])
+fi
+
 AC_SUBST(MPI_OPT_FLAGS)
 GNUPG_SYS_SYMBOL_UNDERSCORE
 
 dnl These need to go after AC_PROG_CC so that $EXEEXT is defined
+
+AC_DEFINE_UNQUOTED(EXEEXT,"$EXEEXT",[The executable file extension, if any])
+
 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")
-  AC_DEFINE(HTTP_SUPPORT,1,[Define to include HTTP support])
-fi
-
 if test x"$try_finger" = xyes ; then
   AC_SUBST(GPGKEYS_FINGER,"gpgkeys_finger$EXEEXT")
 fi
 
-if test x"$try_ftp" = xyes ; then
-  AC_DEFINE(FTP_SUPPORT,1,[Define to include FTP support])
-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
@@ -547,14 +574,27 @@ 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
+dnl Now try for the resolver functions so we can use DNS for SRV, PKA,
+dnl and CERT.
+
+if test x"$try_hkp" = xyes || test x"$try_http" = xyes ; then
+   AC_ARG_ENABLE(dns-srv,
+      AC_HELP_STRING([--disable-dns-srv],
+       [disable the use of DNS SRV in HKP and HTTP]),
+      use_dns_srv=$enableval,use_dns_srv=yes)
+fi
+
+AC_ARG_ENABLE(dns-pka,
+   AC_HELP_STRING([--disable-dns-pka],
+       [disable the use of PKA records in DNS]),
+   use_dns_pka=$enableval,use_dns_pka=yes)
 
-AC_ARG_ENABLE(dns-srv,
-   AC_HELP_STRING([--disable-dns-srv],
-       [disable the use of DNS SRV in HKP and HTTP]),
-   use_dns_srv=$enableval,use_dns_srv=yes)
+AC_ARG_ENABLE(dns-cert,
+   AC_HELP_STRING([--disable-dns-cert],
+       [disable the use of CERT records in DNS]),
+   use_dns_cert=$enableval,use_dns_cert=yes)
 
-if (test x"$try_hkp" = xyes || test x"$try_http" = xyes) && test x"$use_dns_srv" = xyes ; then
+if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes || test x"$use_dns_cert" = xyes; then
   _srv_save_libs=$LIBS
   LIBS=""
   # the double underscore thing is a glibc-ism?
@@ -565,104 +605,77 @@ if (test x"$try_hkp" = xyes || test x"$try_http" = xyes) && test x"$use_dns_srv"
   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
+  # Make sure that the BIND 4 resolver interface is workable before
+  # enabling any code that calls it.  At some point I'll rewrite the
+  # code to use the BIND 8 resolver API.
 
-    # Make sure that the BIND 4 resolver interface is workable before
-    # enabling SRVs.  At some point I'll rewrite the code to use the
-    # BIND 8 resolver API.
+  AC_MSG_CHECKING([whether the resolver is usable])
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>],
+[[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],have_resolver=yes,have_resolver=no)
+  AC_MSG_RESULT($have_resolver)
+
+# This is Apple-specific and somewhat bizarre as they changed the
+# define in bind 8 for some reason.
 
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+  if test x"$have_resolver" != xyes ; then
+    AC_MSG_CHECKING([whether I can make the resolver usable with BIND_8_COMPAT])
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([#define BIND_8_COMPAT
+#include <sys/types.h>
 #include <netinet/in.h>
 #include <arpa/nameser.h>
 #include <resolv.h>],
-[[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],,use_dns_srv=no)
+[[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],[have_resolver=yes ; need_compat=yes])
+    AC_MSG_RESULT($have_resolver)
   fi
 
-  if test x"$use_dns_srv" = xyes ; then
-     AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
+  if test x"$have_resolver" = xyes ; then
      SRVLIBS=$LIBS
-  else
-     AC_MSG_NOTICE([Resolver functions not found or not usable.  Disabling DNS SRV.])
-  fi
-  LIBS=$_srv_save_libs
-fi
 
-AC_SUBST(SRVLIBS)
+     if test x"$use_dns_srv" = xyes ; then
+        AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
+     fi
 
-# Try and link a LDAP test program to weed out unusable LDAP
-# 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 x"$use_dns_pka" = xyes ; then
+        AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
+     fi
 
-if test "$try_ldap" = yes ; then
+     if test x"$use_dns_cert" = xyes ; then
+        AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
+     fi
 
-  AC_ARG_WITH(ldap,
-     AC_HELP_STRING([--with-ldap=DIR],[look for the LDAP library in DIR]),
-     [
-     if test -d "$withval" ; then
-        CPPFLAGS="${CPPFLAGS} -I$withval/include"
-        LDFLAGS="${LDFLAGS} -L$withval/lib"
+     if test x"$need_compat" = xyes ; then
+        AC_DEFINE(BIND_8_COMPAT,1,[an Appleism])
      fi
-     ])
+  else
+     use_dns_srv=no
+     use_dns_pka=no
+     use_dns_cert=no
+  fi
 
-  for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv" "-lwldap32"; do
-    _ldap_save_libs=$LIBS
-    LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
+  LIBS=$_srv_save_libs
+fi
 
-    AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
-    AC_TRY_LINK([
-#ifdef _WIN32
-#include <winsock2.h>
-#include <winldap.h>
-#else
-#include <ldap.h>
-#endif
-],[ldap_open("foobar",1234);],
-                [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" = yes ; then
-       LDAPLIBS=$MY_LDAPLIBS
-       GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
-
-       AC_CHECK_FUNCS(ldap_get_option ldap_set_option ldap_start_tls_s)
-
-       if test "$ac_cv_func_ldap_get_option" != yes ; then
-          AC_MSG_CHECKING([whether LDAP supports ld_errno])
-         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
-            AC_DEFINE(HAVE_LDAP_LD_ERRNO,1,[Define if the LDAP library supports ld_errno])
-          fi
-       fi
-    fi
+AC_SUBST(SRVLIBS)
 
-    LIBS=$_ldap_save_libs
+AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
 
-    if test "$GPGKEYS_LDAP" != "" ; then break; fi
-  done
-fi
+# Check for LDAP
 
-AC_SUBST(GPGKEYS_LDAP)
-AC_SUBST(LDAPLIBS)
-AM_CONDITIONAL(GPGKEYS_LDAP, test "$GPGKEYS_LDAP" != "")
+if test "$try_ldap" = yes ; then
+   GNUPG_CHECK_LDAP($NETLIBS)
+fi
 
-dnl If we have neither FTP or HTTP defined, then don't bother to check
-dnl for curl.
+# Check for curl.  We fake the curl API if libcurl isn't installed.
 
-if test "$try_ftp" = yes || test "$try_http" = yes ; then
-   GNUPG_CHECK_LIBCURL
-fi
+LIBCURL_CHECK_CONFIG([yes],,,[fake_curl=yes])
+AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
 
-AM_CONDITIONAL(HAVE_LIBCURL, test "$have_libcurl" = "yes")
+# Generic, for us, means curl
 
-if test x"$have_libcurl" = xyes ; then
+if test x"$try_generic" = xyes ; then
    AC_SUBST(GPGKEYS_CURL,"gpgkeys_curl$EXEEXT")
 fi
 
@@ -749,6 +762,7 @@ else
   AC_SUBST(USE_NLS)
   AC_SUBST(USE_INCLUDED_LIBINTL)
   AC_SUBST(BUILD_INCLUDED_LIBINTL)
+  AM_PO_SUBDIRS
 fi
 
 if test "$try_extensions" = yes || test x"$card_support" = xyes ; then
@@ -781,6 +795,10 @@ if test "$card_support" = yes ; then
   AC_DEFINE(ENABLE_CARD_SUPPORT,1,[Define to include OpenPGP card support])
 fi
 
+if test "$agent_support" = yes ; then
+  AC_DEFINE(ENABLE_AGENT_SUPPORT,1,[Define to include gpg-agent support])
+fi
+
 if test "$try_extensions" = yes ; then
   AC_DEFINE(USE_DYNAMIC_LINKING,1,[Define to enable the use of extensions])
 fi
@@ -793,21 +811,17 @@ if test "$gnupg_use_iconv" = yes ; then
   AC_DEFINE(USE_GNUPG_ICONV,1,[Define to use the new iconv based code])
 fi
 
-if test "$do_backsigs" = yes ; then
-  AC_DEFINE(DO_BACKSIGS,1,[Define to enable the experimental backsigs code])
-fi
-
 AM_CONDITIONAL(ENABLE_CARD_SUPPORT, test "$card_support" = yes)
+AM_CONDITIONAL(ENABLE_AGENT_SUPPORT, test "$agent_support" = yes)
 
 dnl Checks for header files.
 AC_HEADER_STDC
-AC_CHECK_HEADERS([unistd.h langinfo.h termio.h locale.h getopt.h arpa/nameser.h])
+AC_CHECK_HEADERS([unistd.h langinfo.h termio.h locale.h getopt.h pwd.h])
 
 # Note that we do not check for iconv here because this is done anyway
 # by the gettext checks and thus it allows us to disable the use of
 # iconv by using --disable-nls.
 
-
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
@@ -817,7 +831,14 @@ AC_TYPE_MODE_T
 AC_TYPE_SIGNAL
 AC_DECL_SYS_SIGLIST
 
-GNUPG_CHECK_ENDIAN
+AC_ARG_ENABLE(endian-check,
+              AC_HELP_STRING([--disable-endian-check],
+             [disable the endian check and trust the OS provided macros]),
+             endiancheck=$enableval,endiancheck=yes)
+
+if test x"$endiancheck" = xyes ; then
+   GNUPG_CHECK_ENDIAN
+fi
 
 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
@@ -831,9 +852,9 @@ AC_CHECK_SIZEOF(unsigned long)
 AC_CHECK_SIZEOF(unsigned long long)
 
 # Ensure that we have UINT64_C before we bother to check for uint64_t
-gt_HEADER_INTTYPES_H
+AC_CHECK_HEADERS([inttypes.h])
 AC_CACHE_CHECK([for UINT64_C], [gnupg_cv_uint64_c_works],
-               AC_COMPILE_IFELSE(AC_LANG_PROGRAM([
+               AC_LINK_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
@@ -847,28 +868,33 @@ if test "$ac_cv_sizeof_unsigned_short" = "0" \
 fi
 
 dnl Do we have any 64-bit data types?
-if test "$ac_cv_sizeof_unsigned_int" != "8" \
+if test x"$use_sha512" = xyes \
+   && test "$ac_cv_sizeof_unsigned_int" != "8" \
    && test "$ac_cv_sizeof_unsigned_long" != "8" \
    && test "$ac_cv_sizeof_unsigned_long_long" != "8" \
    && test x"$ac_cv_sizeof_uint64_t" != "x8"; then
     AC_MSG_NOTICE([No 64-bit types.  Disabling SHA-384 and SHA-512.])
-else
-  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])
-  fi
+    use_sha512=no
 fi
 
+if test x"$use_sha512" = xyes ; then
+    AC_DEFINE(USE_SHA512,1,[Define to include the SHA-384 and SHA-512 digests])
+fi
+
+AM_CONDITIONAL(USE_SHA512, test x"$use_sha512" = xyes)
+
 dnl Checks for library functions.
+AC_CHECK_DECLS(getpagesize)
 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 unsetenv)
+AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times unsetenv getpwnam getpwuid)
 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 timegm)
+AC_CHECK_FUNCS(fcntl ftruncate)
+AC_REPLACE_FUNCS(mkdtemp timegm isascii memrchr)
 
 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
 
@@ -1024,23 +1050,32 @@ for rndmod in $random_modules "" ; do
     rndlinux)
          AC_DEFINE(USE_RNDLINUX,1, 
                   [Defined if the /dev/random based RNG should be used.])
+         use_rndlinux=yes
          ;;
     rndunix)
          AC_DEFINE(USE_RNDUNIX,1, 
                   [Defined if the default Unix RNG should be used.])
          print_egd_warning=yes
+         use_rndunix=yes
           ;;
     rndegd)
          AC_DEFINE(USE_RNDEGD,1, 
                   [Defined if the EGD based RNG should be used.])
+         use_rndegd=yes
          ;;
     rndw32)
          AC_DEFINE(USE_RNDW32,1, 
                   [Defined if the Windows specific RNG should be used.])
+         use_rndw32=yes
         ;;
    esac
 done
 
+AM_CONDITIONAL(USE_RNDLINUX, test "$use_rndlinux" = yes)
+AM_CONDITIONAL(USE_RNDUNIX,  test "$use_rndunix" = yes)
+AM_CONDITIONAL(USE_RNDEGD,   test "$use_rndegd" = yes)
+AM_CONDITIONAL(USE_RNDW32,   test "$use_rndw32" = yes)
+
 dnl setup assembler stuff
 AC_MSG_CHECKING(for mpi assembler functions)
 if test -f $srcdir/mpi/config.links ; then
@@ -1079,7 +1114,7 @@ if test "$use_regex" = yes ; then
   AC_MSG_CHECKING([whether the included regex lib is requested])
   AC_ARG_WITH(included-regex,
       [  --with-included-regex   use the included GNU regex library],
-      [gnupg_cv_included_regex=yes],[gnupg_cv_included_regex=no])
+      [gnupg_cv_included_regex="$withval"],[gnupg_cv_included_regex=no])
   AC_MSG_RESULT($gnupg_cv_included_regex)
 
   if test $gnupg_cv_included_regex = no ; then
@@ -1104,14 +1139,14 @@ main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "
   fi
 
   if test $gnupg_cv_included_regex = yes; then
-     AC_DEFINE(USE_GNU_REGEX,1,[ Define if you want to use the included regex lib ])
-     AC_SUBST(REGEX_O,regex.o)
+     AC_DEFINE(USE_INTERNAL_REGEX,1,[ Define if you want to use the included regex lib ])
   fi
 else
-
   AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
 fi
 
+AM_CONDITIONAL(USE_INTERNAL_REGEX, test x"$gnupg_cv_included_regex" = xyes)
+
 dnl Do we have zlib? Must do it here because Solaris failed
 dnl when compiling a conftest (due to the "-lz" from LIBS).
 use_local_zlib=yes
@@ -1178,20 +1213,8 @@ fi
 AM_CONDITIONAL(ENABLE_BZIP2_SUPPORT,test x"$have_bz2" = "xyes")
 AC_SUBST(ZLIBS)
 
-
-#
 # libusb allows us to use the integrated CCID smartcard reader driver.
-#
-LIBUSB_LIBS=""
-if test "$card_support" = yes; then
-    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)
+GNUPG_CHECK_LIBUSB
 
 # Check for readline support
 GNUPG_CHECK_READLINE
@@ -1214,7 +1237,6 @@ fi
 
 AM_CONDITIONAL(CROSS_COMPILING, test x$cross_compiling = xyes)
 
-GNUPG_CHECK_GNUMAKE
 
 # add some extra libs here so that previous tests don't fail for
 # mysterious reasons - the final link step should bail out. 
@@ -1230,15 +1252,43 @@ esac
 AC_SUBST(NETLIBS)
 AC_SUBST(W32LIBS)
 
+# Special options used with gcc.
 if test "$GCC" = yes; then
+    # Note that it is okay to use CFLAGS here because this are just
+    # warning options and the user should have a chance of overriding
+    #them.
     if test "$USE_MAINTAINER_MODE" = "yes"; then
         CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
         CFLAGS="$CFLAGS -Wformat-nonliteral"
     else
         CFLAGS="$CFLAGS -Wall"
     fi
+
+    # This is handy for debugging so the compiler doesn't rearrange
+    # things and eliminate variables.
+    AC_ARG_ENABLE(optimization,
+       AC_HELP_STRING([--disable-optimization],
+                     [disable compiler optimization]),
+                      [if test $enableval = no ; then
+                         CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
+                       fi])
+
+    AC_MSG_CHECKING([if gcc supports -Wno-pointer-sign])
+
+    _gcc_cflags_save=$CFLAGS
+    CFLAGS="-Wno-pointer-sign"
+
+    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_psign=yes,_gcc_psign=no)
+    AC_MSG_RESULT($_gcc_psign)
+
+    CFLAGS=$_gcc_cflags_save;
+
+    if test x"$_gcc_psign" = xyes ; then
+       CFLAGS="$CFLAGS -Wno-pointer-sign"
+    fi
 fi
 
+CL_AS_NOEXECSTACK
 
 if test "$print_egd_warning" = yes; then
   AC_MSG_WARN([[
@@ -1289,11 +1339,15 @@ cat >g10defs.tmp <<G10EOF
 #define EXTSEP_C '.'
 #define DIRSEP_S "\\\\"
 #define EXTSEP_S "."
+#define PATHSEP_C ';'
+#define PATHSEP_S ";"
 #else
 #define DIRSEP_C '/'
 #define EXTSEP_C '.'
 #define DIRSEP_S "/"
 #define EXTSEP_S "."
+#define PATHSEP_C ':'
+#define PATHSEP_S ":"
 #endif
 /* This is the same as VERSION, but should be overridden if the
    platform cannot handle things like dots'.' in filenames.  Set
@@ -1336,6 +1390,7 @@ keyserver/gpgkeys_mailto
 keyserver/gpgkeys_test
 doc/Makefile
 tools/Makefile
+tools/gpg-zip
 zlib/Makefile
 checks/Makefile
 ])
@@ -1343,6 +1398,7 @@ AC_OUTPUT
 
 # Give some feedback
 echo
+echo   "                Version info:   $PACKAGE_STRING"             
 echo   "                Configured for: $PRINTABLE_OS_NAME ($host)"
 if test -n "$show_extraasm"; then
   echo "  Extra cpu specific functions:$show_extraasm"