* keyserver.c (parse_keyserver_uri): Force the keyserver URI scheme to
[gnupg.git] / configure.ac
index 7551e50..26c5bdd 100644 (file)
@@ -22,15 +22,14 @@ dnlAC_REVISION($Revision$)dnl
 
 AC_PREREQ(2.52)
 
 
 AC_PREREQ(2.52)
 
-# Please enter the version number here and 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.1.91, bug-gnupg@gnu.org)
+# Remember to change the version number immediately *after* a release.
+# 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
 
 development_version=yes
 
-ALL_LINGUAS="cs da de eo el es et fr gl id it ja nl pl pt_BR pt sv tr"
-static_modules="sha1 md5 rmd160"
-static_random_module=""
+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
 
 PACKAGE=$PACKAGE_NAME
 VERSION=$PACKAGE_VERSION
@@ -47,20 +46,12 @@ AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
 AC_DEFINE(_GNU_SOURCE,1,[Some tests rely on this (stpcpy) and it should be used for new programs anyway])
 
 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
 AC_DEFINE(_GNU_SOURCE,1,[Some tests rely on this (stpcpy) and it should be used for new programs anyway])
 
-AC_PROG_AWK
-
-MODULES_IN_CIPHER=`$AWK '/^EXTRA_PROGRAMS/ { for(i=3;i<=NF;i++) print $i}' \
-                                              $srcdir/cipher/Makefile.am`
-
 dnl
 dnl  Check for random module options
 dnl
 dnl
 dnl  Check for random module options
 dnl
-dnl  Fixme: get the list of available modules from MODULES_IN_CIPHER
-dnl         and check against this list
-
-AC_MSG_CHECKING([which static random module to use])
+AC_MSG_CHECKING([which random module to use])
 AC_ARG_ENABLE(static-rnd,
 AC_ARG_ENABLE(static-rnd,
-    [  --enable-static-rnd=[egd|unix|linux|none]  ],
+    [  --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=$enableval], [use_static_rnd=default] )
 
 if test "$use_static_rnd" = no; then
@@ -68,9 +59,12 @@ if test "$use_static_rnd" = no; then
 fi
 
 case "$use_static_rnd" in
 fi
 
 case "$use_static_rnd" in
-    egd | linux | unix | none | default )
+    egd | linux | unix | default )
       AC_MSG_RESULT($use_static_rnd)
       ;;
       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)
     * )
       AC_MSG_RESULT(invalid argument)
       AC_MSG_ERROR(there is no random module rnd$use_static_rnd)
