From dd01fecd23a4ded46b99a51dc08ac5d964dbcd53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Tue, 6 Oct 2015 22:09:40 +0200 Subject: [PATCH] build: Automatically determine libgcrypt's file name. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * m4/guix.m4 (GUIX_LIBGCRYPT_LIBDIR): New macro. * configure.ac: Use it when no --with-libgcrypt-* option was passed. * README: Do not recommend --with-libgcrypt-prefix. Co-authored-by: 宋文武 --- README | 1 - configure.ac | 31 +++++++++++++++++-------------- m4/guix.m4 | 15 +++++++++++++++ 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/README b/README index df528222e9..f05a4b5615 100644 --- a/README +++ b/README @@ -59,7 +59,6 @@ To do so: guix environment guix - Re-run the 'configure' script passing it the option - '--with-libgcrypt-prefix=$HOME/.guix-profile/', as well as '--localstatedir=/somewhere', where '/somewhere' is the 'localstatedir' value of the currently installed Guix (failing to do that would lead the new Guix to consider the store to be empty!). diff --git a/configure.ac b/configure.ac index 1cfe876232..38e9ec56b7 100644 --- a/configure.ac +++ b/configure.ac @@ -132,23 +132,21 @@ else AC_MSG_RESULT([not found]) fi +LIBGCRYPT="libgcrypt" +LIBGCRYPT_LIBDIR="no" +LIBGCRYPT_PREFIX="no" + AC_ARG_WITH([libgcrypt-prefix], [AS_HELP_STRING([--with-libgcrypt-prefix=DIR], [search for GNU libgcrypt in DIR])], [case "$withval" in yes|no) - LIBGCRYPT="libgcrypt" - LIBGCRYPT_PREFIX="no" - LIBGCRYPT_LIBDIR="no" ;; *) LIBGCRYPT="$withval/lib/libgcrypt" LIBGCRYPT_PREFIX="$withval" LIBGCRYPT_LIBDIR="$withval/lib" ;; - esac], - [LIBGCRYPT="libgcrypt" - LIBGCRYPT_PREFIX="no" - LIBGCRYPT_LIBDIR="no"]) + esac]) AC_ARG_WITH([libgcrypt-libdir], [AS_HELP_STRING([--with-libgcrypt-libdir=DIR], @@ -162,13 +160,18 @@ AC_ARG_WITH([libgcrypt-libdir], LIBGCRYPT="$withval/libgcrypt" LIBGCRYPT_LIBDIR="$withval" ;; - esac], - [if test "x$LIBGCRYPT" = x; then - LIBGCRYPT="libgcrypt" - fi - if test "x$LIBGCRYPT_LIBDIR" = x; then - LIBGCRYPT_LIBDIR="no" - fi]) + esac]) + +dnl If none of the --with-libgcrypt-* options was used, try to determine the +dnl absolute file name of libgcrypt.so. +case "x$LIBGCRYPT_PREFIX$LIBGCRYPT_LIBDIR" in + xnono) + GUIX_LIBGCRYPT_LIBDIR([LIBGCRYPT_LIBDIR]) + if test "x$LIBGCRYPT_LIBDIR" != x; then + LIBGCRYPT="$LIBGCRYPT_LIBDIR/libgcrypt" + fi + ;; +esac dnl Library name suitable for `dynamic-link'. AC_MSG_CHECKING([for libgcrypt shared library name]) diff --git a/m4/guix.m4 b/m4/guix.m4 index 2113383770..d464a478ca 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 @@ -270,3 +270,18 @@ AC_DEFUN([GUIX_CHECK_LIBC_MOUNT], [ guix_cv_libc_has_mount="no" fi]) ]) + +dnl GUIX_LIBGCRYPT_LIBDIR VAR +dnl +dnl Attempt to determine libgcrypt's LIBDIR; store the result in VAR. +AC_DEFUN([GUIX_LIBGCRYPT_LIBDIR], [ + AC_PATH_PROG([LIBGCRYPT_CONFIG], [libgcrypt-config]) + AC_CACHE_CHECK([libgcrypt's library directory], + [guix_cv_libgcrypt_libdir], + [if test "x$LIBGCRYPT_CONFIG" != "x"; then + guix_cv_libgcrypt_libdir=`$LIBGCRYPT_CONFIG --libs | sed -e "s/.*-L\([[^ ]]\+\)[[[:blank:]]]\+-lgcrypt.*/\1/g"` + else + guix_cv_libgcrypt_libdir="" + fi]) + $1="$guix_cv_libgcrypt_libdir" +])