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