2010-04-19 Marcus Brinkmann <marcus@g10code.de>
[libgcrypt.git] / configure.ac
index a4dd27c..d05c9cb 100644 (file)
@@ -1,6 +1,6 @@
 # Configure.ac script for Libgcrypt
 # Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006,
-#               2007, 2008 Free Software Foundation, Inc.
+#               2007, 2008, 2009 Free Software Foundation, Inc.
 #
 # This file is part of Libgcrypt.
 #
@@ -26,27 +26,31 @@ min_automake_version="1.10"
 # Remember to change the version number immediately *after* a release.
 # Set my_issvn to "yes" for non-released code.  Remember to run an
 # "svn up" and "autogen.sh" right before creating a distribution.
-m4_define([my_version], [1.4.3])
+m4_define([my_version], [1.5.0])
 m4_define([my_issvn], [yes])
 
 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([libgcrypt], 
-        [my_version[]m4_if(my_issvn,[yes],[-svn[]svn_revision])],
+        [my_version[]m4_if(my_issvn,[yes],
+        [m4_if(git_revision,[],[-svn[]svn_revision],[-git[]git_revision])])],
         [bug-libgcrypt@gnupg.org])
 # LT Version numbers, remember to change them just *before* a release.
 #   (Interfaces removed:    CURRENT++, AGE=0, REVISION=0)
 #   (Interfaces added:      CURRENT++, AGE++, REVISION=0)
 #   (No interfaces changed:                   REVISION++)
-LIBGCRYPT_LT_CURRENT=16
-LIBGCRYPT_LT_AGE=5
+# NOTE: As an exception the the LT versions are already set for 1.5.0!
+LIBGCRYPT_LT_CURRENT=17
+LIBGCRYPT_LT_AGE=6
 LIBGCRYPT_LT_REVISION=0
 
 
 # If the API is changed in an incompatible way: increment the next counter.
 LIBGCRYPT_CONFIG_API_VERSION=1
 
-NEED_GPG_ERROR_VERSION=1.4
+NEED_GPG_ERROR_VERSION=1.8
 
 is_development_version=my_issvn
 BUILD_REVISION=svn_revision
@@ -54,8 +58,10 @@ PACKAGE=$PACKAGE_NAME
 VERSION=$PACKAGE_VERSION
 
 AC_CONFIG_SRCDIR([src/libgcrypt.vers])
-AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
+AM_INIT_AUTOMAKE([])
 AM_CONFIG_HEADER(config.h)
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_LIBOBJ_DIR([compat])
 AC_CANONICAL_HOST
 AM_MAINTAINER_MODE
 
@@ -131,9 +137,9 @@ AC_ISC_POSIX
 AC_PROG_INSTALL
 AC_PROG_AWK
 
-AC_LIBTOOL_WIN32_DLL
-AC_LIBTOOL_RC
-AM_PROG_LIBTOOL
+LT_PREREQ([2.2.6])
+LT_INIT([win32-dll disable-static])
+LT_LANG([Windows Resource])
 
 
 ##########################
@@ -168,13 +174,22 @@ LIBGCRYPT_THREAD_MODULES=""
 # Other definitions.
 print_egd_notice=no
 have_w32_system=no
+have_w32ce_system=no
 
 # Setup some stuff depending on host.
 case "${host}" in
     *-*-mingw32*)
-      available_random_modules="w32"
       ac_cv_have_dev_random=no
       have_w32_system=yes
+      case "${host}" in 
+        *-mingw32ce*)
+            have_w32ce_system=yes
+            available_random_modules="w32ce"
+            ;;
+        *)
+            available_random_modules="w32"
+            ;;
+      esac
       AC_DEFINE(USE_ONLY_8DOT3,1,
                 [set this to limit filenames to the 8.3 format])
       AC_DEFINE(HAVE_DRIVE_LETTERS,1,
@@ -225,15 +240,23 @@ esac
 
 if test "$have_w32_system" = yes; then
    AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
+   if test "$have_w32ce_system" = yes; then
+     AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE])
+   fi
 fi
 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
+AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes)
 
 
 
 # A printable OS Name is sometimes useful.
 case "${host}" in
+    *-*-mingw32ce*)
+        PRINTABLE_OS_NAME="W32CE"
+        ;;
+
     *-*-mingw32*)
-        PRINTABLE_OS_NAME="MingW32"
+        PRINTABLE_OS_NAME="W32"
         ;;
 
     i?86-emx-os2 | i?86-*-os2*emx )
@@ -475,6 +498,16 @@ if test x"$padlocksupport" = xyes ; then
             [Enable support for the PadLock engine.])
 fi
 
