Require libksba 0.9.4 and libgcrypt 1.1.92.
[gnupg.git] / configure.ac
index 8299346..1faf753 100644 (file)
-dnl Configure.ac script for GnuPG
-dnl Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-dnl
-dnl This file is part of GnuPG.
-dnl
-dnl GnuPG is free software; you can redistribute it and/or modify
-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 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
-dnl (Process this file with autoconf to produce a configure script.)
-dnlAC_REVISION($Revision$)dnl
-
+# configure.ac - for GnuPG 1.9
+# Copyright (C) 1998, 1999, 2000, 2001, 2002,
+#               2003 Free Software Foundation, Inc.
+# 
+# This file is part of GnuPG.
+# 
+# GnuPG is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# GnuPG is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+# Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.52)
+min_automake_version="1.7.6"
 
-# Remember to change the version number immediately *after* a release.
+# Version number: Remember to change it immediately *after* a release.
+#                 Add a "-cvs" prefix for non-released code.
+AC_INIT(gnupg, 1.9.5-cvs, gnupg-devel@gnupg.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.
-AC_INIT(gnupg, 1.3, bug-gnupg@gnu.org)
 development_version=yes
+NEED_GPG_ERROR_VERSION=0.6
+NEED_LIBGCRYPT_VERSION=1.1.92
+NEED_LIBASSUAN_VERSION=0.6.3
+NEED_KSBA_VERSION=0.9.4
+NEED_OPENSC_VERSION=0.8.0
 
-ALL_LINGUAS="ca cs da de eo el es et fr gl id it ja nl pl pt_BR pt sv tr"
 
 PACKAGE=$PACKAGE_NAME
 VERSION=$PACKAGE_VERSION
 
 AC_CONFIG_AUX_DIR(scripts)
-AC_CONFIG_SRCDIR(g10/g10.c)
+AC_CONFIG_SRCDIR(sm/gpgsm.c)
+AM_CONFIG_HEADER(config.h)
 AC_CANONICAL_TARGET()
 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
-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])
-
-dnl
-dnl  Check for random module options
-dnl
-AC_MSG_CHECKING([which random module to use])
-AC_ARG_ENABLE(static-rnd,
-    [  --enable-static-rnd=[egd|unix|linux|auto]  ],
-[use_static_rnd=$enableval], [use_static_rnd=default] )
 
-if test "$use_static_rnd" = no; then
-    use_static_rnd=default
-fi
-
-case "$use_static_rnd" in
-    egd | linux | unix | default )
-      AC_MSG_RESULT($use_static_rnd)
-      ;;
-    auto )
-      AC_MSG_RESULT(automagically selected at runtime)
-      ;;
-    * )
-      AC_MSG_RESULT(invalid argument)
-      AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
-      ;;
-esac
-
-AC_ARG_WITH(egd-socket,
-    [  --with-egd-socket=NAME  use NAME for the EGD socket],
-            egd_socket_name="$withval", egd_socket_name="" )
-AC_DEFINE_UNQUOTED(EGD_SOCKET_NAME, "$egd_socket_name",
-                   [Define if you don't want the default EGD socket name.
-                    For details see cipher/rndegd.c])
-
-
-dnl
-dnl See whether the user wants to disable checking for /dev/random
+AC_GNU_SOURCE
 
-AC_MSG_CHECKING([whether use of /dev/random is requested])
-AC_ARG_ENABLE(dev-random,
-[  --disable-dev-random    disable the use of dev random],
-    try_dev_random=$enableval, try_dev_random=yes)
-AC_MSG_RESULT($try_dev_random)
-
-
-dnl
-dnl  Check other options
-dnl
-
-# We don't need idea but some people claim that they need it for
-# research etc., so we allow to place an idea source code into the
-# cipher directory and statically link it if available, otherwise we
-# link to a stub.  We don't use AC_CHECK_FILE to avoid caching.
-AC_MSG_CHECKING(for extra cipher modules)
-tmp=""
-if test -f $srcdir/cipher/idea.c; then 
-   IDEA_O=idea.o
-   tmp=idea
-else
-   IDEA_O=idea-stub.o
-   tmp=no
-fi
-AC_SUBST(IDEA_O)
-AC_MSG_RESULT($tmp)
-
-# if the static idea is present, disable dynload.
-if test "$IDEA_O" = idea-stub.o ; then
-  AC_MSG_CHECKING([whether use of extensions is requested])
-  AC_ARG_ENABLE(dynload,
-  [  --disable-dynload       disable use of extensions],
-      try_dynload=$enableval, try_dynload=yes)
-  AC_MSG_RESULT($try_dynload)
-else
-  try_dynload=no
-fi
+# Some status variables to give feedback at the end of a configure run
+have_gpg_error=no
+have_libgcrypt=no 
+have_libassuan=no
+have_ksba=no
+have_opensc=no
+have_pth=no
 
