.
[gnupg.git] / configure.ac
index 1f3a6b0..d0ffa8c 100644 (file)
@@ -1,6 +1,6 @@
 # configure.ac - for GnuPG 1.9
 # Copyright (C) 1998, 1999, 2000, 2001, 2002,
-#               2003 Free Software Foundation, Inc.
+#               2003, 2004 Free Software Foundation, Inc.
 # 
 # This file is part of GnuPG.
 # 
 
 # Process this file with autoconf to produce a configure script.
 AC_PREREQ(2.52)
-min_automake_version="1.7.6"
+min_automake_version="1.9.3"
 
 # Version number: Remember to change it immediately *after* a release.
 #                 Add a "-cvs" prefix for non-released code.
-AC_INIT(gnupg, 1.9.3, gnupg-devel@gnupg.org)
+AC_INIT(gnupg, 1.9.16-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.
 development_version=yes
-NEED_GPG_ERROR_VERSION=0.6
-NEED_LIBGCRYPT_VERSION=1.1.91
-NEED_LIBASSUAN_VERSION=0.6.2
-NEED_KSBA_VERSION=0.9.1
+NEED_GPG_ERROR_VERSION=1.0
+
+NEED_LIBGCRYPT_API=1
+NEED_LIBGCRYPT_VERSION=1.1.94
+
+NEED_LIBASSUAN_VERSION=0.6.9
+
+NEED_KSBA_VERSION=0.9.11
+
 NEED_OPENSC_VERSION=0.8.0
 
 
+
 PACKAGE=$PACKAGE_NAME
+PACKAGE_GT=${PACKAGE_NAME}2
 VERSION=$PACKAGE_VERSION
 
 AC_CONFIG_AUX_DIR(scripts)
@@ -59,11 +66,15 @@ GNUPG_BUILD_PROGRAM(gpg, yes)
 GNUPG_BUILD_PROGRAM(gpgsm, yes)
 GNUPG_BUILD_PROGRAM(agent, yes)
 GNUPG_BUILD_PROGRAM(scdaemon, yes)
+GNUPG_BUILD_PROGRAM(symcryptrun, no)
 
 
 AC_SUBST(PACKAGE)
+AC_SUBST(PACKAGE_GT)
 AC_SUBST(VERSION)
 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
+AC_DEFINE_UNQUOTED(PACKAGE_GT, "$PACKAGE_GT",
+                                [Name of this package for gettext])
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
 AC_DEFINE_UNQUOTED(PACKAGE_BUGREPORT, "$PACKAGE_BUGREPORT",
                                         [Bug report address])
@@ -74,63 +85,66 @@ AC_DEFINE_UNQUOTED(NEED_KSBA_VERSION, "$NEED_KSBA_VERSION",
 
 
 
-
-# I know that it is in general not a good idea to evaluate bindir in
-# the configuration but we want to hard code the defaults into some of
-# the programs and doing this during a make install is not a good
-# idea.  We also have the problem that 2 of the programs are included
-# in the package but the others are distributed in other packages.
-eval my_default_bindir=${exec_prefix}
-test "x${my_default_bindir}" = xNONE && my_default_bindir=${ac_default_prefix}
-my_default_bindir=${my_default_bindir}/bin
-
-# Same goes for the pkglibdir which is used to call the gpg-protect-tool.
-eval my_default_pkglibdir=${exec_prefix}
-test "x${my_default_pkglibdir}" = xNONE && my_default_pkglibdir=${ac_default_prefix}
-my_default_pkglibdir=${my_default_pkglibdir}/lib/${PACKAGE_NAME}
-
+# 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 gpg-agent)],
-          gnupg_agent_pgm="$withval",
-          gnupg_agent_pgm="${my_default_bindir}/gpg-agent" )
-AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_AGENT, "$gnupg_agent_pgm",
-                   [Default location of the gpg-agent program])
+    [  --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="" )
-if test -z "$gnupg_pinentry_pgm"; then
-  gnupg_pinentry_pgm=${my_default_bindir}/pinentry
-fi
-AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_PINENTRY, "$gnupg_pinentry_pgm",
-                   [Default location of the pinentry program])
+          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="" )
-if test -z "$gnupg_scdaemon_pgm"; then
-  gnupg_scdaemon_pgm=${my_default_bindir}/scdaemon
-fi
-AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_SCDAEMON, "$gnupg_scdaemon_pgm",
-                   [Default location of the scdaemon program])
+          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="" )
-if test -z "$gnupg_dirmngr_pgm"; then
-  gnupg_dirmngr_pgm=${my_default_bindir}/dirmngr
-fi
-AC_DEFINE_UNQUOTED(GNUPG_DEFAULT_DIRMNGR, "$gnupg_dirmngr_pgm",
-                   [Default location of the dirmngr program])
-
-AC_ARG_WITH(protect-tool,
-    [  --with-protect-tool=PATH  Use PATH as the protect-tool)],
-          gnupg_protect_tool="$withval", gnupg_protect_tool="" )
-if test -z "$gnupg_protect_tool"; then
-  gnupg_protect_tool=${my_default_pkglibdir}/gpg-protect-tool
-fi
-AC_DEFINE_UNQUOTED(GNUPG_PROTECT_TOOL, "$gnupg_protect_tool",
-                   [Name of the protect tool program])
+          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"
+
 
 
+# Some folks want to use only the agent form this packet.  Make it
+# easier for them by providing the configure option
+# --enable-only-agent.
+AC_ARG_ENABLE(agent-only,
+    AC_HELP_STRING([--enable-agent-only],[build only the gpg-agent]),
+    build_agent_only=$enableval)
 
