From ba115751f8ad159a491751d5a9ed550a920c809b Mon Sep 17 00:00:00 2001 From: didg Date: Sun, 30 Nov 2008 17:36:08 +0000 Subject: [PATCH] rename to libgcrypt.m4, use --with-libgcrypt-dir and make it work with =no --- configure.in | 9 +++- etc/uams/uams_dhx2_pam.c | 4 +- etc/uams/uams_dhx2_passwd.c | 4 +- macros/libgcrpyt.m4 | 51 ------------------ macros/libgcrypt.m4 | 101 ++++++++++++++++++++++++++++++++++++ 5 files changed, 112 insertions(+), 57 deletions(-) delete mode 100644 macros/libgcrpyt.m4 create mode 100644 macros/libgcrypt.m4 diff --git a/configure.in b/configure.in index 0f14c3e2..21f11863 100644 --- a/configure.in +++ b/configure.in @@ -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 diff --git a/etc/uams/uams_dhx2_pam.c b/etc/uams/uams_dhx2_pam.c index a817cd32..cea12ca0 100644 --- a/etc/uams/uams_dhx2_pam.c +++ b/etc/uams/uams_dhx2_pam.c @@ -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 *********************************************************/ diff --git a/etc/uams/uams_dhx2_passwd.c b/etc/uams/uams_dhx2_passwd.c index 1f86cb51..05acaaee 100644 --- a/etc/uams/uams_dhx2_passwd.c +++ b/etc/uams/uams_dhx2_passwd.c @@ -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 index 599869a9..00000000 --- a/macros/libgcrpyt.m4 +++ /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 - #include ],[ - 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 index 00000000..907f251b --- /dev/null +++ b/macros/libgcrypt.m4 @@ -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 -- 2.39.2