-AC_MSG_CHECKING([whether assembler modules are requested])
-AC_ARG_ENABLE(asm,
-[  --disable-asm           do not use assembler modules],
-     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
+GNUPG_BUILD_PROGRAM(gpg, yes)
+GNUPG_BUILD_PROGRAM(gpgsm, yes)
+GNUPG_BUILD_PROGRAM(agent, yes)
+GNUPG_BUILD_PROGRAM(scdaemon, yes)
 
-AC_MSG_CHECKING([whether to enable old-style TIGER digest support])
-AC_ARG_ENABLE(old-tiger,
-    [  --enable-old-tiger      enable old-style TIGER 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 digest support])
-fi
 
+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_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
+                                        [Bug report address])
+AC_DEFINE_UNQUOTED(NEED_LIBGCRYPT_VERSION, "$NEED_LIBGCRYPT_VERSION",
+                                       [Required version of Libgcrypt])
+AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
+                                       [Required version of Libksba])
+
+
+
+# The default is to use the modules from this package and the few
+# other packages in a standard place; i.e where this package gets
+# installed.  With these options it is possible to override these
+# ${prefix} depended values with fixed paths, which can't be replaced
+# at make time.  See also am/cmacros.am and the defaults in AH_BOTTOM.
+AC_ARG_WITH(agent-pgm,
+    [  --with-agent-pgm=PATH  Use PATH as the default for the agent)],
+          GNUPG_AGENT_PGM="$withval", GNUPG_AGENT_PGM="" )
+AC_SUBST(GNUPG_AGENT_PGM)
+AM_CONDITIONAL(GNUPG_AGENT_PGM, test -n "$GNUPG_AGENT_PGM")
+show_gnupg_agent_pgm="(default)"
+test -n "$GNUPG_AGENT_PGM" && show_gnupg_agent_pgm="$GNUPG_AGENT_PGM"
+
+AC_ARG_WITH(pinentry-pgm,
+    [  --with-pinentry-pgm=PATH  Use PATH as the default for the pinentry)],
+          GNUPG_PINENTRY_PGM="$withval", GNUPG_PINENTRY_PGM="" )
+AC_SUBST(GNUPG_PINENTRY_PGM)
+AM_CONDITIONAL(GNUPG_PINENTRY_PGM, test -n "$GNUPG_PINENTRY_PGM")
+show_gnupg_pinentry_pgm="(default)"
+test -n "$GNUPG_PINENTRY_PGM" && show_gnupg_pinentry_pgm="$GNUPG_PINENTRY_PGM"
+
+
+AC_ARG_WITH(scdaemon-pgm,
+    [  --with-scdaemon-pgm=PATH  Use PATH as the default for the scdaemon)],
+          GNUPG_SCDAEMON_PGM="$withval", GNUPG_SCDAEMON_PGM="" )
+AC_SUBST(GNUPG_SCDAEMON_PGM)
+AM_CONDITIONAL(GNUPG_SCDAEMON_PGM, test -n "$GNUPG_SCDAEMON_PGM")
+show_gnupg_scdaemon_pgm="(default)"
+test -n "$GNUPG_SCDAEMON_PGM" && show_gnupg_scdaemon_pgm="$GNUPG_SCDAEMON_PGM"
+
+
+AC_ARG_WITH(dirmngr-pgm,
+    [  --with-dirmngr-pgm=PATH  Use PATH as the default for the dirmngr)],
+          GNUPG_DIRMNGR_PGM="$withval", GNUPG_DIRMNGR_PGM="" )
+AC_SUBST(GNUPG_DIRMNGR_PGM)
+AM_CONDITIONAL(GNUPG_DIRMNGR_PGM, test -n "$GNUPG_DIRMNGR_PGM")
+show_gnupg_dirmngr_pgm="(default)"
+test -n "$GNUPG_DIRMNGR_PGM" && show_gnupg_dirmngr_pgm="$GNUPG_DIRMNGR_PGM"
+
+AC_ARG_WITH(protect-tool-pgm,
+    [  --with-protect-tool-pgm=PATH  Use PATH as the default for the protect-tool)],
+          GNUPG_PROTECT_TOOL_PGM="$withval", GNUPG_PROTECT_TOOL_PGM="" )
+AC_SUBST(GNUPG_PROTECT_TOOL_PGM)
+AM_CONDITIONAL(GNUPG_PROTECT_TOOL_PGM, test -n "$GNUPG_PROTECT_TOOL_PGM")
+show_gnupg_protect_tool_pgm="(default)"
+test -n "$GNUPG_PROTECT_TOOL_PGM" \
+      && show_gnupg_protect_tool_pgm="$GNUPG_PROTECT_TOOL_PGM"
+
+
+
+# Configure option to allow ot disallow execution of external
+# programs, like a photo viewer.
 AC_MSG_CHECKING([whether to enable external program execution])
 AC_ARG_ENABLE(exec,
-    [  --disable-exec          disable all external program execution],
-    use_exec=$enableval, use_exec=yes)
+    AC_HELP_STRING([--disable-exec],[disable all external program execution]),
+    use_exec=$enableval)
 AC_MSG_RESULT($use_exec)
 if test "$use_exec" = no ; then
     AC_DEFINE(NO_EXEC,1,[Define to disable all external program execution])
