* gpg.sgml: Rename backsigs to cross-certification (backsigs is just
[gnupg.git] / configure.ac
index d2867ea..6a8d6da 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 configure.ac script for GnuPG
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+dnl               2005, 2006 Free Software Foundation, Inc.
 dnl
 dnl This file is part of GnuPG.
 dnl
@@ -16,25 +16,26 @@ 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.57)
+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.3.4-cvs, bug-gnupg@gnu.org)
+AC_INIT(gnupg, 1.4.3-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.
-development_version=yes
+development_version=no
 
 AC_CONFIG_AUX_DIR(scripts)
-AC_CONFIG_SRCDIR(g10/g10.c)
-AC_CANONICAL_TARGET
-AM_INIT_AUTOMAKE
+AC_CONFIG_SRCDIR(g10/gpg.c)
+AC_CANONICAL_HOST
+AM_INIT_AUTOMAKE([std-options])
 AM_CONFIG_HEADER(config.h)
 
 AC_GNU_SOURCE
@@ -101,17 +102,39 @@ 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)
+# We don't have a test to check whether as(1) knows about the
+# non executable stack option.  Thus we provide an option to enable
+# it.
+AC_MSG_CHECKING([whether non excutable stack support is requested])
+AC_ARG_ENABLE(noexecstack,
+              AC_HELP_STRING([--enable-noexecstack],
+                             [enable non executable stack support (gcc only)]),
+              noexecstack_support=$enableval, noexecstack_support=no)
+AC_MSG_RESULT($noexecstack_support)
+
+# 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],
+                             [enable SELinux support]),
+              selinux_support=$enableval, selinux_support=no)
+AC_MSG_RESULT($selinux_support)
+
+
+AC_MSG_CHECKING([whether the new iconv based code is requested])
+AC_ARG_ENABLE(gnupg-iconv,
+              AC_HELP_STRING([--disable-gnupg-iconv],
+                             [disable the new iconv code]),
+              gnupg_use_iconv=$enableval, gnupg_use_iconv=yes)
+AC_MSG_RESULT($gnupg_use_iconv)
 
 dnl See if we are disabling any algorithms or features for a smaller
 dnl binary
 
 try_extensions=no
 
+use_rsa=yes
 use_idea=yes
 use_cast5=yes
 use_blowfish=yes
@@ -121,9 +144,13 @@ 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]),
+   use_rsa=no
    use_idea=no
    use_cast5=no
    use_blowfish=no
@@ -132,7 +159,36 @@ 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,
+   AC_HELP_STRING([--disable-rsa],[disable the RSA public key algorithm]),
+   use_rsa=$enableval)
+AC_MSG_RESULT($use_rsa)
+if test x"$use_rsa" = xyes ; then
+   AC_DEFINE(USE_RSA,1,[Define to include the RSA public key algorithm])
+fi
 
 AC_MSG_CHECKING([whether to enable the IDEA cipher])
 AC_ARG_ENABLE(idea,
@@ -263,41 +319,76 @@ if test "$use_exec" = yes ; then
   AC_MSG_RESULT($enableval)
 
   if test "$gnupg_cv_enable_keyserver_helpers" = yes ; then
+dnl LDAP is defined only after we confirm the library is available later
     AC_MSG_CHECKING([whether LDAP keyserver support is requested])
     AC_ARG_ENABLE(ldap,
-    [  --disable-ldap          disable LDAP keyserver interface],
-        try_ldap=$enableval, try_ldap=yes)
+      AC_HELP_STRING([--disable-ldap],[disable LDAP keyserver interface only]),
+      try_ldap=$enableval, try_ldap=yes)
     AC_MSG_RESULT($try_ldap)
 
     AC_MSG_CHECKING([whether HKP keyserver support is requested])
     AC_ARG_ENABLE(hkp,
-    [  --disable-hkp           disable HKP keyserver interface],
-        try_hkp=$enableval, try_hkp=yes)
+      AC_HELP_STRING([--disable-hkp],[disable HKP keyserver interface only]),
+      try_hkp=$enableval, try_hkp=yes)
     AC_MSG_RESULT($try_hkp)
 
+    AC_MSG_CHECKING([whether finger key fetching support is requested])
+    AC_ARG_ENABLE(finger,
+      AC_HELP_STRING([--disable-finger],
+        [disable finger key fetching interface only]),
+      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],
-        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
 
     AC_MSG_CHECKING([whether keyserver exec-path is enabled])
     AC_ARG_ENABLE(keyserver-path,
-        [  --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])
-        fi],enableval=yes)
+      AC_HELP_STRING([--disable-keyserver-path],
+        [disable the exec-path option for keyserver helpers]),
+      [if test "$enableval" = no ; then
+         disable_keyserver_path=yes
+      fi],enableval=yes)
     AC_MSG_RESULT($enableval)
   fi
 
 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
+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])
@@ -306,6 +397,12 @@ AC_ARG_WITH(capabilities,
 [use_capabilities="$withval"],[use_capabilities=no])
 AC_MSG_RESULT($use_capabilities)
 