@@ -78,7 +72,7 @@ case "$use_static_rnd" in
 esac
 
 AC_ARG_WITH(egd-socket,
 esac
 
 AC_ARG_WITH(egd-socket,
-    [  --with-egd-socket=NAME  Use NAME for the 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.
             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.
@@ -99,11 +93,32 @@ dnl
 dnl  Check other options
 dnl
 
 dnl  Check other options
 dnl
 
-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)
+# 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
 
 AC_MSG_CHECKING([whether assembler modules are requested])
 AC_ARG_ENABLE(asm,
 
 AC_MSG_CHECKING([whether assembler modules are requested])
 AC_ARG_ENABLE(asm,
@@ -130,17 +145,6 @@ if test "$use_exec" = no ; then
 fi
 
 if test "$use_exec" = yes ; then
 fi
 
 if test "$use_exec" = yes ; then
-  AC_MSG_CHECKING([whether to use a restricted exec-path])
-  AC_ARG_WITH(exec-path,
-      [  --with-exec-path=PATH   restrict exec-path to PATH],
-      [if test "$withval" = yes ; then
-         withval=no
-      elif test "$withval" != no ; then
-         AC_DEFINE_UNQUOTED(FIXED_EXEC_PATH,"$withval",
-                           [if set, restrict exec-path to this value])
-      fi],withval=no)
-  AC_MSG_RESULT($withval)
-
   AC_MSG_CHECKING([whether to enable photo ID viewing])
   AC_ARG_ENABLE(photo-viewers,
       [  --disable-photo-viewers disable photo ID viewers],
   AC_MSG_CHECKING([whether to enable photo ID viewing])
   AC_ARG_ENABLE(photo-viewers,
       [  --disable-photo-viewers disable photo ID viewers],
@@ -180,15 +184,14 @@ if test "$use_exec" = yes ; then
         try_ldap=$enableval, try_ldap=yes)
     AC_MSG_RESULT($try_ldap)
 
         try_ldap=$enableval, try_ldap=yes)
     AC_MSG_RESULT($try_ldap)
 
-    AC_MSG_CHECKING([whether experimental external hkp keyserver support is requested])
-    AC_ARG_ENABLE(external-hkp,
-    [  --enable-external-hkp   enable experimental external HKP keyserver interface],
-        try_hkp=$enableval, try_hkp=no)
+    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_MSG_RESULT($try_hkp)
 
     if test "$try_hkp" = yes ; then
     AC_MSG_RESULT($try_hkp)
 
     if test "$try_hkp" = yes ; then
-      GPGKEYS_HKP="gpgkeys_hkp"
-      AC_DEFINE(USE_EXTERNAL_HKP,1,[define to use the experimental external HKP keyserver interface])
+      AC_SUBST(GPGKEYS_HKP,"gpgkeys_hkp")
     fi
 
     AC_MSG_CHECKING([whether email keyserver support is requested])
     fi
 
     AC_MSG_CHECKING([whether email keyserver support is requested])
@@ -197,6 +200,14 @@ if test "$use_exec" = yes ; then
         try_mailto=$enableval, try_mailto=yes)
     AC_MSG_RESULT($try_mailto)
     fi
         try_mailto=$enableval, try_mailto=yes)
     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_MSG_RESULT($enableval)
   fi
 
 AC_MSG_CHECKING([whether included zlib is requested])
   fi
 
 AC_MSG_CHECKING([whether included zlib is requested])
@@ -229,21 +240,6 @@ AM_MAINTAINER_MODE
 
 dnl Checks for programs.
 
 
 dnl Checks for programs.
 
-dnl
-dnl Setup some stuff depending on host/target.
-dnl
-case "${target}" in
-    *-*-mingw32*)
-        disallowed_modules="rndunix rndlinux rndegd"
-        ;;
-    *-*-cygwin*)
-        disallowed_modules="rndunix rndlinux rndegd tiger"
-        ;;
-    *)
-        disallowed_modules="rndw32"
-       ;;
-esac
-
 AC_PROG_MAKE_SET
 AM_SANITY_CHECK
 missing_dir=`cd $ac_aux_dir && pwd`
 AC_PROG_MAKE_SET
 AM_SANITY_CHECK
 missing_dir=`cd $ac_aux_dir && pwd`
@@ -337,11 +333,6 @@ esac
 
 AC_SUBST(MPI_OPT_FLAGS)
 GNUPG_SYS_SYMBOL_UNDERSCORE
 
 AC_SUBST(MPI_OPT_FLAGS)
 GNUPG_SYS_SYMBOL_UNDERSCORE
-GNUPG_CHECK_PIC
-GNUPG_CHECK_EXPORTDYNAMIC
-if test "$NO_PIC" = yes; then
-    try_dynload=no
-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 Must check for network library requirements before doing link tests
 dnl for ldap, for example. If ldap libs are static (or dynamic and without
@@ -354,11 +345,11 @@ AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt,
        [NETLIBS="-lsocket $NETLIBS"]))
 
 # Try and link a LDAP test program to weed out unusable LDAP
        [NETLIBS="-lsocket $NETLIBS"]))
 
 # Try and link a LDAP test program to weed out unusable LDAP
-# libraries.  -lldap -llber -lresolv is for OpenLDAP.  -lldapssl41 is
-# for Mozilla LDAP.
+# libraries.  -lldap [-llber [-lresolv]] is for OpenLDAP.  -lldapssl41
+# is for Mozilla LDAP.
 
 if test "$try_ldap" = yes ; then
 
 if test "$try_ldap" = yes ; then
-  for LDAPLIBS in "-lldap -llber -lresolv" "-lldapssl41"; do
+  for LDAPLIBS in "-lldap" "-lldap -llber" "-lldap -llber -lresolv" "-lldapssl41"; do
     _ldap_save_libs=$LIBS
     LIBS="$LDAPLIBS $NETLIBS $LIBS"
 
     _ldap_save_libs=$LIBS
     LIBS="$LDAPLIBS $NETLIBS $LIBS"
 