+# Implementation of the --disable-O-flag-munging switch.
+AC_MSG_CHECKING([whether a -O flag munging is requested])
+AC_ARG_ENABLE([O-flag-munging],
+              AC_HELP_STRING([--disable-O-flag-munging],
+                 [Disable modification of the cc -O flag]),
+              [enable_o_flag_munging=$enableval],
+              [enable_o_flag_munging=yes])
+AC_MSG_RESULT($enable_o_flag_munging)
+AM_CONDITIONAL(ENABLE_O_FLAG_MUNGING, test "$enable_o_flag_munging" = "yes")
+
 
 
 AC_DEFINE_UNQUOTED(PRINTABLE_OS_NAME, "$PRINTABLE_OS_NAME",
@@ -504,6 +537,7 @@ AC_DEFINE_UNQUOTED(NAME_OF_DEV_RANDOM, "$NAME_OF_DEV_RANDOM",
 AC_DEFINE_UNQUOTED(NAME_OF_DEV_URANDOM, "$NAME_OF_DEV_URANDOM",
                    [defined to the name of the weaker random device])
 
+
 ###############################
 #### Checks for libraries. ####
 ###############################
@@ -570,7 +604,7 @@ AC_SEARCH_LIBS(setsockopt, [nsl])
 ##################################
 
 AC_HEADER_STDC
-AC_CHECK_HEADERS(unistd.h sys/select.h)
+AC_CHECK_HEADERS(unistd.h sys/select.h sys/msg.h)
 
 ##########################################
 #### Checks for typedefs, structures, ####
@@ -582,6 +616,7 @@ AC_C_INLINE
 AC_TYPE_SIZE_T
 AC_TYPE_SIGNAL
 AC_DECL_SYS_SIGLIST
+AC_TYPE_PID_T
 
 GNUPG_CHECK_TYPEDEF(byte, HAVE_BYTE_TYPEDEF)
 GNUPG_CHECK_TYPEDEF(ushort, HAVE_USHORT_TYPEDEF)
@@ -700,11 +735,16 @@ AC_CHECK_FUNCS(stpcpy strcasecmp)
 AC_CHECK_FUNCS(strtoul memmove stricmp atexit raise)
 # Other checks
 AC_CHECK_FUNCS(strerror rand mmap getpagesize sysconf waitpid wait4)
-AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime)
+AC_CHECK_FUNCS(gettimeofday getrusage gethrtime clock_gettime syslog)
 AC_CHECK_FUNCS(fcntl ftruncate)
 
 GNUPG_CHECK_MLOCK
 
+#
+# Replacement functions.
+#
+AC_REPLACE_FUNCS([getpid clock])
+
 
 #
 # Check wether it is necessary to link against libdl.
@@ -774,6 +814,10 @@ if test "$random" = "default"; then
         random_modules="linux"
     else
         case "${host}" in
+        *-*-mingw32ce*)
+          # WindowsCE random device.
+          random_modules="w32ce"
+          ;;
         *-*-mingw32*|*-*-cygwin*)
           # Windows random device.
           random_modules="w32"
@@ -852,39 +896,51 @@ AC_ARG_ENABLE(optimization,
                          CFLAGS=`echo $CFLAGS | sed 's/-O[[0-9]]//'`
                        fi])
 
-AC_ARG_ENABLE(gcc-warnings,
-             AC_HELP_STRING([--enable-gcc-warnings],
-                            [enable more verbose gcc warnings]),
-             [more_gcc_warnings="$enableval"],
-             [more_gcc_warnings="no"])
-
+# CFLAGS mangling when using gcc.
 if test "$GCC" = yes; then
