diff options
author | Werner Koch <wk@gnupg.org> | 2004-03-05 13:57:47 +0000 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2004-03-05 13:57:47 +0000 |
commit | bbd78f1be20c12b26593c62193e604e21701e2e4 (patch) | |
tree | 3466bce80775560b03796f198d7d2e4c2584f80e /src/libgcrypt.m4 | |
parent | b2eedf2f5e685c0f6d59f41a6a2052f7a12cd13d (diff) | |
download | libgcrypt-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.m4 | 45 |
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) |