@@ -200,7 +182,7 @@ if test "$use_exec" = yes ; then
     AC_MSG_RESULT($try_hkp)
 
     if test "$try_hkp" = yes ; then
-      AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp")
+      AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp$EXEEXT")
     fi
 
     AC_MSG_CHECKING([whether email keyserver support is requested])
@@ -219,13 +201,12 @@ if test "$use_exec" = yes ; then
     AC_MSG_RESULT($enableval)
   fi
 
-AC_MSG_CHECKING([whether included zlib is requested])
+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] )
 AC_MSG_RESULT($g10_force_zlib)
 
-
 dnl
 dnl Check whether we want to use Linux capabilities
 dnl
@@ -237,18 +218,83 @@ AC_MSG_RESULT($use_capabilities)
 
 
 AH_BOTTOM([
+/* Some global constants. */
+#ifdef HAVE_DRIVE_LETTERS
+#define GNUPG_DEFAULT_HOMEDIR "c:/gnupg"
+#elif defined(__VMS)
+#define GNUPG_DEFAULT_HOMEDIR "/SYS\$LOGIN/gnupg" 
+#else
+#define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
+#endif 
+#define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
+
+/* Tell libgcrypt not to use its own libgpg-error implementation. */
+#define USE_LIBGPG_ERROR 1
+
+/* This is the major version number of GnuPG so that
+   source included files can test for this.  Note, that\
+   we use 2 here even for GnuPG 1.9.x. */
+#define GNUPG_MAJOR_VERSION 2
+
+/* Now to separate file name parts.
+   Please note that the string version must not contain more
+   than one character because the code assumes strlen()==1 */
+#ifdef HAVE_DOSISH_SYSTEM
+#define DIRSEP_C '\\'
+#define EXTSEP_C '.'
+#define DIRSEP_S "\\"
+#define EXTSEP_S "."
+#else
+#define DIRSEP_C '/'
+#define EXTSEP_C '.'
+#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
+
+/* For some systems (DOS currently), we hardcode the path here.  For
+   POSIX systems the values are constructed by the Makefiles, so that
+   the values may be overridden by the make invocations; this is to
+   comply with the GNU coding standards. */
+#ifdef HAVE_DRIVE_LETTERS
+#define GNUPG_BINDIR      "c:\\gnupg"
+#define GNUPG_LIBEXECDIR  "c:\\lib\\gnupg"
+#define GNUPG_LIBDIR      "c:\\lib\\gnupg"
+#define GNUPG_DATADIR     "c:\\lib\\gnupg"
+#endif
+
+/* Setup the hardwired names of modules. */
+#ifndef GNUPG_DEFAULT_AGENT
+#define GNUPG_DEFAULT_AGENT    ( GNUPG_BINDIR DIRSEP_S "gpg-agent" )
+#endif
+#ifndef GNUPG_DEFAULT_PINENTRY
+#define GNUPG_DEFAULT_PINENTRY ( GNUPG_BINDIR DIRSEP_S "pinentry" )
+#endif
+#ifndef GNUPG_DEFAULT_SCDAEMON
+#define GNUPG_DEFAULT_SCDAEMON ( GNUPG_BINDIR DIRSEP_S "scdaemon" )
+#endif
+#ifndef GNUPG_DEFAULT_DIRMNGR
+#define GNUPG_DEFAULT_DIRMNGR  ( GNUPG_BINDIR DIRSEP_S "dirmngr" )
+#endif
+#ifndef GNUPG_DEFAULT_PROTECT_TOOL
+#define GNUPG_DEFAULT_PROTECT_TOOL \
+                    ( GNUPG_LIBEXECDIR DIRSEP_S "gpg-protect-tool" )
+#endif
+
+
+/* Derive some other constants. */
 #if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
 #define EXEC_TEMPFILE_ONLY
 #endif
 
-#include "g10defs.h"
 ])
 
-
 AM_MAINTAINER_MODE
 
-dnl Checks for programs.
-
+# Checks for programs.
 AC_PROG_MAKE_SET
 AM_SANITY_CHECK
 missing_dir=`cd $ac_aux_dir && pwd`