-    if test "$USE_MAINTAINER_MODE" = "yes" ||
-       test "$more_gcc_warnings" = "yes"; then
-        CFLAGS="$CFLAGS -Wall -Wcast-align -Wshadow -Wstrict-prototypes"
-        if test "$more_gcc_warnings" = "yes"; then
-            CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
-            CFLAGS="$CFLAGS -Wwrite-strings"
-            CFLAGS="$CFLAGS -Wdeclaration-after-statement"
-            CFLAGS="$CFLAGS -Wno-missing-field-initializers"
-            CFLAGS="$CFLAGS -Wno-sign-compare"
-            # Note: We don't use -Wunreachable-code because this gives
-            # warnings for all asserts and many inline functions like
-            # gpg_error (gcc 4.1.2 20060928).
+    CFLAGS="$CFLAGS -Wall"
+    if test "$USE_MAINTAINER_MODE" = "yes"; then
+        CFLAGS="$CFLAGS -Wcast-align -Wshadow -Wstrict-prototypes"
+        CFLAGS="$CFLAGS -Wformat -Wno-format-y2k -Wformat-security"
+
+        # If -Wno-missing-field-initializers is supported we can enable a 
+        # a bunch of really useful warnings.
+        AC_MSG_CHECKING([if gcc supports -Wno-missing-field-initializers])
+        _gcc_cflags_save=$CFLAGS
+        CFLAGS="-Wno-missing-field-initializers"
+        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
+        AC_MSG_RESULT($_gcc_wopt)
+        CFLAGS=$_gcc_cflags_save;
+        if test x"$_gcc_wopt" = xyes ; then
+          CFLAGS="$CFLAGS -W -Wextra -Wbad-function-cast"
+          CFLAGS="$CFLAGS -Wwrite-strings"
+          CFLAGS="$CFLAGS -Wdeclaration-after-statement"
+          CFLAGS="$CFLAGS -Wno-missing-field-initializers"
+          CFLAGS="$CFLAGS -Wno-sign-compare"
+        fi
+
+        AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
+        _gcc_cflags_save=$CFLAGS
+        CFLAGS="-Wpointer-arith"
+        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
+        AC_MSG_RESULT($_gcc_wopt)
+        CFLAGS=$_gcc_cflags_save;
+        if test x"$_gcc_wopt" = xyes ; then
+          CFLAGS="$CFLAGS -Wpointer-arith"
+        fi
+
+        AC_MSG_CHECKING([if gcc supports -fno-strict-aliasing])
+        _gcc_cflags_save=$CFLAGS
+        CFLAGS="-fno-strict-aliasing"
+        AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
+        AC_MSG_RESULT($_gcc_wopt)
+        CFLAGS=$_gcc_cflags_save;
+        if test x"$_gcc_wopt" = xyes ; then
+          CFLAGS="$CFLAGS -fno-strict-aliasing"
         fi
-    else
-        CFLAGS="$CFLAGS -Wall"
-    fi
 
-    AC_MSG_CHECKING([if gcc supports -Wpointer-arith])
-    _gcc_cflags_save=$CFLAGS
-    CFLAGS="-Wpointer-arith"
-    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),_gcc_wopt=yes,_gcc_wopt=no)
-    AC_MSG_RESULT($_gcc_wopt)
-    CFLAGS=$_gcc_cflags_save;
-    if test x"$_gcc_wopt" = xyes ; then
-       CFLAGS="$CFLAGS -Wpointer-arith"
     fi
+
 fi
 
 # Check whether as(1) supports a noeexecstack feature.  This test
@@ -1071,6 +1127,13 @@ if test "$found" = "1" ; then
              [Defined if the Windows specific RNG should be used.])
 fi
 
+LIST_MEMBER(w32ce, $random_modules)
+if test "$found" = "1" ; then
+   GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32ce.lo"
+   AC_DEFINE(USE_RNDW32CE, 1, 
+             [Defined if the WindowsCE specific RNG should be used.])
+fi
+
 AC_SUBST([GCRYPT_CIPHERS])
 AC_SUBST([GCRYPT_PUBKEY_CIPHERS])
 AC_SUBST([GCRYPT_DIGESTS])
@@ -1109,11 +1172,17 @@ AC_DEFINE_UNQUOTED(BUILD_REVISION, "$BUILD_REVISION",
                    [Subversion revision used to build this package])
 
 
+# Substitutions to set generated files in a Emacs buffer to read-only.
+AC_SUBST(emacs_local_vars_begin, ['Local Variables:'])
+AC_SUBST(emacs_local_vars_read_only, ['buffer-read-only: t'])
+AC_SUBST(emacs_local_vars_end, ['End:'])
+
 
 # And create the files.
 AC_CONFIG_FILES([
 Makefile
 m4/Makefile
+compat/Makefile
 mpi/Makefile
 cipher/Makefile
 random/Makefile
@@ -1130,10 +1199,14 @@ AC_OUTPUT
 echo "
         Libgcrypt v${VERSION} has been configured as follows:
         
-        Platform:  $PRINTABLE_OS_NAME ($host)
+        Platform:                  $PRINTABLE_OS_NAME ($host)
+        Enabled cipher algorithms: $enabled_ciphers
+        Enabled digest algorithms: $enabled_digests
+        Enabled pubkey algorithms: $enabled_pubkey_ciphers
+        Random number generator:   $random
+        Using linux capabilities:  $use_capabilities
 "
 
-
 if test "$print_egd_notice" = "yes"; then
 cat <<G10EOF