+# To avoid double inclusion of config.h which might happen at some
+# places, we add the usual double inclusion protection.
+AH_TOP([
+#ifndef GNUPG_CONFIG_H_INCLUDED
+#define GNUPG_CONFIG_H_INCLUDED
+])
 
 AH_BOTTOM([
 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
@@ -317,8 +414,9 @@ AH_BOTTOM([
 #define GNUPG_MAJOR_VERSION 1
 
 #include "g10defs.h"
-])
 
+#endif /*GNUPG_CONFIG_H_INCLUDED*/
+])
 
 AM_MAINTAINER_MODE
 
@@ -345,15 +443,15 @@ 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
-case "${target}" in
-    *-*-mingw32*)
+case "${host}" in
+    *-mingw32*)
         # special stuff for Windoze NT
         ac_cv_have_dev_random=no
         AC_DEFINE(USE_ONLY_8DOT3,1,
@@ -364,9 +462,15 @@ case "${target}" 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
@@ -374,6 +478,7 @@ case "${target}" in
         AC_DEFINE(HAVE_DRIVE_LETTERS)
         have_dosish_system=yes
         try_gettext="no"
+        agent_support=no
         ;;
 
     i?86-*-msdosdjgpp*)
@@ -382,14 +487,9 @@ case "${target}" 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"
@@ -425,14 +525,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 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
+
+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_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
@@ -443,13 +558,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]),
-   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"$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?
@@ -460,112 +589,67 @@ if test x"$try_hkp" = xyes && test x"$use_dns_srv" = xyes ; then
   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 SRVs.  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 any code that calls it.  At some point I'll rewrite the
+  # code to use the BIND 8 resolver API.
 
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
+  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);]])],,use_dns_srv=no)
-  fi
+[[unsigned char answer[PACKETSZ]; res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);]])],have_resolver=yes)
 
-  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
+
+     if test x"$use_dns_srv" = xyes ; then
+        AC_DEFINE(USE_DNS_SRV,1,[define to use DNS SRV])
+     fi
+
+     if test x"$use_dns_pka" = xyes ; then
+        AC_DEFINE(USE_DNS_PKA,1,[define to use our experimental DNS PKA])
+     fi
+
+     if test x"$use_dns_cert" = xyes ; then
+        AC_DEFINE(USE_DNS_CERT,1,[define to use DNS CERT])
+     fi
   else
-     AC_MSG_NOTICE([Resolver functions not found or not usable.  Disabling DNS SRV.])
+     use_dns_srv=no
+     use_dns_pka=no
+     use_dns_cert=no
   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
-# fails, the user can play guess-the-dependency by using something
-# like ./configure LDAPLIBS="-Lfoo -lbar"
+AM_CONDITIONAL(USE_DNS_SRV, test x"$use_dns_srv" = xyes)
 
-if test "$try_ldap" = yes ; then
-  for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
-    _ldap_save_libs=$LIBS
-    LIBS="$MY_LDAPLIBS $NETLIBS $LIBS"
-
-    AC_MSG_CHECKING([whether LDAP via \"$MY_LDAPLIBS\" is present and sane])
-    AC_TRY_LINK([#include <ldap.h>],[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 = 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
+# Check for LDAP
 
-    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 "$try_ldap" = yes ; then
+   GNUPG_CHECK_LDAP($NETLIBS)
+fi
 
-    if test "$gnupg_cv_func_ldap_init" = yes || \
-       test "$gnupg_cv_func_ldaplber_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_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
-          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_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
+# Which keyserver helpers are we building?
 
-    LIBS=$_ldap_save_libs
+AC_ARG_ENABLE(old-keyserver-helpers,
+   AC_HELP_STRING([--enable-old-keyserver-helpers],[enable old keyserver helpers]),old_ks=$enableval,old_ks=no)
 
-    if test "$GPGKEYS_LDAP" != "" ; then break; fi
-  done
+if test "$old_ks" = yes ; then
+   AC_SUBST(GPGKEYS_HTTP,"gpgkeys_http$EXEEXT")
+else
+   LIBCURL_CHECK_CONFIG([yes],,[with_curl=yes],[fake_curl=yes])
+   AC_SUBST(GPGKEYS_CURL,"gpgkeys_curl$EXEEXT")
 fi
 
-AC_SUBST(GPGKEYS_LDAP)
-AC_SUBST(LDAPLIBS)
+AM_CONDITIONAL(FAKE_CURL,test x"$fake_curl" = xyes)
+AM_CONDITIONAL(WITH_CURL,test x"$with_curl" = xyes || test x"$fake_curl" = xyes)
+
+if test x"$fake_curl" = xyes ; then
+   AC_DEFINE(FAKE_CURL,1,[define to fake the libcurl API internally])
+fi
 
 dnl This isn't necessarily sendmail itself, but anything that gives a
 dnl sendmail-ish interface to the outside world.  That includes qmail,
@@ -589,8 +673,8 @@ fi
 
 AC_SUBST(GPGKEYS_MAILTO)
 
-case "${target}" in
-    *-*-mingw32*)
+case "${host}" in
+    *-mingw32*)
         PRINTABLE_OS_NAME="MingW32"
         ;;
     *-*-cygwin*)
@@ -619,7 +703,7 @@ AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
 #
 NAME_OF_DEV_RANDOM="/dev/random"
 NAME_OF_DEV_URANDOM="/dev/urandom"
-case "${target}" in
+case "${host}" in
     *-openbsd*)
         NAME_OF_DEV_RANDOM="/dev/srandom"
         NAME_OF_DEV_URANDOM="/dev/urandom"