@@ -257,45 +303,45 @@ AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
 AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
 AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
+AC_PROG_AWK
 AC_PROG_CC
 AC_PROG_CPP
+AC_PROG_INSTALL
+AC_PROG_LN_S
+AC_PROG_MAKE_SET
+AC_PROG_RANLIB
+AC_CHECK_TOOL(AR, ar, :)
 AC_PATH_PROG(PERL,"perl")
 AC_ISC_POSIX
 AC_SYS_LARGEFILE
-AC_PROG_INSTALL
-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
 
-MPI_OPT_FLAGS=""
-
 
 try_gettext=yes
+have_dosish_system=no
 case "${target}" in
-    *-*-mingw32*|*-*-cygwin*)
+    *-*-mingw32*)
         # special stuff for Windoze NT
         ac_cv_have_dev_random=no
         AC_DEFINE(USE_ONLY_8DOT3,1,
                   [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
         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"
         ;;
 
@@ -303,7 +349,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"
         ;;
 
@@ -340,8 +386,104 @@ case "${target}" in
        ;;
 esac
 
-AC_SUBST(MPI_OPT_FLAGS)
-GNUPG_SYS_SYMBOL_UNDERSCORE
+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)
+
+
+#
+# Checks for libraries.
+#
+
+
+#
+# libgpg-error is a library with error codes shared between GnuPG
+# related projects.
+#
+AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
+                  have_gpg_error=yes,have_gpg_error=no)
+
+
+#
+# Libgcrypt is our generic crypto library
+#
+AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_VERSION",
+        have_libgcrypt=yes,have_libgcrypt=no)
+
+
+#
+# libassuan is used for IPC
+#
+AM_PATH_LIBASSUAN("$NEED_LIBASSUAN_VERSION",
+                  have_libassuan=yes,have_libassuan=no)
+
+
+#
+# libksba is our X.509 support library
+#
+AM_PATH_KSBA("$NEED_KSBA_VERSION",have_ksba=yes,have_ksba=no)
+
+#
+# libusb allows us to use the integrated CCID smartcard reader driver.
+#
+# Note, that we need the CVS version.  FIXME: libusb should have a
+# regular check as the other libraries do.
+#
+AC_CHECK_LIB(usb, usb_find_device,
+              [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
+                AC_DEFINE(HAVE_LIBUSB,1,
+                         [defined if libusb is available])
+             ])
+AC_SUBST(LIBUSB_LIBS)
+
+
+#
+# OpenSC is needed by the SCdaemon - if it is not availbale we can only
+# build a limited SCdaemon
+#
+AM_PATH_OPENSC("$NEED_OPENSC_VERSION",have_opensc=yes,have_opensc=no)
+if test $have_opensc = yes; then
+  AC_DEFINE(HAVE_OPENSC,1,
+            [defined if the OpenSC library is available])
+fi
+
+#
+# Check whether the (highly desirable) GNU Pth library is available
+#
+AC_ARG_WITH(pth-prefix,
+            AC_HELP_STRING([--with-pth-prefix=PFX],
+                           [prefix where GNU Pth is installed (optional)]),
+     pth_config_prefix="$withval", pth_config_prefix="")
+if test x$pth_config_prefix != x ; then
+   PTH_CONFIG="$pth_config_prefix/bin/pth-config"
+fi
+AC_PATH_PROG(PTH_CONFIG, pth-config, no)
+if test "$PTH_CONFIG" = "no"; then
+    AC_MSG_WARN([[
+***
+*** To support concurrent access to the gpg-agent and the SCdaemon
+*** we need the support of the GNU Portable Threads Library.
+*** Download it from ftp://ftp.gnu.org/gnu/pth/
+*** On a Debian GNU/Linux system you might want to try 
+***   apt-get install libpth-dev
+***]])
+else
+  GNUPG_PTH_VERSION_CHECK(1.3.7)
+  if test $have_pth = yes; then      
+     PTH_CFLAGS=`$PTH_CONFIG --cflags`
+     PTH_LIBS=`$PTH_CONFIG --ldflags`
+     PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs`"
+     AC_DEFINE(USE_GNU_PTH, 1,
+              [Defined if the GNU Portable Thread Library should be used])
+  fi
+fi
+AC_SUBST(PTH_CFLAGS)
+AC_SUBST(PTH_LIBS)
+
 
 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
@@ -353,11 +495,39 @@ 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
 # fails, the user can play guess-the-dependency by using something
-# like LDAPLIBS="-lfoo" ./configure
+# like ./configure LDAPLIBS="-Lfoo -lbar"
 
 if test "$try_ldap" = yes ; then
   for MY_LDAPLIBS in ${LDAPLIBS+"$LDAPLIBS"} "-lldap" "-lldap -llber" "-lldap -llber -lresolv"; do
@@ -384,7 +554,7 @@ if test "$try_ldap" = yes ; then
     if test "$gnupg_cv_func_ldap_init" = yes || \
        test "$gnupg_cv_func_ldaplber_init" = yes ; then
        LDAPLIBS=$MY_LDAPLIBS
-       GPGKEYS_LDAP="gpgkeys_ldap"
+       GPGKEYS_LDAP="gpgkeys_ldap$EXEEXT"
 
        AC_MSG_CHECKING([whether LDAP supports ldap_get_option])
 
@@ -463,7 +633,7 @@ case "${target}" in
         PRINTABLE_OS_NAME="MingW32"
         ;;
     *-*-cygwin*)
-        PRINTABLE_OS_NAME="Cygwin32"
+        PRINTABLE_OS_NAME="Cygwin"
         ;;
     i?86-emx-os2 | i?86-*-os2*emx )
         PRINTABLE_OS_NAME="OS/2"
@@ -475,10 +645,6 @@ case "${target}" in
     *-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"`
         ;;
