* NEWS: Document new ways to enable MDC, and change in automatic
[gnupg.git] / configure.ac
index 899d90a..33bf4e5 100644 (file)
@@ -25,12 +25,10 @@ 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)
+AC_INIT(gnupg, 1.1.92, bug-gnupg@gnu.org)
 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
@@ -47,20 +45,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_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  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,
-    [  --enable-static-rnd=[egd|unix|linux|none]  ],
+    [  --enable-static-rnd=[egd|unix|linux]  ],
 [use_static_rnd=$enableval], [use_static_rnd=default] )
 
 if test "$use_static_rnd" = no; then
@@ -68,7 +58,7 @@ if test "$use_static_rnd" = no; then
 fi
 
 case "$use_static_rnd" in
-    egd | linux | unix | none | default )
+    egd | linux | unix | default )
       AC_MSG_RESULT($use_static_rnd)
       ;;
     * )
@@ -99,11 +89,32 @@ 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,
@@ -120,6 +131,16 @@ if test "$use_m_guard" = yes ; then
     AC_DEFINE(M_GUARD,1,[Define to use the (obsolete) malloc guarding feature])
 fi
 
+AC_MSG_CHECKING([whether to enable experimental TIGER digest support])
+AC_ARG_ENABLE(tiger,
+    [  --enable-tiger          enable experimental TIGER digest support],
+    use_tiger=$enableval, use_tiger=no)
+AC_MSG_RESULT($use_tiger)
+if test "$use_tiger" = yes ; then
+    AC_SUBST(TIGER_O,tiger.o)
+    AC_DEFINE(USE_TIGER,1,[Define to include experimental TIGER digest support])
+fi
+
 AC_MSG_CHECKING([whether to enable external program execution])
 AC_ARG_ENABLE(exec,
     [  --disable-exec          disable all external program execution],
@@ -130,17 +151,6 @@ if test "$use_exec" = no ; 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],
@@ -197,6 +207,14 @@ if test "$use_exec" = yes ; then
         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])
@@ -229,21 +247,6 @@ AM_MAINTAINER_MODE
 
 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`
@@ -337,11 +340,6 @@ esac
 
 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
@@ -446,8 +444,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"
@@ -455,57 +452,6 @@ case "${target}" in
     *-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",
@@ -518,14 +464,14 @@ AC_SUBST(MPI_OPT_FLAGS)
 dnl Checks for libraries.
 
 if test "$try_gettext" = yes; then
-AM_GNU_GETTEXT
+  AM_GNU_GETTEXT
 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
 
 
@@ -536,49 +482,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])
-    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)
-      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=
-  use_gnupg_extensions=no
   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)
@@ -716,9 +633,9 @@ fi
 
 
 dnl
-dnl Figure out the default linkage mode for random modules
+dnl Figure out the default random module.
 dnl
-print_egd_notice=no
+static_random_module=""
 if test "$use_static_rnd" = default; then
   if test "$ac_cv_have_dev_random" = yes; then
       static_random_module="rndlinux"
@@ -726,9 +643,6 @@ if test "$use_static_rnd" = default; then
       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"
@@ -741,24 +655,19 @@ if test "$use_static_rnd" = default; then
               ;;
           *)
               static_random_module="rndunix"
-              print_egd_notice=yes
              ;;
       esac
   fi
-else
-  if test "$use_static_rnd" = none; then
-    :
-  else
-    static_random_module="rnd$use_static_rnd"
-    if test "$use_static_rnd" = "unix"; then
-        print_egd_notice=yes
-    fi
-  fi
 fi
-
-
-if test "$print_egd_notice" = "yes"; then
-    AC_MSG_WARN([[
+case "$static_random_module" in
+  rndlinux)
+      AC_DEFINE(USE_RNDLINUX,1, 
+                  [Defined if the /dev/random based RNG shoudl be used.])
+        ;;
+  rndunix)
+       AC_DEFINE(USE_RNDUNIX,1, 
+                  [Defined if the default Unix RNG should be used.])
+       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
@@ -772,87 +681,21 @@ if test "$print_egd_notice" = "yes"; then
 ***
 ***           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.
+*** You may want to run ./configure with --enable-static-rnd=egd to use it.
 ***]])
-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
-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)
-
+        ;;
+  rndegd)
+       AC_DEFINE(USE_RNDEGD,1, 
+                  [Defined if the EGD based RNG shoudl be used.])
+        ;;
+  rndw32)
+       AC_DEFINE(USE_RNDW32,1, 
+                  [Defined if the Windows specific RNG should be used.])
+        ;;
+   *)
+       AC_MSG_ERROR(no random module available)
+        ;;
+esac
 
 dnl setup assembler stuff
 AC_MSG_CHECKING(for mpi assembler functions)
@@ -958,18 +801,22 @@ AC_SUBST(NETLIBS)
 
 # 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
-  #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
-  #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
@@ -1004,6 +851,7 @@ fi
 prefix=$prefix
 exec_prefix=$exec_prefix
 libdir=$libdir
+libexecdir=$libexecdir
 datadir=$datadir
 DATADIRNAME=$DATADIRNAME
 ]])
@@ -1030,14 +878,7 @@ AC_OUTPUT
 # 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
-