Make use of gcry_kdf_derive.
[gnupg.git] / configure.ac
index 0e799a2..ab40c6f 100644 (file)
@@ -1,19 +1,19 @@
 # configure.ac - for GnuPG 2.1
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-#               2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
-# 
+# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+#               2008, 2009, 2010, 2011 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 3 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, see <http://www.gnu.org/licenses/>.
 
@@ -31,7 +31,7 @@ m4_define([svn_revision], m4_esyscmd([printf "%d" $(svn info 2>/dev/null \
           | sed -n '/^Revision:/ s/[^0-9]//gp'|head -1)]))
 m4_define([git_revision], m4_esyscmd([git branch -v 2>/dev/null \
           | awk '/^\* / {printf "%s",$3}']))
-AC_INIT([gnupg], 
+AC_INIT([gnupg],
         [my_version[]m4_if(my_issvn,[yes],
         [m4_if(git_revision,[],[-svn[]svn_revision],[-git[]git_revision])])],
         [http://bugs.gnupg.org])
@@ -43,13 +43,13 @@ development_version=no
 NEED_GPG_ERROR_VERSION=1.8
 
 NEED_LIBGCRYPT_API=1
-NEED_LIBGCRYPT_VERSION=1.4.0
+NEED_LIBGCRYPT_VERSION=1.5.0
 
 NEED_LIBASSUAN_API=2
 NEED_LIBASSUAN_VERSION=2.0.0
 
 NEED_KSBA_API=1
-NEED_KSBA_VERSION=1.0.2
+NEED_KSBA_VERSION=1.2.0
 
 
 PACKAGE=$PACKAGE_NAME
@@ -67,7 +67,7 @@ AC_GNU_SOURCE
 
 # Some status variables.
 have_gpg_error=no
-have_libgcrypt=no 
+have_libgcrypt=no
 have_libassuan=no
 have_ksba=no
 have_pth=no
@@ -79,7 +79,8 @@ use_bzip2=yes
 use_exec=yes
 disable_keyserver_path=no
 use_ccid_driver=yes
-use_standard_socket=no
+use_standard_socket=yes
+dirmngr_auto_start=no
 
 try_ks_ldap=no
 
@@ -167,6 +168,24 @@ show_gnupg_dirmngr_ldap_pgm="(default)"
 test -n "$GNUPG_DIRMNGR_LDAP_PGM" \
       && show_gnupg_dirmngr_ldap_pgm="$GNUPG_DIRMNGR_LDAP_PGM"
 
+#
+# On some platforms gpg2 is usually installed as gpg without using a
+# symlink.  For correct operation of gpgconf it needs to know the
+# installed name of gpg.  This option sets "gpg2"'s installed name to
+# just "gpg".  Note that it might be required to rename gpg2 to gpg
+# manually after the build process.
+#
+AC_ARG_ENABLE(gpg2-is-gpg,
+    AC_HELP_STRING([--enable-gpg2-is-gpg],[Set installed name of gpg2 to gpg]),
+    gpg2_is_gpg=$enableval)
+if test "$gpg2_is_gpg" = "yes"; then
+   name_of_installed_gpg=gpg
+else
+   name_of_installed_gpg=gpg2
+fi
+AC_DEFINE_UNQUOTED(NAME_OF_INSTALLED_GPG, "$name_of_installed_gpg",
+                   [The name of the installed GPG tool])
+
 
 # Some folks want to use only the agent from this packet.  Make it
 # easier for them by providing the configure option
@@ -339,6 +358,22 @@ AC_ARG_ENABLE(ccid-driver,
               use_ccid_driver=$enableval)
 AC_MSG_RESULT($use_ccid_driver)
 
+#
+# Dirmngr is nowadays a system service and thus it usually does no
+# make sense to start it as needed.  However on some systems this is
+# possible; this option enable the feature.
+#
+AC_MSG_CHECKING([whether to auto start dirmngr])
+AC_ARG_ENABLE(dirmngr-auto-start,
+              AC_HELP_STRING([--enable-dirmngr-auto-start],
+                             [enable auto starting of the dirmngr]),
+              dirmngr_auto_start=$enableval)
+AC_MSG_RESULT($dirmngr_auto_start)
+if test "$dirmngr_auto_start" = yes ; then
+    AC_DEFINE(USE_DIRMNGR_AUTO_START,1,
+              [Define to enable auto starting of the dirmngr])
+fi
+
 
 #
 # To avoid double inclusion of config.h which might happen at some
@@ -396,10 +431,10 @@ AH_BOTTOM([
 #  define GNUPG_DEFAULT_HOMEDIR "/gnupg"
 # endif
 #elif defined(__VMS)
-#define GNUPG_DEFAULT_HOMEDIR "/SYS\$LOGIN/gnupg" 
+#define GNUPG_DEFAULT_HOMEDIR "/SYS$LOGIN/gnupg"
 #else
 #define GNUPG_DEFAULT_HOMEDIR "~/.gnupg"
-#endif 
+#endif
 #define GNUPG_PRIVATE_KEYS_DIR "private-keys-v1.d"
 
 /* For some systems (DOS currently), we hardcode the path here.  For
@@ -468,7 +503,7 @@ AH_BOTTOM([
 #define HTTP_NO_WSASTARTUP
 
 /* We always include support for the OpenPGP card.  */
-/* Disabled for now ENABLE_CARD_SUPPORT 1 */
+#define ENABLE_CARD_SUPPORT 1
 
 /* We explicitly need to disable PTH's soft mapping as Debian
    currently enables it by default for no reason. */
@@ -483,6 +518,9 @@ AH_BOTTOM([
 /* Under Windows we use the gettext code from libgpg-error.  */
 #define GPG_ERR_ENABLE_GETTEXT_MACROS
 
+/* Under WindowsCE we use the strerror replacement from libgpg-error.  */
+#define GPG_ERR_ENABLE_ERRNO_MACROS
+
 #endif /*GNUPG_CONFIG_H_INCLUDED*/
 ])
 
@@ -515,7 +553,6 @@ AC_CHECK_TOOL(WINDRES, windres, :)
 AC_ISC_POSIX
 gl_EARLY
 AC_SYS_LARGEFILE
-GNUPG_CHECK_FAQPROG
 GNUPG_CHECK_USTAR
 
 # We need to compile and run a program on the build machine.  A
@@ -556,7 +593,7 @@ case "${host}" in
         have_dosish_system=yes
         have_w32_system=yes
         use_ldapwrapper=no  # Fixme: Do this only for CE.
-        case "${host}" in 
+        case "${host}" in
           *-mingw32ce*)
             have_w32ce_system=yes
             ;;
@@ -620,7 +657,7 @@ 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, case insensitive file names and preferred
               use of backslashes as directory name separators.])
@@ -655,8 +692,8 @@ fi
 #
 AC_MSG_CHECKING([whether to use a standard socket by default])
 AC_ARG_ENABLE(standard-socket,
-              AC_HELP_STRING([--enable-standard-socket],
-                             [use a standard socket for the agent by default]),
+              AC_HELP_STRING([--disable-standard-socket],
+                             [don't use a standard socket by default]),
               use_standard_socket=$enableval)
 tmp=""
 if test "$use_standard_socket" != yes; then
@@ -705,6 +742,21 @@ AM_PATH_GPG_ERROR("$NEED_GPG_ERROR_VERSION",
 AM_PATH_LIBGCRYPT("$NEED_LIBGCRYPT_API:$NEED_LIBGCRYPT_VERSION",
         have_libgcrypt=yes,have_libgcrypt=no)
 
+# FIxme: Remove this test after libgcrypt 1.5.0 has been released.
+AC_CACHE_CHECK([whether Libgcrypt has gcry_kdf_derive],
+                gnupg_cv_gcry_kdf_derive,
+               [ _gnupg_gcry_save_cflags=$CFLAGS
+                 _gnupg_gcry_save_libs=$LIBS
+                 CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
+                 LIBS="$LIBS $LIBGCRYPT_LIBS"
+                 AC_TRY_LINK(
+                   [#include <gcrypt.h>],
+                   [ return gcry_kdf_derive (NULL,0,0,0,NULL,0,0,0,NULL); ],
+                   gnupg_cv_gcry_kdf_derive=yes,
+                   gnupg_cv_gcry_kdf_derive=no)
+                 LIBS=$_gnupg_gcry_save_libs
+                 CFLAGS=$_gnupg_gcry_save_cflags])
+
 
 #
 # libassuan is used for IPC
@@ -785,7 +837,11 @@ AC_DEFINE_UNQUOTED(SHRED,
 # Check whether the GNU Pth library is available
 # Note, that we include a Pth emulation for W32.
 #
-GNUPG_PATH_PTH
+if test "$have_w32_system" = yes; then
+  GNUPG_PATH_PTH([2.0.4])
+else
+  GNUPG_PATH_PTH
+fi
 if test "$have_pth" = "yes"; then
   AC_DEFINE(USE_GNU_PTH, 1,
               [Defined if the GNU Portable Thread Library should be used])
@@ -795,7 +851,7 @@ else
 *** 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 
+*** On a Debian GNU/Linux system you might want to try
 ***   apt-get install libpth-dev
 ***]])
 fi
@@ -835,7 +891,7 @@ if test "$with_adns" != "no"; then
                 [CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}])
 fi
 if test "$have_adns" = "yes"; then
-  ADNSLIBS="-ladns" 
+  ADNSLIBS="-ladns"
 fi
 AC_SUBST(ADNSLIBS)
 # Newer adns versions feature a free function to be used under W32.
@@ -890,7 +946,7 @@ if test x"$use_dns_pka" = xyes || test x"$use_dns_srv" = xyes \
 #include <resolv.h>],
 [[unsigned char answer[PACKETSZ];
   res_query("foo.bar",C_IN,T_A,answer,PACKETSZ);
-  dn_skipname(0,0); 
+  dn_skipname(0,0);
   dn_expand(0,0,0,0,0);
 ]])],have_resolver=yes,have_resolver=no)
     AC_MSG_RESULT($have_resolver)
