summaryrefslogtreecommitdiff
path: root/src/libgcrypt.m4
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2004-03-05 13:57:47 +0000
committerWerner Koch <wk@gnupg.org>2004-03-05 13:57:47 +0000
commitbbd78f1be20c12b26593c62193e604e21701e2e4 (patch)
tree3466bce80775560b03796f198d7d2e4c2584f80e /src/libgcrypt.m4
parentb2eedf2f5e685c0f6d59f41a6a2052f7a12cd13d (diff)
downloadlibgcrypt-bbd78f1be20c12b26593c62193e604e21701e2e4.tar.gz
* configure.ac (LIBGCRYPT_CONFIG_SONAME_NUMBER): New.
* libgcrypt.m4: Optionally check the SONAME number. * libgcrypt-config.in: Add option --soname-number
Diffstat (limited to 'src/libgcrypt.m4')
-rw-r--r--src/libgcrypt.m445
1 files changed, 39 insertions, 6 deletions
diff --git a/src/libgcrypt.m4 b/src/libgcrypt.m4
index 0e8ab580..fedebe04 100644
--- a/src/libgcrypt.m4
+++ b/src/libgcrypt.m4
@@ -1,5 +1,5 @@
dnl Autoconf macros for libgcrypt
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2004 Free Software Foundation, Inc.
dnl
dnl This file is free software; as a special exception the author gives
dnl unlimited permission to copy and/or distribute it, with or without
@@ -13,6 +13,12 @@ dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
dnl AM_PATH_LIBGCRYPT([MINIMUM-VERSION,
dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
dnl Test for liblibgcrypt and define LIBGCRYPT_CFLAGS and LIBGCRYPT_LIBS
+dnl MINIMUN-VERSION is a string with the version number optionalliy suffixed
+dnl with the SONAME number to also check the ABI compatibility. Example:
+dnl a MINIMUN-VERSION of 1.2.5:11 won't pass the test unless the installed
+dnl version of libgcrypt is at least 1.2.5 *and* the ABI number is 11. Using
+dnl this features allows to prevent build agains newer versions of libgcrypt
+dnl with a changed ABI.
dnl
AC_DEFUN(AM_PATH_LIBGCRYPT,
[ AC_ARG_WITH(libgcrypt-prefix,
@@ -26,7 +32,15 @@ AC_DEFUN(AM_PATH_LIBGCRYPT,
fi
AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
- min_libgcrypt_version=ifelse([$1], ,0.4.4,$1)
+ tmp=ifelse([$1], ,1.2.0,$1)
+ if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
+ req_libgcrypt_soname_no=`echo "$tmp" | sed 's/[[^:]]*:\([[0-9]]*\).*/\1/'`
+ min_libgcrypt_version=`echo "$tmp" | sed 's/\(.*\):.*/\1/'`
+ else
+ req_libgcrypt_soname_no=0
+ min_libgcrypt_version="$tmp"
+ fi
+
AC_MSG_CHECKING(for LIBGCRYPT - version >= $min_libgcrypt_version)
ok=no
if test "$LIBGCRYPT_CONFIG" != "no" ; then
@@ -36,7 +50,7 @@ AC_DEFUN(AM_PATH_LIBGCRYPT,
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
req_micro=`echo $min_libgcrypt_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
- libgcrypt_config_version=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --version`
+ libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version`
major=`echo $libgcrypt_config_version | \
sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
minor=`echo $libgcrypt_config_version | \
@@ -60,14 +74,33 @@ AC_DEFUN(AM_PATH_LIBGCRYPT,
fi
fi
if test $ok = yes; then
- LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --cflags`
- LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG $libgcrypt_config_args --libs`
AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ if test $ok = yes; then
+ # If we have a recent libgcrypt, we should also check that the
+ # ABI is compatible; i.e. that the SONAME number matches.
+ if test "$req_libgcrypt_soname_no" -gt 0 ; then
+ tmp=`$LIBGCRYPT_CONFIG --soname-number 2>/dev/null || echo 0`
+ if test "$tmp" -gt 0 ; then
+ AC_MSG_CHECKING(for LIBGCRYPT ABI $req_libgcrypt_soname_no)
+ if test "$req_libgcrypt_soname_no" -eq "$tmp" ; then
+ AC_MSG_RESULT(yes)
+ else
+ ok=no
+ AC_MSG_RESULT([no (have $tmp)])
+ fi
+ fi
+ fi
+ fi
+ if test $ok = yes; then
+ LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags`
+ LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs`
ifelse([$2], , :, [$2])
else
LIBGCRYPT_CFLAGS=""
LIBGCRYPT_LIBS=""
- AC_MSG_RESULT(no)
ifelse([$3], , :, [$3])
fi
AC_SUBST(LIBGCRYPT_CFLAGS)