+
+# Configure option to allow or disallow execution of external
+# programs, like a photo viewer.
 AC_MSG_CHECKING([whether to enable external program execution])
 AC_ARG_ENABLE(exec,
     AC_HELP_STRING([--disable-exec],[disable all external program execution]),
@@ -206,12 +220,6 @@ if test "$use_exec" = yes ; then
     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] )
-AC_MSG_RESULT($g10_force_zlib)
-
 dnl
 dnl Check whether we want to use Linux capabilities
 dnl
@@ -226,15 +234,13 @@ 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"
 
-#if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
-#define EXEC_TEMPFILE_ONLY
-#endif
-
 /* Tell libgcrypt not to use its own libgpg-error implementation. */
 #define USE_LIBGPG_ERROR 1
 
@@ -243,7 +249,69 @@ AH_BOTTOM([
    we use 2 here even for GnuPG 1.9.x. */
 #define GNUPG_MAJOR_VERSION 2
 
-#include "g10defs.h"
+/* 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 DIRSEP_S "\\"
+#define EXTSEP_C '.'
+#define EXTSEP_S "."
+#define PATHSEP_C ';'
+#define PATHSEP_S ";"
+#define EXEEXT_S ".exe"
+#else
+#define DIRSEP_C '/'
+#define DIRSEP_S "/"
+#define EXTSEP_C '.'
+#define EXTSEP_S "."
+#define PATHSEP_C ':'
+#define PATHSEP_S ":"
+#define EXEEXT_S ""
+#endif
+
+/* This is the same as VERSION, but should be overridden if the
+   platform cannot handle things like dots '.' in filenames. Set
+   SAFE_VERSION_DOT and SAFE_VERSION_DASH to whatever SAFE_VERSION
+   uses for dots and dashes. */
+#define SAFE_VERSION VERSION
+#define SAFE_VERSION_DOT  '.'
+#define SAFE_VERSION_DASH '-'
+
+/* 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:\\gnupg"
+#define GNUPG_LIBDIR      "c:\\gnupg"
+#define GNUPG_DATADIR     "c:\\gnupg"
+#endif
+
+/* Setup the hardwired names of modules. */
+#ifndef GNUPG_DEFAULT_AGENT
+#define GNUPG_DEFAULT_AGENT    ( GNUPG_BINDIR DIRSEP_S "gpg-agent" EXEEXT_S )
+#endif
+#ifndef GNUPG_DEFAULT_PINENTRY
+#define GNUPG_DEFAULT_PINENTRY ( GNUPG_BINDIR DIRSEP_S "pinentry" EXEEXT_S )
+#endif
+#ifndef GNUPG_DEFAULT_SCDAEMON
+#define GNUPG_DEFAULT_SCDAEMON ( GNUPG_BINDIR DIRSEP_S "scdaemon" EXEEXT_S )
+#endif
+#ifndef GNUPG_DEFAULT_DIRMNGR
+#define GNUPG_DEFAULT_DIRMNGR  ( GNUPG_BINDIR DIRSEP_S "dirmngr" EXEEXT_S )
+#endif
+#ifndef GNUPG_DEFAULT_PROTECT_TOOL
+#define GNUPG_DEFAULT_PROTECT_TOOL \
+                    ( GNUPG_LIBEXECDIR DIRSEP_S "gpg-protect-tool" EXEEXT_S )
+#endif
+
+
+/* Derive some other constants. */
+#if !(defined(HAVE_FORK) && defined(HAVE_PIPE) && defined(HAVE_WAITPID))
+#define EXEC_TEMPFILE_ONLY
+#endif
 
 ])
 