@@ -1098,7 +1154,7 @@ fi
 AC_MSG_NOTICE([checking for header files])
 AC_HEADER_STDC
 AC_CHECK_HEADERS([string.h unistd.h langinfo.h termio.h locale.h getopt.h \
-                  pty.h pwd.h inttypes.h signal.h])
+                  pty.h utmp.h pwd.h inttypes.h signal.h])
 AC_HEADER_TIME
 
 
@@ -1137,6 +1193,7 @@ AC_CHECK_SIZEOF(unsigned short)
 AC_CHECK_SIZEOF(unsigned int)
 AC_CHECK_SIZEOF(unsigned long)
 AC_CHECK_SIZEOF(unsigned long long)
+AC_HEADER_TIME
 AC_CHECK_SIZEOF(time_t,,[[
 #include <stdio.h>
 #if TIME_WITH_SYS_TIME
@@ -1150,6 +1207,7 @@ AC_CHECK_SIZEOF(time_t,,[[
 # endif
 #endif
 ]])
+GNUPG_TIME_T_UNSIGNED
 
 
 # Ensure that we have UINT64_C before we bother to check for uint64_t
@@ -1199,7 +1257,7 @@ AC_CHECK_HEADERS([signal.h])
 AC_CHECK_FUNCS([memicmp stpcpy strsep strlwr strtoul memmove stricmp strtol \
                 memrchr isascii timegm getrusage setrlimit stat setlocale   \
                 flockfile funlockfile fopencookie funopen getpwnam getpwuid \
-                getenv ])
+                getenv inet_pton])
 # end jnlib checks.
 
 
@@ -1238,7 +1296,7 @@ if test "$use_regex" = yes ; then
         CPPFLAGS="${CPPFLAGS} -I$withval/include"
         LDFLAGS="${LDFLAGS} -L$withval/lib"
       fi
-      ],withval="")     
+      ],withval="")
 
   # Does the system have regex functions at all?
   AC_SEARCH_LIBS([regcomp], [regex])