@@ -382,6 +373,46 @@ if test "$try_ldap" = yes ; then
     if test "$gnupg_cv_func_ldap_init" = yes || \
        test "$gnupg_cv_func_ldaplber_init" = yes ; then
        GPGKEYS_LDAP="gpgkeys_ldap"
     if test "$gnupg_cv_func_ldap_init" = yes || \
        test "$gnupg_cv_func_ldaplber_init" = yes ; then
        GPGKEYS_LDAP="gpgkeys_ldap"
+
+       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
 
     LIBS=$_ldap_save_libs
     fi
 
     LIBS=$_ldap_save_libs
@@ -393,16 +424,27 @@ fi
 AC_SUBST(GPGKEYS_LDAP)
 AC_SUBST(LDAPLIBS)
 
 AC_SUBST(GPGKEYS_LDAP)
 AC_SUBST(LDAPLIBS)
 
+dnl This isn't necessarily sendmail itself, but anything that gives a
+dnl sendmail-ish interface to the outside world.  That includes qmail,
+dnl postfix, etc.  Basically, anything that can handle "sendmail -t".
+
 if test "$try_mailto" = yes ; then
 if test "$try_mailto" = yes ; then
-  AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
+  AC_ARG_WITH(mailprog,[  --with-mailprog=NAME    use "NAME -t" for mail transport],,with_mailprog=yes)
 
 
-  if test "$ac_cv_path_SENDMAIL" ; then
-    GPGKEYS_MAILTO="gpgkeys_mailto"
+  if test "$with_mailprog" = yes ; then
+    AC_PATH_PROG(SENDMAIL,sendmail,,$PATH:/usr/sbin:/usr/libexec:/usr/lib)
+    if test "$ac_cv_path_SENDMAIL" ; then
+      GPGKEYS_MAILTO="gpgkeys_mailto"
     fi
     fi
+  elif test "$with_mailprog" != no ; then
+    AC_MSG_CHECKING([for a mail transport program])
+    AC_SUBST(SENDMAIL,$with_mailprog)
+    AC_MSG_RESULT($with_mailprog)
+    GPGKEYS_MAILTO="gpgkeys_mailto"
   fi
   fi
-AC_SUBST(GPGKEYS_MAILTO)
+fi
 
 
-AC_SUBST(GPGKEYS_HKP)
+AC_SUBST(GPGKEYS_MAILTO)
 
 case "${target}" in
     *-*-mingw32*)
 
 case "${target}" in
     *-*-mingw32*)
@@ -434,8 +476,7 @@ AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
 
 
 #
 
 
 #
-# 1. Set flags to be used for the extension modules
-# 2. Set names of random devices
+# 1. Set names of random devices
 #
 NAME_OF_DEV_RANDOM="/dev/random"
 NAME_OF_DEV_URANDOM="/dev/urandom"
 #
 NAME_OF_DEV_RANDOM="/dev/random"
 NAME_OF_DEV_URANDOM="/dev/urandom"
@@ -443,57 +484,6 @@ case "${target}" in
     *-openbsd* | *-netbsd*)
         NAME_OF_DEV_RANDOM="/dev/srandom"
         NAME_OF_DEV_URANDOM="/dev/urandom"
     *-openbsd* | *-netbsd*)
         NAME_OF_DEV_RANDOM="/dev/srandom"
         NAME_OF_DEV_URANDOM="/dev/urandom"
-        DYNLINK_MOD_CFLAGS="-shared -rdynamic $CFLAGS_PIC -Wl,-Bshareable -Wl,-x"
-        ;;
-
-     hpux*)
-       # if using the vendor (ANSI) compiler, arrange to have `-b' passed
-       # to the linker.  If using gcc, it supports `-shared' to do the same.
-        if test -n "$GCC" ; then
-           DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
-        else
-           DYNLINK_MOD_CFLAGS='-Wl,-b'
-        fi
-        ;;
-
-    *-irix6.5*)
-        # Irix 6.5 (and probably a lot earlier, but I only still have
-       # access to 6.5.x) doesn't require any additional flags, as `-KPIC'
-       # is the default.  Also, `-shared' works with the vendor compiler
-       DYNLINK_MOD_CFLAGS="-shared"
-        ;;
-
-    alpha*-dec-osf*)
-       # osf (i.e. OSF/1, Digital UNIX, or Tru64 UNIX, pick any one...)
-       # on alpha doesn't require any PIC flags, everything is PIC.
-       # This may not be the case for osf ports to other machines, so
-       # hence the more specific match for target.
-       #
-       # Also, `-shared' works with the vendor compiler or gcc.
-       # -expect_unresolved turns off warnings about unresolved symbols.
-       DYNLINK_MOD_CFLAGS='-shared -Wl,-expect_unresolved,\*'
-         ;;
-
-    *-solaris*)
-       # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
-       if test -n "$GCC" ; then
-          DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
-       else
-          DYNLINK_MOD_CFLAGS="-G $CFLAGS_PIC"
-       fi
-       ;;
-
-    *-irix* | *-dec-osf* )
-       DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"
-       ;;
-
-    *)
-        # -shared is a gcc-ism.  Find pic flags from GNUPG_CHECK_PIC.
-        if test -n "$GCC" ; then
-           DYNLINK_MOD_CFLAGS="-shared $CFLAGS_PIC"                            
-        else
-           DYNLINK_MOD_CFLAGS="$CFLAGS_PIC"
-        fi
         ;;
 esac
 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
         ;;
 esac
 AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
