1dnl Autoconf macros for libgcrypt 2dnl Copyright (C) 2002, 2004, 2011 Free Software Foundation, Inc. 3dnl Copyright (C) 2014 Karlson2k (Evgeny Grin) 4dnl 5dnl This file is free software; as a special exception the author gives 6dnl unlimited permission to copy and/or distribute it, with or without 7dnl modifications, as long as this notice is preserved. 8dnl 9dnl This file is distributed in the hope that it will be useful, but 10dnl WITHOUT ANY WARRANTY, to the extent permitted by law; without even the 11dnl implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 13 14dnl AM_PATH_LIBGCRYPT([MINIMUM-VERSION, 15dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]]) 16dnl Test for libgcrypt and define LIBGCRYPT_CFLAGS and LIBGCRYPT_LIBS. 17dnl MINIMUN-VERSION is a string with the version number optionalliy prefixed 18dnl with the API version to also check the API compatibility. Example: 19dnl a MINIMUN-VERSION of 1:1.2.5 won't pass the test unless the installed 20dnl version of libgcrypt is at least 1.2.5 *and* the API number is 1. Using 21dnl this features allows to prevent build against newer versions of libgcrypt 22dnl with a changed API. 23dnl 24dnl Updated by Karlson2k to be more tolerant to host tools variations. 25dnl 26AC_DEFUN([AM_PATH_LIBGCRYPT], 27[ AC_REQUIRE([AC_CANONICAL_HOST]) 28 AC_REQUIRE([AC_PROG_GREP]) 29 AC_REQUIRE([AC_PROG_SED]) 30 AC_ARG_WITH(libgcrypt-prefix, 31 AC_HELP_STRING([--with-libgcrypt-prefix=PFX], 32 [prefix where LIBGCRYPT is installed (optional)]), 33 libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="") 34 if test x$libgcrypt_config_prefix != x ; then 35 if test x${LIBGCRYPT_CONFIG+set} != xset ; then 36 LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config 37 fi 38 fi 39 40 AC_PATH_TOOL(LIBGCRYPT_CONFIG, libgcrypt-config, no) 41 tmp=ifelse([$1], ,1:1.2.0,$1) 42 if echo "$tmp" | $GREP ':' >/dev/null 2>/dev/null ; then 43 req_libgcrypt_api=`echo "$tmp" | $SED 's/\(.*\):\(.*\)/\1/'` 44 min_libgcrypt_version=`echo "$tmp" | $SED 's/\(.*\):\(.*\)/\2/'` 45 else 46 req_libgcrypt_api=0 47 min_libgcrypt_version="$tmp" 48 fi 49 50 AC_MSG_CHECKING(for LIBGCRYPT - version >= $min_libgcrypt_version) 51 ok=no 52 if test "$LIBGCRYPT_CONFIG" != "no" ; then 53 req_major=`echo $min_libgcrypt_version | \ 54 $SED 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'` 55 req_minor=`echo $min_libgcrypt_version | \ 56 $SED 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'` 57 req_micro=`echo $min_libgcrypt_version | \ 58 $SED 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'` 59 libgcrypt_config_version=`$LIBGCRYPT_CONFIG --version` 60 major=`echo $libgcrypt_config_version | \ 61 $SED 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` 62 minor=`echo $libgcrypt_config_version | \ 63 $SED 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'` 64 micro=`echo $libgcrypt_config_version | \ 65 $SED 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'` 66 if test "$major" -gt "$req_major"; then 67 ok=yes 68 else 69 if test "$major" -eq "$req_major"; then 70 if test "$minor" -gt "$req_minor"; then 71 ok=yes 72 else 73 if test "$minor" -eq "$req_minor"; then 74 if test "$micro" -ge "$req_micro"; then 75 ok=yes 76 fi 77 fi 78 fi 79 fi 80 fi 81 fi 82 if test $ok = yes; then 83 AC_MSG_RESULT([yes ($libgcrypt_config_version)]) 84 else 85 AC_MSG_RESULT(no) 86 fi 87 if test $ok = yes; then 88 # If we have a recent libgcrypt, we should also check that the 89 # API is compatible 90 if test "$req_libgcrypt_api" -gt 0 ; then 91 tmp=`$LIBGCRYPT_CONFIG --api-version 2>/dev/null || echo 0` 92 if test "$tmp" -gt 0 ; then 93 AC_MSG_CHECKING([LIBGCRYPT API version]) 94 if test "$req_libgcrypt_api" -eq "$tmp" ; then 95 AC_MSG_RESULT([okay]) 96 else 97 ok=no 98 AC_MSG_RESULT([does not match. want=$req_libgcrypt_api got=$tmp]) 99 fi 100 fi 101 fi 102 fi 103 if test $ok = yes; then 104 LIBGCRYPT_CFLAGS=`$LIBGCRYPT_CONFIG --cflags` 105 LIBGCRYPT_LIBS=`$LIBGCRYPT_CONFIG --libs` 106 ifelse([$2], , :, [$2]) 107 libgcrypt_config_host=`$LIBGCRYPT_CONFIG --host 2>/dev/null || echo none` 108 if test x"$libgcrypt_config_host" != xnone ; then 109 if test x"$libgcrypt_config_host" != x"$host" ; then 110 AC_MSG_WARN([[ 111*** 112*** The config script $LIBGCRYPT_CONFIG was 113*** built for $libgcrypt_config_host and thus may not match the 114*** used host $host. 115*** You may want to use the configure option --with-libgcrypt-prefix 116*** to specify a matching config script. 117***]]) 118 fi 119 fi 120 else 121 LIBGCRYPT_CFLAGS="" 122 LIBGCRYPT_LIBS="" 123 ifelse([$3], , :, [$3]) 124 fi 125 AC_SUBST(LIBGCRYPT_CFLAGS) 126 AC_SUBST(LIBGCRYPT_LIBS) 127]) 128