From b97942cd6b496501b396ea3bc2710010f4591542 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <vapier@gentoo.org>
Date: Mon, 21 May 2012 18:39:59 -0400
Subject: [PATCH] detect openssl/pcre/libuuid/zlib via pkg-config if it's
 available

Newer versions of these packages ship with pkg-config files, so if we can
detect it via those, do so.  If that fails, fall back to the old methods.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 configure.ac | 110 ++++++++++++++++++++++++++++++++++++++---------------------
 1 file changed, 71 insertions(+), 39 deletions(-)

diff --git a/configure.ac b/configure.ac
index 873c3c9..779ff39 100644
--- a/configure.ac
+++ b/configure.ac
@@ -68,6 +68,9 @@ AC_ARG_WITH(ssl,
 AC_ARG_WITH(zlib,
 [[  --without-zlib          disable zlib ]])
 
+AC_ARG_ENABLE(pcre, AC_HELP_STRING([--disable-pcre],
+                                   [Disable PCRE style regular expressions]))
+
 AC_ARG_ENABLE(opie,
 [  --disable-opie          disable support for opie or s/key FTP login],
 ENABLE_OPIE=$enableval, ENABLE_OPIE=yes)
@@ -237,11 +240,25 @@ dnl
 dnl Checks for libraries.
 dnl
 
+PKG_PROG_PKG_CONFIG
+
 AS_IF([test x"$with_zlib" != xno], [
-  AC_CHECK_LIB(z, compress)
+  PKG_CHECK_MODULES([ZLIB], zlib, [
+    LIBS="$ZLIB_LIBS $LIBS"
+    CFLAGS="$ZLIB_CFLAGS $CFLAGS"
+  ], [
+    AC_CHECK_LIB(z, compress)
+  ])
 ])
 
 AS_IF([test x"$with_ssl" = xopenssl], [
+  PKG_CHECK_MODULES([OPENSSL], [openssl], [
+    AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
+    AC_LIBOBJ([openssl])
+    LIBS="$OPENSSL_LIBS $LIBS"
+    CFLAGS="$OPENSSL_CFLAGS -DHAVE_LIBSSL $CFLAGS"
+    LIBSSL=" " # ntlm check below wants this
+  ], [
     dnl some versions of openssl use zlib compression
     AC_CHECK_LIB(z, compress)
 
@@ -278,29 +295,29 @@ AS_IF([test x"$with_ssl" = xopenssl], [
       ;;
     esac
 
-AS_IF([test x$ssl_found != xyes],
-[
-  dnl Now actually check for -lssl if it wasn't already found
-    AC_LIB_HAVE_LINKFLAGS([ssl], [crypto z], [
-  #include <openssl/ssl.h>
-  #include <openssl/x509.h>
-  #include <openssl/err.h>
-  #include <openssl/rand.h>
-  #include <openssl/des.h>
-  #include <openssl/md4.h>
-  #include <openssl/md5.h>
-    ], [SSL_library_init ()])
-    if test x"$LIBSSL" != x
-    then
-      ssl_found=yes
-      AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
-      AC_LIBOBJ([openssl])
-      LIBS="$LIBSSL $LIBS"
-    elif test x"$with_ssl" != x
-    then
-      AC_MSG_ERROR([--with-ssl=openssl was given, but SSL is not available.])
-    fi
-])
+    AS_IF([test x$ssl_found != xyes], [
+      dnl Now actually check for -lssl if it wasn't already found
+        AC_LIB_HAVE_LINKFLAGS([ssl], [crypto z], [
+#include <openssl/ssl.h>
+#include <openssl/x509.h>
+#include <openssl/err.h>
+#include <openssl/rand.h>
+#include <openssl/des.h>
+#include <openssl/md4.h>
+#include <openssl/md5.h>
+        ], [SSL_library_init ()])
+        if test x"$LIBSSL" != x
+        then
+          ssl_found=yes
+          AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
+          AC_LIBOBJ([openssl])
+          LIBS="$LIBSSL $LIBS"
+        elif test x"$with_ssl" != x
+        then
+          AC_MSG_ERROR([--with-ssl=openssl was given, but SSL is not available.])
+        fi
+    ])
+  ])
 
 ], [
   # --with-ssl is not gnutls: check if it's no
@@ -322,13 +322,20 @@ AS_IF([test x"$with_ssl" = xopenssl], [
 ], [
   # --with-ssl is not gnutls: check if it's no
   AS_IF([test x"$with_ssl" != xno], [
-    dnl Now actually check for -lssl
+    dnl Now actually check for gnutls
 
+  PKG_CHECK_MODULES([GNUTLS], [gnutls], [
+    AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
+    AC_LIBOBJ([gnutls])
+    LIBS="$GNUTLS_LIBS $LIBS"
+    CFLAGS="$GNUTLS_CFLAGS -DHAVE_LIBGNUTLS $CFLAGS"
+  ], [
+
+    dnl Now actually check for -lgnutls
     AC_CHECK_LIB(z, compress)
     AC_CHECK_LIB(gpg-error, gpg_err_init)
     AC_CHECK_LIB(gcrypt, gcry_control)
 
-  dnl Now actually check for -lssl
   AC_LIB_HAVE_LINKFLAGS([gnutls], [], [
 #include <gnutls/gnutls.h>
   ], [gnutls_global_init()])
@@ -342,6 +349,8 @@ AS_IF([test x"$with_ssl" = xopenssl], [
     AC_MSG_ERROR([--with-ssl was given, but GNUTLS is not available.])
   fi
 
+  ])
+
   AC_CHECK_FUNCS(gnutls_priority_set_direct)
   ]) # endif: --with-ssl == no?
 ]) # endif: --with-ssl == openssl?
@@ -524,26 +541,41 @@ dnl
 dnl Check for UUID
 dnl
 
-AC_CHECK_HEADER(uuid/uuid.h,
-                AC_CHECK_LIB(uuid, uuid_generate,
-                  [LIBS="${LIBS} -luuid"
-                   AC_DEFINE([HAVE_LIBUUID], 1,
-                             [Define if libuuid is available.])
-                  ])
-)
+AC_ARG_WITH(libuuid, AC_HELP_STRING([--without-libuuid],
+                                    [Generate UUIDs for WARC files via libuuid]))
+AS_IF([test "X$with_libuuid" != "Xno"],[
+  PKG_CHECK_MODULES([UUID], uuid, [
+    LIBS="$UUID_LIBS $LIBS"
+    CFLAGS="$UUID_CFLAGS $CFLAGS"
+  ], [
+    AC_CHECK_HEADER(uuid/uuid.h,
+                    AC_CHECK_LIB(uuid, uuid_generate,
+                                 [LIBS="${LIBS} -luuid"
+                                  AC_DEFINE([HAVE_LIBUUID], 1,
+                                            [Define if libuuid is available.])
+                                 ])
+    )
+  ])
+])
 
 dnl
 dnl Check for PCRE
 dnl
 
-AC_CHECK_HEADER(pcre.h,
-                AC_CHECK_LIB(pcre, pcre_compile,
-                  [LIBS="${LIBS} -lpcre"
-                   AC_DEFINE([HAVE_LIBPCRE], 1,
-                             [Define if libpcre is available.])
-                  ])
-)
-
+AS_IF([test "X$enable_pcre" != "Xno"],[
+  PKG_CHECK_MODULES([PCRE], libpcre, [
+    LIBS="$PCRE_LIBS $LIBS"
+    CFLAGS="$PCRE_CFLAGS $CFLAGS"
+  ], [
+    AC_CHECK_HEADER(pcre.h,
+                    AC_CHECK_LIB(pcre, pcre_compile,
+                                 [LIBS="${LIBS} -lpcre"
+                                  AC_DEFINE([HAVE_LIBPCRE], 1,
+                                            [Define if libpcre is available.])
+                                 ])
+    )
+  ])
+])
  
 dnl Needed by src/Makefile.am
 AM_CONDITIONAL([IRI_IS_ENABLED], [test "X$iri" != "Xno"])
-- 
1.8.4.3