@@ -506,14 +496,14 @@ AC_SUBST(MPI_OPT_FLAGS)
 dnl Checks for libraries.
 
 if test "$try_gettext" = yes; then
 dnl Checks for libraries.
 
 if test "$try_gettext" = yes; then
-AM_GNU_GETTEXT
+  AM_GNU_GETTEXT
 else
 else
-USE_NLS=no
-USE_INCLUDED_LIBINTL=no
-BUILD_INCLUDED_LIBINTL=no
-AC_SUBST(USE_NLS)
-AC_SUBST(USE_INCLUDED_LIBINTL)
-AC_SUBST(BUILD_INCLUDED_LIBINTL)
+  USE_NLS=no
+  USE_INCLUDED_LIBINTL=no
+  BUILD_INCLUDED_LIBINTL=no
+  AC_SUBST(USE_NLS)
+  AC_SUBST(USE_INCLUDED_LIBINTL)
+  AC_SUBST(BUILD_INCLUDED_LIBINTL)
 fi
 
 
 fi
 
 
@@ -524,49 +514,20 @@ if test "$try_dynload" = yes ; then
               [define to enable the use of extensions])
     AC_DEFINE(HAVE_DL_DLOPEN,1,
               [Defined when the dlopen function family is available])
               [define to enable the use of extensions])
     AC_DEFINE(HAVE_DL_DLOPEN,1,
               [Defined when the dlopen function family is available])
-    DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
-    use_gnupg_extensions=yes
   else
     AC_CHECK_FUNCS(dlopen)
     if test "$ac_cv_func_dlopen" = "yes"; then
       AC_DEFINE(USE_DYNAMIC_LINKING)
       AC_DEFINE(HAVE_DL_DLOPEN)
   else
     AC_CHECK_FUNCS(dlopen)
     if test "$ac_cv_func_dlopen" = "yes"; then
       AC_DEFINE(USE_DYNAMIC_LINKING)
       AC_DEFINE(HAVE_DL_DLOPEN)
-      DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
-      use_gnupg_extensions=yes
-    else
-      AC_CHECK_LIB(dld,shl_load)
-      if test "$ac_cv_lib_dld_shl_load" = "yes"; then
-        AC_DEFINE(USE_DYNAMIC_LINKING)
-        AC_DEFINE(HAVE_DL_SHL_LOAD,1,
-                  [Defined if the shl_load function family is available])
-        DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
-        use_gnupg_extensions=yes
-dnl -----------------
-dnl  DLD is not ready for use. So I better disable this test
-dnl
-dnl    AC_CHECK_LIB(dld,dld_link)
-dnl    if test "$ac_cv_lib_dld_dld_link" = "yes"; then
-dnl      AC_DEFINE(USE_DYNAMIC_LINKING)
-dnl      AC_DEFINE(HAVE_DLD_DLD_LINK)
-dnl      DYNLINK_LDFLAGS="$CFLAGS_EXPORTDYNAMIC"
-dnl      use_gnupg_extensions=yes
-dnl ---------------
-      fi
     fi
   fi
 else
   AC_MSG_CHECKING(for dynamic loading)
   DYNLINK_LDFLAGS=
   DYNLINK_MOD_CFLAGS=
     fi
   fi
 else
   AC_MSG_CHECKING(for dynamic loading)
   DYNLINK_LDFLAGS=
   DYNLINK_MOD_CFLAGS=