@@ -1290,20 +1348,20 @@ if test "$use_zip" = yes ; then
         LDFLAGS="${LDFLAGS} -L$withval/lib"
       fi
     ])
-  
+
   AC_CHECK_HEADER(zlib.h,
         AC_CHECK_LIB(z, deflateInit2_,
          ZLIBS="-lz",
          CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
          CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
-         
+
   AC_DEFINE(HAVE_ZIP,1, [Defined if ZIP and ZLIB are supported])
 fi
 
 
 #
 # Check whether we can support bzip2
-# 
+#
 if test "$use_bzip2" = yes ; then
   _cppflags="${CPPFLAGS}"
   _ldflags="${LDFLAGS}"
@@ -1317,7 +1375,7 @@ if test "$use_bzip2" = yes ; then
       ],withval="")
 
   # Checking alongside stdio.h as an early version of bzip2 (1.0)
-  # required stdio.h to be included before bzlib.h, and Solaris 9 is 
+  # required stdio.h to be included before bzlib.h, and Solaris 9 is
   # woefully out of date.
   if test "$withval" != no ; then
      AC_CHECK_HEADER(bzlib.h,
@@ -1342,7 +1400,7 @@ GNUPG_CHECK_READLINE
 #
 # 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. 
+# considered everything after a dash.
 #
 if test "$development_version" != yes; then
   changequote(,)dnl
@@ -1441,7 +1499,7 @@ AC_ARG_ENABLE(optimization,
    AC_HELP_STRING([--disable-optimization],
                   [disable compiler optimization]),
                   [if test $enableval = no ; then
-                      CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
+                      CFLAGS=`echo $CFLAGS | sed s/-O[[1-9]]\ /-O0\ /g`
                    fi])
 
 #
@@ -1498,7 +1556,9 @@ if test "$build_agent_only" = "yes" ; then
   build_doc=no
 fi
 
-
+#
+# Set variables for use by th automake makefile.
+#
 AM_CONDITIONAL(BUILD_GPG,         test "$build_gpg" = "yes")
 AM_CONDITIONAL(BUILD_GPGSM,       test "$build_gpgsm" = "yes")
 AM_CONDITIONAL(BUILD_AGENT,       test "$build_agent" = "yes")
@@ -1513,6 +1573,29 @@ AM_CONDITIONAL(BUILD_GPGTAR,      test "$build_gpgtar" = "yes")
 AM_CONDITIONAL(RUN_GPG_TESTS,
                test x$cross_compiling = xno -a "$build_gpg" = yes )
 
+#
+# Set some defines for use gpgconf.
+#
+if test "$build_gpg" = yes ; then
+    AC_DEFINE(BUILD_WITH_GPG,1,[Defined if GPG is to be build])
+fi
+if test "$build_gpgsm" = yes ; then
+    AC_DEFINE(BUILD_WITH_GPGSM,1,[Defined if GPGSM is to be build])
+fi
+if test "$build_agent" = yes ; then
+    AC_DEFINE(BUILD_WITH_AGENT,1,[Defined if GPG-AGENT is to be build])
+fi
+if test "$build_scdaemon" = yes ; then
+    AC_DEFINE(BUILD_WITH_SCDAEMON,1,[Defined if SCDAEMON is to be build])
+fi
+if test "$build_dirmngr" = yes ; then
+    AC_DEFINE(BUILD_WITH_DIRMNGR,1,[Defined if SCDAEMON is to be build])
+fi
+if test "$build_g13" = yes ; then
+    AC_DEFINE(BUILD_WITH_G13,1,[Defined if G13 is to be build])
+fi
+
+
 
 #
 # Print errors here so that they are visible all
@@ -1522,7 +1605,7 @@ 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/gcrypt/libgpg-error
@@ -1532,12 +1615,21 @@ 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/gcrypt/libgcrypt/
+***   ftp://ftp.gnupg.org/gcrypt/alpha/libgcrypt/
 *** (at least version $NEED_LIBGCRYPT_VERSION using API $NEED_LIBGCRYPT_API is required.)
 ***]])