@@ -277,8 +345,9 @@ GNUPG_CHECK_DOCBOOK_TO_TEXI
 
 try_gettext=yes
 have_dosish_system=no
-case "${target}" in
-    *-*-mingw32*)
+have_w32_system=no
+case "${host}" in
+    *-mingw32*)
         # special stuff for Windoze NT
         ac_cv_have_dev_random=no
         AC_DEFINE(USE_ONLY_8DOT3,1,
@@ -290,6 +359,7 @@ case "${target}" in
                    MingW32 systems and these systems lack Posix functions,
                    we use a simplified version of gettext])
         have_dosish_system=yes
+        have_w32_system=yes
         try_gettext="no"
         ;;
     i?86-emx-os2 | i?86-*-os2*emx )
@@ -343,12 +413,18 @@ esac
 
 if test "$have_dosish_system" = yes; then
    AC_DEFINE(HAVE_DOSISH_SYSTEM,1,
-             [defined if we run on some of the PCDOS like systems 
+             [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)
 
+if test "$have_w32_system" = yes; then
+   AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
+fi
+AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
+
+
 
 #
 # Checks for libraries.
@@ -366,7 +442,7 @@ AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
 #
 # Libgcrypt is our generic crypto library
 #
-AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_VERSION",
+AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
         have_libgcrypt=yes,have_libgcrypt=no)
 
 
@@ -385,16 +461,38 @@ 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,
+AC_CHECK_LIB(usb, usb_bulk_write,
               [ LIBUSB_LIBS="$LIBUSB_LIBS -lusb"
                 AC_DEFINE(HAVE_LIBUSB,1,
                          [defined if libusb is available])
              ])
 AC_SUBST(LIBUSB_LIBS)
+AC_CHECK_FUNCS(usb_create_match)
+
+#
+# Check wether it is necessary to link against libdl.
+#
+LIBS=""
+AC_SEARCH_LIBS(dlopen, c dl,,,)
+DL_LIBS=$LIBS
+AC_SUBST(DL_LIBS)
+
+#
+# Checks for symcryptrun:
+#
+
+# libutil has openpty() and login_tty().
+AC_CHECK_LIB(util, openpty,
+              [ LIBUTIL_LIBS="$LIBUTIL_LIBS -lutil"
+                AC_DEFINE(HAVE_LIBUTIL,1,
+                         [defined if libutil is available])
+             ])
+AC_SUBST(LIBUTIL_LIBS)
 
+# shred is used to clean temporary plain text files.
+AC_PATH_PROG(SHRED, shred, /usr/bin/shred)
+AC_DEFINE_UNQUOTED(SHRED,
+       "${SHRED}", [defines the filename of the shred program])
 
 #
 # OpenSC is needed by the SCdaemon - if it is not availbale we can only
@@ -405,10 +503,11 @@ if test $have_opensc = yes; then
   AC_DEFINE(HAVE_OPENSC,1,
             [defined if the OpenSC library is available])
 fi
-
+AM_CONDITIONAL(HAVE_OPENSC, test "$have_opensc" = "yes")
 
 #
 # Check whether the (highly desirable) GNU Pth library is available
+# Note, that we include a Pth emulation for W32.
 #
 AC_ARG_WITH(pth-prefix,
             AC_HELP_STRING([--with-pth-prefix=PFX],
@@ -418,7 +517,8 @@ 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
+if test "$have_w32_system" = no; then
+ if test "$PTH_CONFIG" = "no"; then
     AC_MSG_WARN([[
 ***
 *** To support concurrent access to the gpg-agent and the SCdaemon
@@ -427,7 +527,7 @@ if test "$PTH_CONFIG" = "no"; then
 *** On a Debian GNU/Linux system you might want to try 
 ***   apt-get install libpth-dev
 ***]])
-else
+ else
   GNUPG_PTH_VERSION_CHECK(1.3.7)
   if test $have_pth = yes; then      
      PTH_CFLAGS=`$PTH_CONFIG --cflags`
@@ -436,10 +536,20 @@ else
      AC_DEFINE(USE_GNU_PTH, 1,
               [Defined if the GNU Portable Thread Library should be used])
   fi
+ fi
+else 
+ have_pth=yes
+ PTH_CFLAGS=""
+ PTH_LIBS=""
+ AC_DEFINE(USE_GNU_PTH, 1)
 fi
 AC_SUBST(PTH_CFLAGS)
 AC_SUBST(PTH_LIBS)
 
+AC_ARG_ENABLE(threads,
+    AC_HELP_STRING([--disable-threads],[allow building without Pth support])
+             )
+
 
 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
@@ -584,8 +694,8 @@ fi
 
 AC_SUBST(GPGKEYS_MAILTO)
 
-case "${target}" in
-    *-*-mingw32*)
+case "${host}" in
+    *-mingw32*)
         PRINTABLE_OS_NAME="MingW32"
         ;;
     *-*-cygwin*)