@@ -487,28 +653,15 @@ AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
                    [A human readable text with the name of the OS])
 
 
-#
-# 1. Set names of random devices
-#
-NAME_OF_DEV_RANDOM="/dev/random"
-NAME_OF_DEV_URANDOM="/dev/urandom"
-case "${target}" in
-    *-openbsd* | *-netbsd*)
-        NAME_OF_DEV_RANDOM="/dev/srandom"
-        NAME_OF_DEV_URANDOM="/dev/urandom"
-        ;;
-esac
-AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
-                   [defined to the name of the strong random device])
-AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
-                   [defined to the name of the weaker random device])
-AC_SUBST(MPI_OPT_FLAGS)
-
+AM_GNU_GETTEXT_VERSION(0.12.1)
+if test "$try_gettext" = yes; then
+  AM_GNU_GETTEXT(,[need-ngettext])
 
-dnl Checks for libraries.
+  # 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.
 
-if test "$try_gettext" = yes; then
-  AM_GNU_GETTEXT
+  AC_CHECK_FUNCS(strchr)
 else
   USE_NLS=no
   USE_INCLUDED_LIBINTL=no
@@ -518,53 +671,40 @@ 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])
-  else
-    AC_CHECK_FUNCS(dlopen)
-    if test "$ac_cv_func_dlopen" = "yes"; then
-      AC_DEFINE(USE_DYNAMIC_LINKING)
-      AC_DEFINE(HAVE_DL_DLOPEN)
-    fi
-  fi
-else
-  AC_MSG_CHECKING(for dynamic loading)
-  DYNLINK_LDFLAGS=
-  DYNLINK_MOD_CFLAGS=
-  AC_MSG_RESULT(has been disabled)
-fi
-
-dnl Checks for header files.
+# Checks for header files.
 AC_HEADER_STDC
-AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h)
+AC_CHECK_HEADERS(string.h unistd.h langinfo.h termio.h locale.h)
 
-dnl Checks for typedefs, structures, and compiler characteristics.
+# Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
 AC_TYPE_SIZE_T
-AC_TYPE_MODE_T
 AC_TYPE_SIGNAL
 AC_DECL_SYS_SIGLIST
 
 GNUPG_CHECK_ENDIAN
 
-
 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
 GNUPG_CHECK_TYPEDEF(ulong, HAVE_ULONG_TYPEDEF)
 GNUPG_CHECK_TYPEDEF(u16, HAVE_U16_TYPEDEF)
 GNUPG_CHECK_TYPEDEF(u32, HAVE_U32_TYPEDEF)
 
-AC_CHECK_SIZEOF(unsigned short, 2)
-AC_CHECK_SIZEOF(unsigned int, 4)
-AC_CHECK_SIZEOF(unsigned long, 4)
-AC_CHECK_SIZEOF(unsigned long long, 0)
+AC_CHECK_SIZEOF(unsigned short)
+AC_CHECK_SIZEOF(unsigned int)
+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
+# fixme: really needed in gnupg?  I think it is only useful in libcgrypt.
+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" \
@@ -572,16 +712,47 @@ if test "$ac_cv_sizeof_unsigned_short" = "0" \
     AC_MSG_WARN([Hmmm, something is wrong with the sizes - using defaults]);
 fi
 
-dnl Checks for library functions.
+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 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
+fi
+
+GNUPG_SYS_SO_PEERCRED
+
+# Checks for library functions.
 AC_FUNC_FSEEKO
 AC_FUNC_VPRINTF
 AC_FUNC_FORK
 AC_CHECK_FUNCS(strerror stpcpy strsep strlwr tcgetattr strtoul mmap)