-  use_gnupg_extensions=no
   AC_MSG_RESULT(has been disabled)
 fi
 
   AC_MSG_RESULT(has been disabled)
 fi
 
-AM_CONDITIONAL(ENABLE_GNUPG_EXTENSIONS, test "$use_gnupg_extensions" = yes )
-AC_SUBST(DYNLINK_LDFLAGS)
-AC_SUBST(DYNLINK_MOD_CFLAGS)
-
-
 dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h)
 dnl Checks for header files.
 AC_HEADER_STDC
 AC_CHECK_HEADERS(unistd.h langinfo.h termio.h locale.h)
@@ -575,6 +536,7 @@ dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
 AC_C_INLINE
 AC_TYPE_SIZE_T
 AC_C_CONST
 AC_C_INLINE
 AC_TYPE_SIZE_T
+AC_TYPE_MODE_T
 AC_TYPE_SIGNAL
 AC_DECL_SYS_SIGLIST
 
 AC_TYPE_SIGNAL
 AC_DECL_SYS_SIGLIST
 
@@ -704,143 +666,69 @@ fi
 
 
 dnl
 
 
 dnl
-dnl Figure out the default linkage mode for random modules
+dnl Figure out the default random module.
 dnl
 dnl
-print_egd_notice=no
+random_modules=""
 if test "$use_static_rnd" = default; then
 if test "$use_static_rnd" = default; then
-  if test "$ac_cv_have_dev_random" = yes; then
-      static_random_module="rndlinux"
-  else
-      case "${target}" in
-          *-*-mingw32*|*-*-cygwin*)
-              static_random_module="rndw32"
-              AC_DEFINE(USE_STATIC_RNDW32,1,
-                       [At some point in the code we need to know that
-                        we use the Windows random module.])
-              ;;
-          i?86-emx-os2|i?86-*-os2*emx)
-              static_random_module="rndos2"
-              ;;
-          m68k-atari-mint)
-              static_random_module="rndatari"
-              ;;
-          i?86-*-msdosdjgpp*)
-              :
-              ;;
-          *)
-              static_random_module="rndunix"
-              print_egd_notice=yes
-             ;;
-      esac
-  fi
+     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
+     fi
 else
 else
-  if test "$use_static_rnd" = none; then
-    :
+  if test "$use_static_rnd" = auto; then
+     random_modules="rndlinux rndegd rndunix"
+     AC_DEFINE(USE_ALL_RANDOM_MODULES, 1)
   else
   else
-    static_random_module="rnd$use_static_rnd"
-    if test "$use_static_rnd" = "unix"; then
-        print_egd_notice=yes
-    fi
+     random_modules="rnd$use_static_rnd";
   fi
 fi
 
   fi
 fi
 
-
-if test "$print_egd_notice" = "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:
-***
-***           http://www.gnupg.org/download.html#egd
-***
-*** You may want to run ./configure with --enable-static-rnd=none to be
-*** able to load the EGD client code dynamically; this way you can choose
-*** between RNDUNIX and RNDEGD without recompilation.
-***]])
+if test -z "$random_modules"; then
+   AC_MSG_ERROR(no random module available)
 fi
 fi