@@ -609,7 +719,7 @@ AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
                    [A human readable text with the name of the OS])
 
 
-AM_GNU_GETTEXT_VERSION(0.12.1)
+AM_GNU_GETTEXT_VERSION(0.14.1)
 if test "$try_gettext" = yes; then
   AM_GNU_GETTEXT(,[need-ngettext])
 
@@ -681,6 +791,7 @@ else
   fi
 fi
 
+# fixme: do we really need this - it should be encapsulated in libassuan
 GNUPG_SYS_SO_PEERCRED
 
 # Checks for library functions.
@@ -701,12 +812,12 @@ 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)
-
+AC_REPLACE_FUNCS(strsep)
+AC_REPLACE_FUNCS(ttyname)
 
 
 
@@ -715,6 +826,8 @@ AC_REPLACE_FUNCS(putc_unlocked)
 # it is broken.  It has been reported that some Solaris and HP UX systems 
 # raise an SIGILL
 #
+#  fixme: Do we need this - iirc, this is only used by libgcrypt.
+#
 AC_CACHE_CHECK([for gethrtime], 
                [gnupg_cv_func_gethrtime],
                [AC_TRY_LINK([#include <sys/times.h>],[
@@ -753,6 +866,8 @@ GNUPG_FUNC_MKDIR_TAKES_ONE_ARG
 dnl
 dnl Check whether we can use Linux capabilities as requested
 dnl
+#  fixme: Still required?
+#
 if test "$use_capabilities" = "yes" ; then
 use_capabilities=no
 AC_CHECK_HEADERS(sys/capability.h)
@@ -792,7 +907,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
@@ -827,14 +942,10 @@ fi
 
 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
-if test "$g10_force_zlib" = "yes"; then
-  :
-else
-  _cppflags="${CPPFLAGS}"
-  _ldflags="${LDFLAGS}"
+_cppflags="${CPPFLAGS}"
+_ldflags="${LDFLAGS}"
 
-  AC_ARG_WITH(zlib,
+AC_ARG_WITH(zlib,
   [  --with-zlib=DIR         use libz in DIR],[
     if test -d "$withval"; then
       CPPFLAGS="${CPPFLAGS} -I$withval/include"
@@ -842,23 +953,20 @@ else
     fi
   ])
 
-  AC_CHECK_HEADER(zlib.h,
+AC_CHECK_HEADER(zlib.h,
       AC_CHECK_LIB(z, deflateInit2_,
-       use_local_zlib=no
        LIBS="$LIBS -lz",
        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
        CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
-fi
  
-if test "$use_local_zlib" = yes ; then
-    AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, true)
-    AC_CONFIG_LINKS(zlib.h:zlib/zlib.h zconf.h:zlib/zconf.h )
-    ZLIBS="../zlib/libzlib.a"
-else
-    AM_CONDITIONAL(ENABLE_LOCAL_ZLIB, false)
-    ZLIBS=
-fi
-AC_SUBST(ZLIBS)
+
+
+# See wether we want to run the long test suite.
+AC_ARG_WITH(pkits-tests,
+    AC_HELP_STRING([--with-pkits-tests],[run the PKITS based tests]),
+    [run_pkits_tests=$withval], [run_pkits_tests=no])
+AM_CONDITIONAL(RUN_PKITS_TESTS, test "$run_pkits_tests" = "yes")
+
 
 # Allow users to append something to the version string without
 # flagging it as development version.  The user version parts is
@@ -880,15 +988,11 @@ 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
+# 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*)
-        W32LIBS="-lwsock32"
-        ;;
-    *)
-       ;;
-esac
+if test "$have_w32_system" = yes; then
+   W32LIBS="-lwsock32"
+fi
 
 
 if test "$GCC" = yes; then
@@ -906,9 +1010,62 @@ AC_SUBST(W32LIBS)
 
 # We use jnlib, so tell other modules about it
 AC_DEFINE(HAVE_JNLIB_LOGGING, 1,
-        [Defined if jnlib style logging fucntions are available])
+          [Defined if jnlib style logging functions are available])
+
+# For W32 we need to use our Pth emulation code
+if test "$have_w32_system" = yes; then
+  AC_CONFIG_LINKS(pth.h:jnlib/w32-pth.h)
+fi
+
+
+#
+# Decide what to build
+#
+missing_pth=no
+if test $have_ksba = no; then
+  build_gpgsm=no
+  build_scdaemon=no
+fi
+
+build_agent_threaded=""
+if test "$build_agent" = "yes"; then
+  if test $have_pth = no; then
+     build_agent_threaded="(not multi-threaded)"
+     missing_pth=yes
+  fi
+fi
+
+build_scdaemon_extra=""
+if test "$build_scdaemon" = "yes"; then
+  tmp=""
+  if test $have_pth = no; then
+     build_scdaemon_extra="not multi-threaded"
+     tmp=", "
+     missing_pth=yes
+  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
 
 
+if test "$build_agent_only" = "yes" ; then
+  build_gpg=no
+  build_gpgsm=no
+  build_scdaemon=no
+fi
+
+
+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")
+AM_CONDITIONAL(BUILD_SYMCRYPTRUN, test "$build_symcryptrun" = "yes")
+
 
 
 #
@@ -922,7 +1079,7 @@ if test "$have_gpg_error" = "no"; then
 ***  
 *** You need libgpg-error to build this program.
 **  This library is for example available at
-***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libgpg-error
+***   ftp://ftp.gnupg.org/gcrypt/libgpg-error
 *** (at least version $NEED_GPG_ERROR_VERSION is required.)
 ***]])
 fi
@@ -932,8 +1089,8 @@ if test "$have_libgcrypt" = "no"; then
 ***  
 *** 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.)
+***   ftp://ftp.gnupg.org/gcrypt/libgcrypt/
+*** (at least version $NEED_LIBGCRYPT_VERSION using API $NEED_LIBGCRYPT_API) is required.)
 ***]])
 fi
 if test "$have_libassuan" = "no"; then
