diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-08 13:57:59 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2011-04-08 14:21:27 +0200 |
commit | ea5d1884419d58892540c0b77c8bc329c7cb0ca9 (patch) | |
tree | 045060edea80358bc9bba8508eb631bd20590fbe /m4 | |
parent | 35239632fdba3ee96d9d98bbf38c2263d08626cb (diff) | |
download | gnutls-ea5d1884419d58892540c0b77c8bc329c7cb0ca9.tar.gz |
Use a single configure.ac. This speed ups compilation and
reduces duplication of code (multiple gl/ libraries etc.).
This saves about 2mb in distributed size (compressed).
Diffstat (limited to 'm4')
-rw-r--r-- | m4/hooks.m4 | 353 |
1 files changed, 353 insertions, 0 deletions
diff --git a/m4/hooks.m4 b/m4/hooks.m4 new file mode 100644 index 0000000000..c629e6f3a9 --- /dev/null +++ b/m4/hooks.m4 @@ -0,0 +1,353 @@ +# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, +# 2009, 2010, 2011 Free Software Foundation, Inc. +# +# Author: Nikos Mavrogiannopoulos, Simon Josefsson +# +# This file is part of GnuTLS. +# +# The GnuTLS is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; either version 2.1 of +# the License, or (at your option) any later version. +# +# The GnuTLS 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with GnuTLS; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA + +AC_DEFUN([LIBGNUTLS_EXTRA_HOOKS], +[ + AC_MSG_CHECKING([whether to build OpenSSL compatibility layer]) + AC_ARG_ENABLE(openssl-compatibility, + AS_HELP_STRING([--disable-openssl-compatibility], + [disable the OpenSSL compatibility support]), + enable_openssl=$enableval, enable_openssl=yes) + AC_MSG_RESULT($enable_openssl) + AM_CONDITIONAL(ENABLE_OPENSSL, test "$enable_openssl" = "yes") + + # We link to ../lib's gnulib, which needs -lws2_32 via LIBSOCKET in Makefile.am. + gl_SOCKETS +]) + +AC_DEFUN([LIBGNUTLS_HOOKS], +[ + # Library code modified: REVISION++ + # Interfaces changed/added/removed: CURRENT++ REVISION=0 + # Interfaces added: AGE++ + # Interfaces removed: AGE=0 + AC_SUBST(LT_CURRENT, 27) + AC_SUBST(LT_REVISION, 0) + AC_SUBST(LT_AGE, 0) + + AC_SUBST(LT_SSL_CURRENT, 27) + AC_SUBST(LT_SSL_REVISION, 0) + AC_SUBST(LT_SSL_AGE, 0) + + AC_SUBST(CXX_LT_CURRENT, 28) + AC_SUBST(CXX_LT_REVISION, 0) + AC_SUBST(CXX_LT_AGE, 0) + + # Used when creating the Windows libgnutls-XX.def files. + DLL_VERSION=`expr ${LT_CURRENT} - ${LT_AGE}` + AC_SUBST(DLL_VERSION) + + cryptolib="nettle" + + AC_ARG_WITH(libgcrypt, + AS_HELP_STRING([--with-libgcrypt], [use libgcrypt as crypto library]), + libgcrypt=$withval, + libgcrypt=no) + if test "$libgcrypt" = "yes"; then + cryptolib=libgcrypt + AC_DEFINE([HAVE_GCRYPT], 1, [whether the gcrypt library is in use]) + AC_LIB_HAVE_LINKFLAGS([gcrypt], [gpg-error], [#include <gcrypt.h>], + [enum gcry_cipher_algos i = GCRY_CIPHER_CAMELLIA128]) + if test "$ac_cv_libgcrypt" != yes; then + AC_MSG_ERROR([[ +*** +*** Libgcrypt v1.4.0 or later was not found. You may want to get it from +*** ftp://ftp.gnupg.org/gcrypt/libgcrypt/ +*** + ]]) + fi + fi + + AC_MSG_CHECKING([whether to use nettle]) +if test "$cryptolib" = "nettle";then + AC_MSG_RESULT(yes) + AC_LIB_HAVE_LINKFLAGS([nettle],, [#include <nettle/aes.h>], + [nettle_aes_invert_key (0, 0)]) + if test "$ac_cv_libnettle" != yes; then + AC_MSG_ERROR([[ + *** + *** Libnettle 2.1 was not found. + ]]) + fi + AC_TRY_COMPILE(, + [ + #include <nettle/gcm.h> + gcm_set_nonce(0, 0, 0); + return 0; + ], [ + AC_DEFINE([NETTLE_GCM], 1, [Nettle supports GCM]) + ], [ + ]) + NETTLE_LIBS="-lgmp -lpthread -lhogweed" +else + AC_MSG_RESULT(no) +fi + AC_SUBST(NETTLE_LIBS) + AM_CONDITIONAL(ENABLE_NETTLE, test "$cryptolib" = "nettle") + + AC_ARG_WITH(included-libtasn1, + AS_HELP_STRING([--with-included-libtasn1], [use the included libtasn1]), + included_libtasn1=$withval, + included_libtasn1=no) + if test "$included_libtasn1" = "no"; then + AC_LIB_HAVE_LINKFLAGS(tasn1,, [#include <libtasn1.h>], + [asn1_check_version (NULL)]) + if test "$ac_cv_libtasn1" != yes; then + included_libtasn1=yes + AC_MSG_WARN([[ + *** + *** Libtasn1 was not found. Will use the included one. + ]]) + fi + fi + AC_MSG_CHECKING([whether to use the included minitasn1]) + AC_MSG_RESULT($included_libtasn1) + AM_CONDITIONAL(ENABLE_MINITASN1, test "$included_libtasn1" = "yes") + + if test "$included_libtasn1" = "no"; then + GNUTLS_REQUIRES_PRIVATE="Requires.private: libtasn1" + fi + + AC_ARG_WITH(included-pakchois, + AS_HELP_STRING([--with-included-pakchois], [use the included pakchois]), + included_pakchois=$withval, + included_pakchois=no) + if test "$included_pakchois" = "no"; then + AC_LIB_HAVE_LINKFLAGS(pakchois,, [#include <pakchois/pakchois.h>], + [pakchois_module_load(0,0);]) + if test "$ac_cv_pakchois" != yes; then + included_pakchois=yes + AC_MSG_WARN([[ + *** + *** Pakchois was not found. Will use the included one. + ]]) + fi + fi + #not other option for now. The released pakchois cannot open an arbitrary PKCS11 module, + #and the author is reluctant to add such feature. + included_pakchois=yes + AC_MSG_CHECKING([whether to use the included pakchois]) + AC_MSG_RESULT($included_pakchois) + AM_CONDITIONAL(ENABLE_LOCAL_PAKCHOIS, test "$included_pakchois" = "yes") + if test "$included_pakchois" = "yes";then + AC_CHECK_LIB(pthread, pthread_mutex_lock,, + [AC_MSG_WARN([could not find pthread_mutex_lock])]) + AC_CHECK_LIB(dl, dlopen,, + [AC_MSG_WARN([could not find dlopen])]) + + fi + + AC_ARG_WITH(lzo, + AS_HELP_STRING([--with-lzo], [use experimental LZO compression]), + use_lzo=$withval, use_lzo=no) + AC_MSG_CHECKING([whether to include LZO compression support]) + AC_MSG_RESULT($use_lzo) + LZO_LIBS= + if test "$use_lzo" = "yes"; then + AC_CHECK_LIB(lzo2, lzo1x_1_compress, LZO_LIBS=-llzo2) + if test "$LZO_LIBS" = ""; then + AC_CHECK_LIB(lzo, lzo1x_1_compress, LZO_LIBS=-llzo, [ + use_lzo=no + AC_MSG_WARN( + *** + *** Could not find liblzo or liblzo2. Disabling LZO compression. + ) + ]) + fi + fi + AC_SUBST(LZO_LIBS) + if test "$use_lzo" = "yes"; then + AC_DEFINE([USE_LZO], 1, [whether to use the LZO compression]) + if test "$LZO_LIBS" = "-llzo"; then + AC_CHECK_HEADERS(lzo1x.h) + elif test "$LZO_LIBS" = "-llzo2"; then + AC_CHECK_HEADERS(lzo/lzo1x.h) + fi + fi + AM_CONDITIONAL(USE_LZO, test "$use_lzo" = "yes") + + AC_MSG_CHECKING([whether C99 macros are supported]) + AC_TRY_COMPILE(, + [ + #define test_mac(...) + int z,y,x; + test_mac(x,y,z); + return 0; + ], [ + AC_DEFINE([C99_MACROS], 1, [C99 macros are supported]) + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + AC_MSG_WARN([C99 macros not supported. This may affect compiling.]) + ]) + + AC_MSG_CHECKING([whether to enable Opaque PRF input support]) + AC_ARG_ENABLE(opaque-prf-input, + AS_HELP_STRING([--enable-opaque-prf-input=DD], + [enable Opaque PRF input using DD as extension type]), + ac_opaque_prf_input=$enableval, ac_opaque_prf_input=no) + if test "$ac_opaque_prf_input" != "no"; then + if ! echo $ac_opaque_prf_input | egrep -q '^[[0-9]]+$'; then + ac_opaque_prf_input=no + AC_MSG_WARN([[ + *** Could not parse Opaque PRF Input extension type. + *** Use --enable-opaque-prf-input=XX where XX is decimal, for example + *** to use extension value 42 use --enable-opqaue-prf-input=42]]) + fi + fi + if test "$ac_opaque_prf_input" != "no"; then + AC_MSG_RESULT([yes (extension value $ac_opaque_prf_input)]) + AC_DEFINE_UNQUOTED([ENABLE_OPRFI], $ac_opaque_prf_input, + [enable Opaque PRF Input]) + else + AC_MSG_RESULT(no) + fi + AM_CONDITIONAL(ENABLE_OPRFI, test "$ac_opaque_prf_input" != "no") + + AC_MSG_CHECKING([whether to disable SRP authentication support]) + AC_ARG_ENABLE(srp-authentication, + AS_HELP_STRING([--disable-srp-authentication], + [disable the SRP authentication support]), + ac_enable_srp=no) + if test x$ac_enable_srp != xno; then + AC_MSG_RESULT(no) + AC_DEFINE([ENABLE_SRP], 1, [enable SRP authentication]) + else + ac_full=0 + AC_MSG_RESULT(yes) + fi + AM_CONDITIONAL(ENABLE_SRP, test "$ac_enable_srp" != "no") + + AC_MSG_CHECKING([whether to disable PSK authentication support]) + AC_ARG_ENABLE(psk-authentication, + AS_HELP_STRING([--disable-psk-authentication], + [disable the PSK authentication support]), + ac_enable_psk=no) + if test x$ac_enable_psk != xno; then + AC_MSG_RESULT(no) + AC_DEFINE([ENABLE_PSK], 1, [enable PSK authentication]) + else + ac_full=0 + AC_MSG_RESULT(yes) + fi + AM_CONDITIONAL(ENABLE_PSK, test "$ac_enable_psk" != "no") + + AC_MSG_CHECKING([whether to disable anonymous authentication support]) + AC_ARG_ENABLE(anon-authentication, + AS_HELP_STRING([--disable-anon-authentication], + [disable the anonymous authentication support]), + ac_enable_anon=no) + if test x$ac_enable_anon != xno; then + AC_MSG_RESULT(no) + AC_DEFINE([ENABLE_ANON], 1, [enable anonymous authentication]) + else + ac_full=0 + AC_MSG_RESULT(yes) + fi + AM_CONDITIONAL(ENABLE_ANON, test "$ac_enable_anon" != "no") + + # Allow disabling Camellia + if test "$nettle" != "yes";then + AC_ARG_ENABLE(camellia, + AS_HELP_STRING([--disable-camellia], [disable Camellia cipher]), + enable_camellia=$enableval, enable_camellia=yes) + else + enable_camellia=no + fi + + AC_MSG_CHECKING([whether to disable Camellia cipher]) + if test "$enable_camellia" != "no"; then + AC_MSG_RESULT([no]) + AC_DEFINE([ENABLE_CAMELLIA], 1, [enable camellia block cipher]) + else + AC_MSG_RESULT([yes]) + fi + + AC_MSG_CHECKING([whether to disable extra PKI stuff]) + AC_ARG_ENABLE(extra-pki, + AS_HELP_STRING([--disable-extra-pki], + [only enable the basic PKI stuff]), + enable_pki=$enableval, enable_pki=yes) + if test "$enable_pki" != "yes"; then + ac_full=0 + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + AC_DEFINE([ENABLE_PKI], 1, [whether to include all the PKCS/PKI stuff]) + fi + AM_CONDITIONAL(ENABLE_PKI, test "$enable_pki" = "yes") + + ac_enable_openpgp=yes + AC_MSG_CHECKING([whether to disable OpenPGP Certificate authentication support]) + AC_ARG_ENABLE(openpgp-authentication, + AS_HELP_STRING([--disable-openpgp-authentication], + [disable the OpenPGP authentication support]), + ac_enable_openpgp=no) + if test x$ac_enable_openpgp = xno; then + AC_MSG_RESULT(yes) + ac_full=0 + else + AC_DEFINE([ENABLE_OPENPGP], 1, [use openpgp authentication]) + AC_MSG_RESULT(no) + fi + AM_CONDITIONAL(ENABLE_OPENPGP, test "$ac_enable_openpgp" = "yes") + + AC_MSG_CHECKING([whether to disable SessionTicket extension support]) + AC_ARG_ENABLE(session-ticket, + AS_HELP_STRING([--disable-session-ticket], + [disable the SessionTicket extension support]), + ac_session_ticket=no) + if test x$ac_session_ticket != xno; then + AC_MSG_RESULT(no) + AC_DEFINE([ENABLE_SESSION_TICKET], 1, [enable SessionTicket extension]) + else + ac_full=0 + AC_MSG_RESULT(yes) + fi + AM_CONDITIONAL(ENABLE_SESSION_TICKET, test "$ac_enable_session_ticket" != "no") + + # For cryptodev + AC_MSG_CHECKING([whether to add cryptodev support]) + AC_ARG_ENABLE(cryptodev, + AS_HELP_STRING([--enable-cryptodev], [enable cryptodev support]), + enable_cryptodev=yes,enable_cryptodev=no) + AC_MSG_RESULT($enable_cryptodev) + + if test "$enable_cryptodev" = "yes"; then + AC_DEFINE([ENABLE_CRYPTODEV], 1, [Enable cryptodev support]) + fi + + # For storing integers in pointers without warnings + # http://developer.gnome.org/doc/API/2.0/glib/glib-Type-Conversion-Macros.html#desc + AC_CHECK_SIZEOF(void *) + AC_CHECK_SIZEOF(long) + AC_CHECK_SIZEOF(int) + case $ac_cv_sizeof_void_p in + $ac_cv_sizeof_long) + AC_DEFINE([GNUTLS_POINTER_TO_INT_CAST], [(long)], + [Additional cast to bring void* to a type castable to int.]) + ;; + *) + AC_DEFINE([GNUTLS_POINTER_TO_INT_CAST], []) + ;; + esac +]) |