]> arthur.barton.de Git - netatalk.git/commitdiff
rename to libgcrypt.m4, use --with-libgcrypt-dir and make it work with =no
authordidg <didg>
Sun, 30 Nov 2008 17:36:08 +0000 (17:36 +0000)
committerdidg <didg>
Sun, 30 Nov 2008 17:36:08 +0000 (17:36 +0000)
configure.in
etc/uams/uams_dhx2_pam.c
etc/uams/uams_dhx2_passwd.c
macros/libgcrpyt.m4 [deleted file]
macros/libgcrypt.m4 [new file with mode: 0644]

index 0f14c3e254a4a772b9c012cc4ee9fae6084331f7..21f11863ca8927984a74625d653d44b2da9dd019 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: configure.in,v 1.206 2008-11-22 12:07:26 didg Exp $
+dnl $Id: configure.in,v 1.207 2008-11-30 17:36:08 didg Exp $
 dnl configure.in for netatalk
 
 AC_INIT(etc/afpd/main.c)
@@ -920,7 +920,12 @@ if test x"$this_os" = "xtru64"; then
 fi
 
 dnl -- check for libgcrypt, if found enables DHX UAM
-NETATALK_CHECK_LIBGCRYPT
+AM_PATH_LIBGCRYPT([1:1.2.3],[neta_cv_compile_dhx2=yes
+                       neta_cv_have_libgcrypt=yes
+                       AC_MSG_NOTICE([Enabling DHX2 UAM])
+                       AC_DEFINE(HAVE_LIBGCRYPT, 1, [Define if the DHX2 modules should be built with libgcrypt])
+                       AC_DEFINE(UAM_DHX2, 1, [Define if the DHX2 UAM modules should be compiled])
+                       ])
 
 dnl -- look for openssl, if found enables DHX UAM and Randnum UAM
 AC_PATH_SSL
index a817cd3285bacaa01b055e18e6366a5a9448851a..cea12ca0d8c2059e25fa6112bb09bce8cb5e92fa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: uams_dhx2_pam.c,v 1.4 2008-11-25 17:13:23 didg Exp $
+ * $Id: uams_dhx2_pam.c,v 1.5 2008-11-30 17:36:08 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * Copyright (c) 1999 Adrian Sun (asun@u.washington.edu)
@@ -63,7 +63,7 @@ static struct passwd *dhxpwd;
 
 /*********************************************************
  * Crypto helper func to generate p and g for use in DH.
- * libgcrpyt doesn't provide one directly.
+ * libgcrypt doesn't provide one directly.
  * Algorithm taken from GNUTLS:gnutls_dh_primes.c 
  *********************************************************/
 
index 1f86cb511f36f478e663a6e25001311ad9c4bda0..05acaaeeb9ac66bea923cbf77db2c83e31f45ade 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: uams_dhx2_passwd.c,v 1.3 2008-11-24 21:50:02 didg Exp $
+ * $Id: uams_dhx2_passwd.c,v 1.4 2008-11-30 17:36:08 didg Exp $
  *
  * Copyright (c) 1990,1993 Regents of The University of Michigan.
  * Copyright (c) 1999 Adrian Sun (asun@u.washington.edu)
@@ -77,7 +77,7 @@ static struct passwd *dhxpwd;
 
 /*********************************************************
  * Crypto helper func to generate p and g for use in DH.
- * libgcrpyt doesn't provide one directly.
+ * libgcrypt doesn't provide one directly.
  * Algorithm taken from GNUTLS:gnutls_dh_primes.c 
  *********************************************************/
 