-
-dnl
-dnl Parse the modules list and build the list
-dnl of static and dynamically linked modules
-dnl
-dnl (We always need a static rmd160)
-static_modules="$static_modules rmd160 $static_random_module"
-STATIC_CIPHER_NAMES=""
-STATIC_CIPHER_OBJS=""
-DYNAMIC_CIPHER_MODS=""
-show_dynlink=""
-for name in $MODULES_IN_CIPHER; do
-    x="yes"
-    for i in $disallowed_modules; do
-        if test "$name" = "$i" ; then x="no" ; fi
-    done;
-    if test $x = yes; then
-        x="no"
-        for i in $static_modules; do
-            if test "$name" = "$i" ; then
-                x="yes"
-            fi
-        done;
-        if test $x = yes; then
-            STATIC_CIPHER_NAMES="$STATIC_CIPHER_NAMES $name"
-            STATIC_CIPHER_OBJS="$STATIC_CIPHER_OBJS $name.o"
-        else
-            DYNAMIC_CIPHER_MODS="$DYNAMIC_CIPHER_MODS $name"
-            show_dynlink="$show_dynlink $name"
-        fi
-    fi
-done
-AC_SUBST(STATIC_CIPHER_OBJS)
-AC_SUBST(STATIC_CIPHER_NAMES)
-AC_SUBST(DYNAMIC_CIPHER_MODS)
-
-dnl
-dnl And build the constructor file
-dnl
-
-test -d cipher || mkdir cipher
-cat <<G10EOF >cipher/construct.c
-/* automatically generated by configure - do not edit */
-
-G10EOF
-show_statlink=""
-for name in $STATIC_CIPHER_NAMES; do
-    echo "void ${name}_constructor(void);" >>cipher/construct.c
-    show_statlink="$show_statlink $name"
-done
-
-cat <<G10EOF >>cipher/construct.c
-
-void
-cipher_modules_constructor(void)
-{
-    static int done = 0;
-    if( done )
-        return;
-    done = 1;
-
-G10EOF
-for name in $STATIC_CIPHER_NAMES; do
-    echo "   ${name}_constructor();" >>cipher/construct.c
+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
 done
-echo '}' >>cipher/construct.c
-
-
-
-
-dnl
-dnl Figure how to link the cipher modules
-dnl
-AC_SUBST(STATIC_CIPHER_OBJS)
-AC_SUBST(DYNAMIC_CIPHER_MODS)
-
 
 dnl setup assembler stuff
 AC_MSG_CHECKING(for mpi assembler functions)
 
 dnl setup assembler stuff
 AC_MSG_CHECKING(for mpi assembler functions)
@@ -944,20 +832,46 @@ fi
 
 AC_SUBST(NETLIBS)
 
 
 AC_SUBST(NETLIBS)
 
+
+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:
+***
+***           http://www.gnupg.org/download.html#egd
+***
+*** You may want to run ./configure with --enable-static-rnd=egd to use it.
+***]])
+fi
+
+
+
 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
 
 # Note the \\\\ for backslashes.  Autoconf eats one layer, leaving \\
 
+AC_SUBST(GNUPG_LIBEXECDIR,"${libexecdir}/gnupg")
+
 AC_CONFIG_COMMANDS(g10defs.h,[[
 cat >g10defs.tmp <<G10EOF
 /* Generated automatically by configure */
 #ifdef HAVE_DRIVE_LETTERS
 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_DATADIR "c:/lib/gnupg"
-  #define GNUPG_HOMEDIR "c:/gnupg"
+  #define G10_LOCALEDIR     "c:\\\\lib\\\\gnupg\\\\locale"
+  #define GNUPG_LIBDIR      "c:\\\\lib\\\\gnupg"
+  #define GNUPG_LIBEXECDIR  "c:\\\\lib\\\\gnupg"
+  #define GNUPG_DATADIR     "c:\\\\lib\\\\gnupg"
+  #define GNUPG_HOMEDIR     "c:\\\\gnupg"
 #else
 #else
-  #define G10_LOCALEDIR "${datadir}/locale"
-  #define GNUPG_LIBDIR  "${libdir}/gnupg"
-  #define GNUPG_DATADIR "${datadir}/gnupg"
+  #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
   #ifdef __VMS
     #define GNUPG_HOMEDIR "/SYS\$LOGIN/gnupg" 
   #else
@@ -992,6 +906,7 @@ fi
 prefix=$prefix
 exec_prefix=$exec_prefix
 libdir=$libdir
 prefix=$prefix
 exec_prefix=$exec_prefix
 libdir=$libdir
+libexecdir=$libexecdir
 datadir=$datadir
 DATADIRNAME=$DATADIRNAME
 ]])
 datadir=$datadir
 DATADIRNAME=$DATADIRNAME
 ]])
@@ -1018,14 +933,7 @@ AC_OUTPUT
 # Give some feedback
 echo
 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
 # Give some feedback
 echo
 echo   "                Configured for: $PRINTABLE_OS_NAME ($target)"
-if test -n "$show_dynlink"; then
-  echo "    Dynamically linked modules:$show_dynlink"
-fi
-if test -n "$show_statlink"; then
-  echo "     Statically linked modules:$show_statlink"
-fi
 if test -n "$show_extraasm"; then
   echo "  Extra cpu specific functions:$show_extraasm"
 fi
 echo
 if test -n "$show_extraasm"; then
   echo "  Extra cpu specific functions:$show_extraasm"
 fi
 echo
-