+elif test "$gnupg_cv_gcry_kdf_derive" = no; then
+   die=yes
+   AC_MSG_NOTICE([[
+***
+*** Libgcrypt 1.5.0 has not yet been released and thus the API
+*** is a bit in a flux.  Your version misses the function
+***        gcry_kdf_derive
+*** You need to install a newer Libgcrypt version.
+***]])
 fi
 if test "$have_libassuan" = "no"; then
    die=yes
@@ -1563,10 +1655,18 @@ if test "$gnupg_have_ldap" = "no"; then
     AC_MSG_NOTICE([[
 ***
 *** You need a LDAP library to build this program.
-*** Check out 
-***    http://www.openldap.org 
-*** for a suitable implementation. 
+*** Check out
+***    http://www.openldap.org
+*** for a suitable implementation.
+***]])
+   if test "$have_w32ce_system" = yes; then
+    AC_MSG_NOTICE([[
+*** Note that CeGCC might be broken, a package fixing this is:
+***    http://files.kolab.org/local/windows-ce/
+***                           source/wldap32_0.1-mingw32ce.orig.tar.gz
+***                           binary/wldap32-ce-arm-dev_0.1-1_all.deb
 ***]])
+   fi
 fi
 if test "$missing_pth" = "yes"; then
     AC_MSG_NOTICE([[
@@ -1575,7 +1675,7 @@ if test "$missing_pth" = "yes"; then
 *** GNU Portable Threads Library (Pth). Please install this
 *** library first.  The library is for example available at
 ***   ftp://ftp.gnu.org/gnu/pth/
-*** On a Debian GNU/Linux system you can install it using 
+*** On a Debian GNU/Linux system you can install it using
 ***   apt-get install libpth-dev
 *** To build GnuPG for Windows you need to use the W32PTH
 *** package; available at:
@@ -1594,7 +1694,7 @@ fi
 
 
 
-AC_CONFIG_FILES([ m4/Makefile 
+AC_CONFIG_FILES([ m4/Makefile
 Makefile
 po/Makefile.in
 gl/Makefile
@@ -1607,9 +1707,6 @@ agent/Makefile
 scd/Makefile
 g13/Makefile
 dirmngr/Makefile
-keyserver/Makefile
-keyserver/gpg2keys_mailto
-keyserver/gpg2keys_test
 tools/gpg-zip
 tools/Makefile
 doc/Makefile
@@ -1617,12 +1714,17 @@ tests/Makefile
 tests/openpgp/Makefile
 tests/pkits/Makefile
 ])
+#keyserver/Makefile
+#keyserver/gpg2keys_mailto
+#keyserver/gpg2keys_test
+
+
 AC_OUTPUT
 
 
 echo "
         GnuPG v${VERSION} has been configured as follows:
-        
+
         Platform:  $PRINTABLE_OS_NAME ($host)
 
         OpenPGP:   $build_gpg
@@ -1641,6 +1743,7 @@ echo "
         Default dirmngr:   $show_gnupg_dirmngr_pgm
 
         Use standard socket: $use_standard_socket
+        Dirmngr auto start:  $dirmngr_auto_start
 "
 if test x"$use_regex" != xyes ; then
 echo "