diff --git a/macros/libgcrpyt.m4 b/macros/libgcrpyt.m4
deleted file mode 100644 (file)
index 599869a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-AC_DEFUN([NETATALK_CHECK_LIBGCRYPT], [
-       AC_ARG_ENABLE(gcrypt, [ --disable-gcrypt    build without gcrypt (limits supported UAMs)])
-       if test "x$enable_gcrypt" != "xno" ; then
-           ac_save_CFLAGS="$CFLAGS"
-           ac_save_LIBS="$LIBS"
-           CFLAGS=""
-           LIBS=""
-           AC_CHECK_LIB([gcrypt], [gcry_cipher_open],, [neta_cv_have_libgcrypt=no])
-           case $host in
-               *-*-darwin*)
-       dnl -- Darwin is a special case: check if version > 1.4.0                                                                                                                                                        
-                 AC_MSG_CHECKING([for correct gcrypt version])
-                 AC_RUN_IFELSE(
-                   [AC_LANG_PROGRAM([
-                       #include <gcrypt.h>                                                                                                                                                                              
-                       #include <stdio.h>],[                                                                                                                                                                            
-                       char*p= GCRYPT_VERSION;
-                       unsigned int vers;
-                       vers=atoi(p)*10000;
-                       p=strchr(p,'.')+1;
-                       vers+=atoi(p)*100;
-                       p=strchr(p,'.')+1;
-                       vers+=atoi(p);
-                       if (vers<10400) return 1;
-                   ])],
-                   [AC_MSG_RESULT([yes])],
-                   [
-                       AC_MSG_ERROR([version is < 1.4.0])
-                       neta_cv_have_libgcrypt=no
-                   ])
-                 ;;
-               *)
-                 ;;
-           esac
-           if test x$neta_cv_have_libgcrypt != xno ; then
-              AC_MSG_RESULT([Enabling UAM: DHX2])
-              AC_DEFINE(LIBGCRYPT_DHX, 1, [Define if the DHX modules should be built with libgcrypt])
-              AC_DEFINE(UAM_DHX2, 1, [Define if the DHX UAM modules should be compiled])
-              neta_cv_have_libgcrypt=yes
-              neta_cv_compile_dhx2=yes
-              LIBGCRYPT_CFLAGS="$CFLAGS"
-              LIBGCRYPT_LIBS="$LIBS"
-              CFLAGS_REMOVE_USR_INCLUDE(LIBGCRYPT_CFLAGS)
-              LIB_REMOVE_USR_LIB(LIBGCRYPT_LIBS)
-              AC_SUBST(LIBGCRYPT_CFLAGS)
-              AC_SUBST(LIBGCRYPT_LIBS)
-          fi
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-])
\ No newline at end of file
diff --git a/macros/libgcrypt.m4 b/macros/libgcrypt.m4
new file mode 100644 (file)
index 0000000..907f251
--- /dev/null
@@ -0,0 +1,101 @@
+dnl AM_PATH_LIBGCRYPT([MINIMUM-VERSION,
+dnl                   [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
+dnl Test for libgcrypt and define LIBGCRYPT_CFLAGS and LIBGCRYPT_LIBS.
+dnl MINIMUN-VERSION is a string with the version number optionalliy prefixed
+dnl with the API version to also check the API compatibility. Example:
+dnl a MINIMUN-VERSION of 1:1.2.5 won't pass the test unless the installed 
+dnl version of libgcrypt is at least 1.2.5 *and* the API number is 1.  Using
+dnl this features allows to prevent build against newer versions of libgcrypt
+dnl with a changed API.
+dnl
+AC_DEFUN([AM_PATH_LIBGCRYPT],
+[ AC_ARG_WITH(libgcrypt-dir,
+            AC_HELP_STRING([--with-libgcrypt-dir=PATH],
+                           [path where LIBGCRYPT is installed (optional). 
+                           Must contain lib and include dirs.]),
+     libgcrypt_config_prefix="$withval", libgcrypt_config_prefix="")
+  if test x$libgcrypt_config_prefix != x ; then
+     if test x${LIBGCRYPT_CONFIG+set} != xset ; then
+        LIBGCRYPT_CONFIG=$libgcrypt_config_prefix/bin/libgcrypt-config
+     fi
+  fi
+
+  ok=no
+
+if test x$libgcrypt_config_prefix != xno ; then
+
+  AC_PATH_PROG(LIBGCRYPT_CONFIG, libgcrypt-config, no)
+  tmp=ifelse([$1], ,1:1.2.0,$1)
+  if echo "$tmp" | grep ':' >/dev/null 2>/dev/null ; then
+     req_libgcrypt_api=`echo "$tmp"     | sed 's/\(.*\):\(.*\)/\1/'`
+     min_libgcrypt_version=`echo "$tmp" | sed 's/\(.*\):\(.*\)/\2/'`
+  else
+     req_libgcrypt_api=0
+     min_libgcrypt_version="$tmp"
+  fi
+
+  AC_MSG_CHECKING(for LIBGCRYPT - version >= $min_libgcrypt_version)
+  if test "$LIBGCRYPT_CONFIG" != "no" ; then
+    req_major=`echo $min_libgcrypt_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
+    req_minor=`echo $min_libgcrypt_version | \
+               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 --version`
+    major=`echo $libgcrypt_config_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
+    minor=`echo $libgcrypt_config_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
+    micro=`echo $libgcrypt_config_version | \
+               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\).*/\3/'`
+    if test "$major" -gt "$req_major"; then
+        ok=yes
+    else 
+        if test "$major" -eq "$req_major"; then
+            if test "$minor" -gt "$req_minor"; then
+               ok=yes
+            else
+               if test "$minor" -eq "$req_minor"; then
+                   if test "$micro" -ge "$req_micro"; then
+                     ok=yes
+                   fi
+               fi
+            fi
+          fi
+       fi
+  fi
+fi
+  if test $ok = yes; then
+    AC_MSG_RESULT([yes ($libgcrypt_config_version)])
+  else
+    AC_MSG_RESULT(no)
+  fi
+  if test $ok = yes; then
+     # If we have a recent libgcrypt, we should also check that the
+     # API is compatible
+     if test "$req_libgcrypt_api" -gt 0 ; then
+        tmp=`$LIBGCRYPT_CONFIG --api-version 2>/dev/null || echo 0`
+        if test "$tmp" -gt 0 ; then
+           AC_MSG_CHECKING([LIBGCRYPT API version])
+           if test "$req_libgcrypt_api" -eq "$tmp" ; then
+             AC_MSG_RESULT([okay])
+           else
+             ok=no
+             AC_MSG_RESULT([does not match. want=$req_libgcrypt_api got=$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=""
+    ifelse([$3], , :, [$3])
+  fi
+  AC_SUBST(LIBGCRYPT_CFLAGS)
+  AC_SUBST(LIBGCRYPT_LIBS)
+])
\ No newline at end of file