@@ -634,6 +718,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])
 
@@ -649,6 +734,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
@@ -681,15 +767,32 @@ 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
 
+if test "$selinux_support" = yes ; then
+  AC_DEFINE(ENABLE_SELINUX_HACKS,1,[Define to enable SELinux support])
+fi
+
+if test "$gnupg_use_iconv" = yes ; then
+  AC_DEFINE(USE_GNUPG_ICONV,1,[Define to use the new iconv based 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)
+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
@@ -714,8 +817,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
-AC_CACHE_CHECK([for UINT64_C],[gnupg_cv_uint64_c_works],
-   AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <inttypes.h>
+AC_CHECK_HEADERS([inttypes.h])
+AC_CACHE_CHECK([for UINT64_C], [gnupg_cv_uint64_c_works],
+               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
@@ -729,28 +833,34 @@ 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)
+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)
+AC_CHECK_FUNCS(fcntl ftruncate)
+AC_REPLACE_FUNCS(mkdtemp timegm isascii memrchr)
+
 AC_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
 
 # See if getopt is in libiberty.  This is of course not optimal since
@@ -803,6 +913,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
@@ -861,8 +977,8 @@ if test "$use_static_rnd" = default; then
      if test "$ac_cv_have_dev_random" = yes; then
         random_modules="rndlinux"
      else
-         case "${target}" in
-            *-*-mingw32*|*-*-cygwin*)
+         case "${host}" in
+            *-mingw32*|*-*-cygwin*)
                 random_modules="rndw32"
                 ;;
             i?86-emx-os2|i?86-*-os2*emx)
@@ -899,23 +1015,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
@@ -945,15 +1070,16 @@ AC_SUBST(MPI_SFLAGS)
 
 AC_MSG_CHECKING([whether regular expression support is requested])
 AC_ARG_ENABLE(regex,
-[  --disable-regex         do not handle regular expressions in trust sigs],
-     use_regex=$enableval, use_regex=yes)
+  AC_HELP_STRING([--disable-regex],
+    [do not handle regular expressions in trust signatures]),
+  use_regex=$enableval, use_regex=yes)
 AC_MSG_RESULT($use_regex)
 
 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
@@ -978,14 +1104,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
@@ -1031,6 +1157,10 @@ if test "$use_bzip2" = yes ; then
       fi
       ],withval="")
 
+# Checking alongside stdio.h as an early version of bzip2 (1.0)
+# required stdio.h to be included before bzlib.h, and Solaris 9 is
+# woefully out of date.
+
   if test "$withval" != no ; then
      AC_CHECK_HEADER(bzlib.h,
         AC_CHECK_LIB(bz2,BZ2_bzCompressInit,
@@ -1041,30 +1171,18 @@ if test "$use_bzip2" = yes ; then
                  [Defined if the bz2 compression library is available])
          ],
          CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
-         CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
+         CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags},[#include <stdio.h>])
   fi
 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.
-#
-# 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)
-
+GNUPG_CHECK_LIBUSB
 
+# Check for readline support
+GNUPG_CHECK_READLINE
 
 # Allow users to append something to the version string without
 # flagging it as development version.  The user version parts is
@@ -1084,12 +1202,11 @@ 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. 
-case "${target}" in
-    *-*-mingw32*)
+case "${host}" in
+    *-mingw32*)
 dnl      NETLIBS="$NETLIBS -lwsock32"
        W32LIBS="-lwsock32"
         ;;
@@ -1100,13 +1217,40 @@ 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
+
+    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
+
+    # Non exec stack hack.  Fixme: Write a test to check whether as
+    # can cope with it and use the enable-noexecstack option only to
+    # disable it in case it is required on sime platforms.
+    if test "$noexecstack_support" = yes; then
+        NOEXECSTACK_FLAGS="-Wa,--noexecstack"
+    fi
 fi
+AC_SUBST(NOEXECSTACK_FLAGS)
 
 
 if test "$print_egd_warning" = yes; then
@@ -1158,11 +1302,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
@@ -1205,6 +1353,7 @@ keyserver/gpgkeys_mailto
 keyserver/gpgkeys_test
 doc/Makefile
 tools/Makefile
+tools/gpg-zip
 zlib/Makefile
 checks/Makefile
 ])
@@ -1212,7 +1361,7 @@ AC_OUTPUT
 
 # Give some feedback
 echo
-echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
+echo   "                Configured for: $PRINTABLE_OS_NAME ($host)"
 if test -n "$show_extraasm"; then
   echo "  Extra cpu specific functions:$show_extraasm"
 fi