@@ -942,20 +1099,34 @@ if test "$have_libassuan" = "no"; then
 ***
 *** You need libassuan to build this program.
 *** This library is for example available at
-***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libassuan/
+***   ftp://ftp.gnupg.org/gcrypt/alpha/libassuan/
 *** (at least version $NEED_LIBASSUAN_VERSION is required).
 ***]])
 fi
 if test "$have_ksba" = "no"; then
-   die=yes
     AC_MSG_NOTICE([[
 ***
 *** You need libksba to build this program.
 *** This library is for example available at
-***   ftp://ftp.gnupg.org/pub/gcrypt/alpha/libksba/
+***   ftp://ftp.gnupg.org/gcrypt/alpha/libksba/
 *** (at least version $NEED_KSBA_VERSION is required).
 ***]])
 fi
+if test "$missing_pth" = "yes"; then
+    AC_MSG_NOTICE([[
+***
+*** It is strongly suggested to build with support for the
+*** GNU Portable Threads Library (Pth). Please install this
+*** library first or use --disable-threads to allow building
+*** anyway.  The library is for example available at
+***   ftp://ftp.gnu.org/gnu/pth/
+*** On a Debian GNU/Linux system you can install it using 
+***   apt-get install libpth-dev
+***]])
+  if test "$enable_threads" != "no"; then
+     die=yes
+  fi
+fi
 
 if test "$die" = "yes"; then
     AC_MSG_ERROR([[
@@ -966,101 +1137,6 @@ if test "$die" = "yes"; then
 fi
 
 
-#
-# Decide what to build
-#
-if test $have_ksba = no; then
-  build_gpgsm=no
-  build_scdaemon=no
-fi
-
-build_agent_threaded=""
-if test "$build_agent" = "yes"; then
-  if test $have_pth = no; then
-     build_agent_threaded="(not multi-threaded)"
-  fi
-fi
-
-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
-
-
-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_COMMANDS(g10defs.h,[[
-cat >g10defs.tmp <<G10EOF
-/* Generated automatically by configure */
-/* FIXME: Shouldn't we replace GNUPG_HOMEDIR by GNUPG_DEFAULT_HOMEDIR
-   and we propably can get rid of g10defs.h */
-#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_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
-/* This is the same as VERSION, but should be overridden if the
-   platform cannot handle things like dots '.' in filenames. */
-#define SAFE_VERSION VERSION
-G10EOF
-## Do we really need the following?  It defines BYTES_PER-MPI_LIMB
-## 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"
-fi
-]],[[
-prefix=$prefix
-exec_prefix=$exec_prefix
-libdir=$libdir
-libexecdir=$libexecdir
-datadir=$datadir
-DATADIRNAME=$DATADIRNAME
-]])
 
 AC_CONFIG_FILES([ m4/Makefile 
 Makefile
@@ -1079,21 +1155,27 @@ tests/Makefile
 ])
 AC_OUTPUT
 
+#tests/pkits/Makefile
+
+
+
 
 echo "
         GnuPG v${VERSION} has been configured as follows:
         
-        Platform:  $PRINTABLE_OS_NAME ($target)
+        Platform:  $PRINTABLE_OS_NAME ($host)
 
         OpenPGP:   $build_gpg
         S/MIME:    $build_gpgsm
         Agent:     $build_agent $build_agent_threaded
         Smartcard: $build_scdaemon $build_scdaemon_extra
 
-        Protect tool:     $gnupg_protect_tool
-        Default agent:    $gnupg_agent_pgm
-        Default pinentry: $gnupg_pinentry_pgm
-        Default scdaemon: $gnupg_scdaemon_pgm
-        Default dirmngr:  $gnupg_dirmngr_pgm
+        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
+
+        PKITS based tests: $run_pkits_tests
 "