-AC_CHECK_FUNCS(strcasecmp strncasecmp)
+AC_CHECK_FUNCS(strcasecmp strncasecmp ctermid times gmtime_r)
 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_CHECK_TYPES([struct sigaction, sigset_t],,,[#include <signal.h>])
+
+# These are needed by libjnlib - fixme: we should have macros for them
+AC_CHECK_FUNCS(memicmp stpcpy strlwr strtoul memmove stricmp strtol)
+AC_CHECK_FUNCS(getrusage setrlimit stat setlocale)
+AC_CHECK_FUNCS(flockfile funlockfile fopencookie funopen)
+
+AC_REPLACE_FUNCS(vasprintf)
+AC_REPLACE_FUNCS(fopencookie)
 AC_REPLACE_FUNCS(mkdtemp)
+AC_REPLACE_FUNCS(fseeko ftello)
+AC_REPLACE_FUNCS(isascii)
+AC_REPLACE_FUNCS(putc_unlocked)
+
+
+
 
 #
 # check for gethrtime and run a testprogram to see whether
@@ -634,7 +805,7 @@ if test "$ac_cv_header_sys_capability_h" = "yes" ; then
   if test "$ac_cv_lib_cap_cap_init" = "yes"; then
      AC_DEFINE(USE_CAPABILITIES,1,
                [define if capabilities should be used])
-     LIBS="$LIBS -lcap"
+     AC_SUBST(CAPLIBS,"-lcap")
      use_capabilities=yes
   fi
 fi
@@ -653,119 +824,50 @@ fi
 fi
 
 
-GNUPG_CHECK_IPC
-if test "$ac_cv_header_sys_shm_h" = "yes"; then
-  AC_DEFINE(USE_SHM_COPROCESSING,1,
-            [define if the shared memory interface should be made available])
-fi
+# Sanity check regex.  Tests adapted from mutt.
 
-dnl
-dnl check whether we have a random device
-dnl
-if test "$try_dev_random" = yes ; then
-    AC_CACHE_CHECK(for random device, ac_cv_have_dev_random,
-    [if test -r "$NAME_OF_DEV_RANDOM" && test -r "$NAME_OF_DEV_URANDOM" ; then
-      ac_cv_have_dev_random=yes; else ac_cv_have_dev_random=no; fi])
-    if test "$ac_cv_have_dev_random" = yes; then
-        AC_DEFINE(HAVE_DEV_RANDOM,1,
-                 [defined if the system supports a random device] )
-    fi
-else
-    AC_MSG_CHECKING(for random device)
-    ac_cv_have_dev_random=no
-    AC_MSG_RESULT(has been disabled)
-fi
+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_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])
+  AC_MSG_RESULT($gnupg_cv_included_regex)
 
-dnl
-dnl Figure out the default random module.
-dnl
-random_modules=""
-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*)
-                random_modules="rndw32"
-                ;;
-            i?86-emx-os2|i?86-*-os2*emx)
-                random_modules="rndos2"
-                ;;
-            m68k-atari-mint)
-                random_modules="rndatari"
-                ;;
-            i?86-*-msdosdjgpp*)
-                :
-                ;;
-            *)
-                random_modules="rndlinux rndegd rndunix"
-                AC_DEFINE(USE_ALL_RANDOM_MODULES, 1, 
-                          [Allow to select random modules at runtime.])
-                ;;
-         esac
+  if test $gnupg_cv_included_regex = no ; then
+     # Does the system have regex functions at all?
+     AC_CHECK_FUNC(regcomp,gnupg_cv_included_regex=no,
+                          gnupg_cv_included_regex=yes)
+  fi
+
+  if test $gnupg_cv_included_regex = no ; then
+     AC_CACHE_CHECK([whether your system's regexp library is broken],
+       [gnupg_cv_regex_broken],
+       AC_TRY_RUN([
+#include <unistd.h>
+#include <regex.h>
+main() { regex_t blah ; regmatch_t p; p.rm_eo = p.rm_eo; return regcomp(&blah, "foo.*bar", REG_NOSUB) || regexec (&blah, "foobar", 0, NULL, 0); }],
+       gnupg_cv_regex_broken=no, gnupg_cv_regex_broken=yes, gnupg_cv_regex_broken=yes))
+
+     if test $gnupg_cv_regex_broken = yes ; then
+      AC_MSG_WARN(your regex is broken - using the included GNU regex instead.)
+      gnupg_cv_included_regex=yes
      fi
-else
-  if test "$use_static_rnd" = auto; then
-     random_modules="rndlinux rndegd rndunix"
-     AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
-  else
-     random_modules="rnd$use_static_rnd";
   fi
-fi
 
-if test -z "$random_modules"; then
-   AC_MSG_ERROR(no random module available)
-fi
-print_egd_warning=no
-for rndmod in $random_modules "" ; do
-  case "$rndmod" in
-    rndlinux)
-         AC_DEFINE(USE_RNDLINUX,1, 
-                  [Defined if the /dev/random based RNG should be used.])
-         ;;
-    rndunix)
-         AC_DEFINE(USE_RNDUNIX,1, 
-                  [Defined if the default Unix RNG should be used.])
-         print_egd_warning=yes
-          ;;
-    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, 
-                  [Defined if the Windows specific RNG should be used.])
-        ;;
-   esac
-done
-
-dnl setup assembler stuff
-AC_MSG_CHECKING(for mpi assembler functions)
-if test -f $srcdir/mpi/config.links ; then
-    . $srcdir/mpi/config.links
-    AC_CONFIG_LINKS("$mpi_ln_list")
-    ac_cv_mpi_extra_asm_modules="$mpi_extra_modules"
-    ac_cv_mpi_sflags="$mpi_sflags"
-    ac_cv_mpi_config_done="yes"
-    AC_MSG_RESULT(done)
+  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)
+  fi
 else
-    AC_MSG_RESULT(failed)
-    AC_MSG_ERROR([mpi/config.links missing!])
-fi
-MPI_EXTRA_ASM_OBJS=""
-show_extraasm=""
-if test "$ac_cv_mpi_extra_asm_modules" != ""; then
-for i in $ac_cv_mpi_extra_asm_modules; do
-    show_extraasm="$show_extraasm $i"
-    MPI_EXTRA_ASM_OBJS="$MPI_EXTRA_ASM_OBJS $i.o"
-done
+
+  AC_DEFINE(DISABLE_REGEX,1,[ Define to disable regular expression support ])
 fi
-AC_SUBST(MPI_EXTRA_ASM_OBJS)
-MPI_SFLAGS="$ac_cv_mpi_sflags"
-AC_SUBST(MPI_SFLAGS)
 
 dnl Do we have zlib? Must do it here because Solaris failed
 dnl when compiling a conftest (due to the "-lz" from LIBS).
@@ -802,7 +904,6 @@ else
 fi
 AC_SUBST(ZLIBS)
 
-
 # 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. 
@@ -827,7 +928,7 @@ GNUPG_CHECK_GNUMAKE
 # mysterious reasons - the final link step should bail out. 
 case "${target}" in
     *-*-mingw32*)
-        LIBS="$LIBS -lwsock32"
+        W32LIBS="-lwsock32"
         ;;
     *)
        ;;
@@ -837,115 +938,150 @@ esac
 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
 fi
 
 AC_SUBST(NETLIBS)
+AC_SUBST(W32LIBS)
 
 
-if test "$print_egd_warning" = yes; then
-  AC_MSG_WARN([[
-***
-*** The performance of the UNIX random gatherer module is not very good
-*** and it does not keep the entropy pool over multiple invocations of
-*** GnuPG.  The suggested way to overcome this problem is to use the
-***
-***               Entropy Gathering Daemon (EGD)
-***
-*** which provides a entropy source for the whole system.  It is written
-*** in Perl and available at the GnuPG FTP servers.  For more information
-*** consult the GnuPG webpages:
+# We use jnlib, so tell other modules about it
+AC_DEFINE(HAVE_JNLIB_LOGGING, 1,
+        [Defined if jnlib style logging fucntions are available])
+
+
+
+
+#
+# Print errors here so that they are visible all
+# together and the user can acquire them all together.
+#
+die=no
+if test "$have_gpg_error" = "no"; then
+   die=yes
+   AC_MSG_NOTICE([[
+***  
+*** You need libgpg-error to build this program.
+**  This library is for example available at
+***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libgpg-error
+*** (at least version $NEED_GPG_ERROR_VERSION is required.)
+***]])
+fi
+if test "$have_libgcrypt" = "no"; then
+   die=yes
+   AC_MSG_NOTICE([[
+***  
+*** You need libgcrypt to build this program.
+**  This library is for example available at
+***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libgcrypt/
+*** (at least version $NEED_LIBGCRYPT_VERSION is required.)
+***]])
+fi
+if test "$have_libassuan" = "no"; then
+   die=yes
+   AC_MSG_NOTICE([[
 ***
-***           http://www.gnupg.org/download.html#egd
+*** You need libassuan to build this program.
+*** This library is for example available at
+***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libassuan/
+*** (at least version $NEED_LIBASSUAN_VERSION is required).
+***]])
+fi
+if test "$have_ksba" = "no"; then
+   die=yes
+    AC_MSG_NOTICE([[
 ***
-*** You may want to run ./configure with --enable-static-rnd=egd to use it.
+*** You need libksba to build this program.
+*** This library is for example available at
+***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libksba/
+*** (at least version $NEED_KSBA_VERSION is required).
 ***]])
 fi
 
+if test "$die" = "yes"; then
+    AC_MSG_ERROR([[
+***
+*** Required libraries not found. Please consult the above messages
+*** and install them before running configure again.
+***]])
+fi
 
 
-# Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
+#
+# Decide what to build
+#
+if test $have_ksba = no; then
+  build_gpgsm=no
+  build_scdaemon=no
+fi
 
-AC_SUBST(GNUPG_LIBEXECDIR,"${libexecdir}/gnupg")
+build_agent_threaded=""
+if test "$build_agent" = "yes"; then
+  if test $have_pth = no; then
+     build_agent_threaded="(not multi-threaded)"
+  fi
+fi
 
-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"
-#else
-  #define G10_LOCALEDIR     "${datadir}/locale"
-  #define GNUPG_LIBDIR      "${libdir}/gnupg"
-  #define GNUPG_LIBEXECDIR  "${libexecdir}/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
-   than one character because the using code assumes strlen()==1 */
-#ifdef HAVE_DOSISH_SYSTEM
-#define DIRSEP_C '\\\\'
-#define EXTSEP_C '.'
-#define DIRSEP_S "\\\\"
-#define EXTSEP_S "."
-#else
-#define DIRSEP_C '/'
-#define EXTSEP_C '.'
-#define DIRSEP_S "/"
-#define EXTSEP_S "."
-#endif
-G10EOF
-cat mpi/mpi-asm-defs.h >>g10defs.tmp 
-if cmp -s g10defs.h g10defs.tmp 2>/dev/null; then
-    echo "g10defs.h is unchanged"
-    rm -f g10defs.tmp
-else
-    rm -f g10defs.h
-    mv g10defs.tmp g10defs.h
-    echo "g10defs.h created"
+build_scdaemon_extra=""
+if test "$build_scdaemon" = "yes"; then
+  tmp=""
+  if test $have_pth = no; then
+     build_scdaemon_extra="not multi-threaded"
+     tmp=", "
+  fi
+  if test $have_opensc = no; then
+     build_scdaemon_extra="${build_scdaemon_extra}${tmp}no pkcs#15"
+     tmp=", "
+  fi      
+  if test -n "$build_scdaemon_extra"; then
+     build_scdaemon_extra="(${build_scdaemon_extra})"
+  fi
 fi
-]],[[
-prefix=$prefix
-exec_prefix=$exec_prefix
-libdir=$libdir
-libexecdir=$libexecdir
-datadir=$datadir
-DATADIRNAME=$DATADIRNAME
-]])
 
 
-AC_CONFIG_FILES([
+AM_CONDITIONAL(BUILD_GPG,   test "$build_gpg" = "yes")
+AM_CONDITIONAL(BUILD_GPGSM, test "$build_gpgsm" = "yes")
+AM_CONDITIONAL(BUILD_AGENT, test "$build_agent" = "yes")
+AM_CONDITIONAL(BUILD_SCDAEMON, test "$build_scdaemon" = "yes")
+
+
+AC_CONFIG_FILES([ m4/Makefile 
 Makefile
-intl/Makefile
 po/Makefile.in
-util/Makefile
-mpi/Makefile
-cipher/Makefile
+intl/Makefile
+jnlib/Makefile
+common/Makefile
+kbx/Makefile
 g10/Makefile
-keyserver/Makefile
-keyserver/gpgkeys_mailto
-keyserver/gpgkeys_test
-doc/Makefile
+sm/Makefile
+agent/Makefile
+scd/Makefile
 tools/Makefile
-zlib/Makefile
-checks/Makefile
+doc/Makefile
+tests/Makefile
 ])
 AC_OUTPUT
 
-# Give some feedback
-echo
-echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
-if test -n "$show_extraasm"; then
-  echo "  Extra cpu specific functions:$show_extraasm"
-fi
-echo
+
+
+
+echo "
+        GnuPG v${VERSION} has been configured as follows:
+        
+        Platform:  $PRINTABLE_OS_NAME ($target)
+
+        OpenPGP:   $build_gpg
+        S/MIME:    $build_gpgsm
+        Agent:     $build_agent $build_agent_threaded
+        Smartcard: $build_scdaemon $build_scdaemon_extra
+
+        Protect tool:     $show_gnupg_protect_tool_pgm
+        Default agent:    $show_gnupg_agent_pgm
+        Default pinentry: $show_gnupg_pinentry_pgm
+        Default scdaemon: $show_gnupg_scdaemon_pgm
+        Default dirmngr:  $show_gnupg_dirmngr_pgm
+"
+