gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r35383 - libmicrohttpd


From: gnunet
Subject: [GNUnet-SVN] r35383 - libmicrohttpd
Date: Fri, 13 Mar 2015 12:18:48 +0100

Author: Karlson2k
Date: 2015-03-13 12:18:48 +0100 (Fri, 13 Mar 2015)
New Revision: 35383

Modified:
   libmicrohttpd/configure.ac
   libmicrohttpd/libmicrohttpd.pc.in
Log:
configure.ac: add support for GnuTLS pkg-config

Modified: libmicrohttpd/configure.ac
===================================================================
--- libmicrohttpd/configure.ac  2015-03-13 10:44:27 UTC (rev 35382)
+++ libmicrohttpd/configure.ac  2015-03-13 11:18:48 UTC (rev 35383)
@@ -114,6 +114,7 @@
 
 # for pkg-config
 MHD_LIBDEPS=""
+MHD_REQ_PRIVATE=''
 # Check system type
 case "$host_os" in
 *darwin* | *rhapsody* | *macosx*)
@@ -630,30 +631,28 @@
 
 # gnutls
 GNUTLS_CPPFLAGS=""
-GNUTLS_CFLAGS=""
 GNUTLS_LDFLAGS=""
-GNUTLS_LIBS=""
 have_gnutls=no
 have_gnutls_sni=no
-AC_MSG_CHECKING(for gnutls)
-AC_ARG_WITH(gnutls,
-   [AC_HELP_STRING([--with-gnutls=PFX],[base of gnutls installation])],
-   [AC_MSG_RESULT([using prefix $with_gnutls])
+have_gnutls_pkgcfg=no
+AC_MSG_CHECKING([[how to find GnuTLS library]])
+AC_ARG_WITH([[gnutls]],
+   [AC_HELP_STRING([[--with-gnutls[=PFX]]],[use GnuTLS for HTTPS support, 
optional PFX overrides pkg-config data for GnuTLS headers (PFX/include) and 
libs (PFX/lib)])],
+   [
     case $with_gnutls in
       no)
+        AC_MSG_RESULT([[GnuTLS disabled]])
         ;;
       yes)
-        AC_CHECK_HEADERS([gnutls/gnutls.h],
-            [AC_CHECK_LIB([gnutls], [gnutls_priority_set], [
-              GNUTLS_LIBS="-lgnutls"
-              AC_CHECK_LIB([gnutls], [gnutls_load_file], 
[AC_CHECK_LIB([gnutls], [gnutls_privkey_import_x509_raw], 
[have_gnutls_sni=yes])])
-              have_gnutls=yes])])
+        AC_MSG_RESULT([[automatically, forced]])
         ;;
       *)
+        AC_MSG_RESULT([[-I$with_gnutls/include -L$with_gnutls/lib -lgnutls]])
         SAVE_LDFLAGS="$LDFLAGS"
         SAVE_CPPFLAGS="$CPPFLAGS"
         LDFLAGS="-L$with_gnutls/lib $LDFLAGS"
         CPPFLAGS="-I$with_gnutls/include $CPPFLAGS"
+        have_gnutls_pkgcfg=no
           AC_CHECK_HEADERS([gnutls/gnutls.h],
             [AC_CHECK_LIB([gnutls], [gnutls_priority_set],
               [
@@ -669,18 +668,78 @@
         ;;
     esac
    ],
-   [AC_MSG_RESULT([--with-gnutls not specified])
-    AC_CHECK_HEADERS([gnutls/gnutls.h],
+   [AC_MSG_RESULT([[automatically]])
+   ])
+
+AS_IF([test "x$with_gnutls" != "xno" && test "x$have_gnutls" != "xyes"],
+  [
+    PKG_CHECK_MODULES(GNUTLS, [[gnutls]], 
+      [
+       have_gnutls_pkgcfg='yes'
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_CFLAGS="$CFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+       SAVE_LIBS="$LIBS"
+       CPPFLAGS="$GNUTLS_CFLAGS $CPPFLAGS"
+       CFLAGS="$GNUTLS_CFLAGS $CFLAGS"
+       LDFLAGS="$GNUTLS_LIBS $LDFLAGS"
+       LIBS="$LIBS $GNUTLS_LIBS"
+       AC_MSG_CHECKING([[whether GnuTLS is usable]])
+       AC_LINK_IFELSE([
+         AC_LANG_PROGRAM([[#include <gnutls/gnutls.h>]], [[
+                gnutls_session_t session;
+                gnutls_priority_t priorities;
+                gnutls_global_init();
+                gnutls_priority_init(&priorities, "NORMAL", NULL);
+                gnutls_init(&session, GNUTLS_SERVER);
+                gnutls_priority_set(session, priorities);
+          ]])],
+          [
+           AC_MSG_RESULT([[yes]])
+           have_gnutls=yes
+           GNUTLS_CPPLAGS="$GNUTLS_CFLAGS"
+           GNUTLS_LDFLAGS="$GNUTLS_LIBS"
+           AC_MSG_CHECKING([[for gnutls_privkey_import_x509_raw()]])
+           AC_LINK_IFELSE([
+             AC_LANG_PROGRAM([[#include <gnutls/gnutls.h>]], [[
+                    gnutls_datum_t data;
+                    gnutls_privkey_t key;
+                    gnutls_load_file("key.pem", &data);
+                    gnutls_privkey_import_x509_raw(key, &data, 
GNUTLS_X509_FMT_PEM, NULL, 0);
+                    gnutls_free(data.data);
+                  ]])], [[have_gnutls_sni=yes]], [[have_gnutls_sni=no]])
+           AC_MSG_RESULT([[$have_gnutls_sni]])
+          ],
+          [
+           AC_MSG_RESULT([[no]])
+           have_gnutls=no
+          ])
+
+       AS_IF([test "x$have_gnutls" != "xyes"], [AC_MSG_WARN([pkg-config 
reports that GnuTLS is present, but GnuTLS can't be used])])
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       CFLAGS="$SAVE_CFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
+       LIBS="$SAVE_LIBS"
+      ], 
+      [
+       have_gnutls_pkgcfg='no'   
+       AC_CHECK_HEADERS([gnutls/gnutls.h],
         [AC_CHECK_LIB([gnutls], [gnutls_priority_set],
           [
             GNUTLS_LIBS="-lgnutls"
             AC_CHECK_LIB([gnutls], [gnutls_load_file], [AC_CHECK_LIB([gnutls], 
[gnutls_privkey_import_x509_raw], [have_gnutls_sni=yes])])
             have_gnutls=yes
-          ])])])
+          ])])
+      ])
+  ])
+
+AS_IF([test "x$have_gnutls" != "xyes" && test "x$with_gnutls" = "xyes"], 
[AC_MSG_ERROR([[can't find usable libgnutls]])])
+
 AM_CONDITIONAL(HAVE_GNUTLS, test "x$have_gnutls" = "xyes")
 AM_CONDITIONAL([HAVE_GNUTLS_SNI], [test "x$have_gnutls_sni" = "xyes"])
 
 AC_SUBST([GNUTLS_CPPFLAGS])
+AC_SUBST([GNUTLS_CFLAGS])
 AC_SUBST([GNUTLS_LDFLAGS])
 AC_SUBST([GNUTLS_LIBS])
 
@@ -694,8 +753,8 @@
 then
   AS_IF([test "x$have_gnutls" = "xyes" && test "x$have_gcrypt" = "xyes"], [
           AC_DEFINE([HTTPS_SUPPORT],[1],[include HTTPS support])
-          MHD_LIB_CPPFLAGS="$MHD_LIB_CPPFLAGS $GNUTLS_CPPFLAGS 
$LIBGCRYPT_CFLAGS"
-          MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $GNUTLS_CFLAGS $LIBGCRYPT_CFLAGS"
+          MHD_LIB_CPPFLAGS="$MHD_LIB_CPPFLAGS $LIBGCRYPT_CFLAGS 
$GNUTLS_CPPFLAGS"
+          MHD_LIB_CFLAGS="$MHD_LIB_CFLAGS $LIBGCRYPT_CFLAGS $GNUTLS_CFLAGS"
           MHD_LIB_LDFLAGS="$MHD_LIB_LDFLAGS $GNUTLS_LDFLAGS"
           MHD_LIBDEPS="$GNUTLS_LIBS $LIBGCRYPT_LIBS $MHD_LIBDEPS"
           enable_https=yes
@@ -773,6 +832,17 @@
 AC_SUBST(MHD_LIB_LDFLAGS)
 
 # for pkg-config
+AS_IF([[test "x$enable_https" = "xyes" && test "x$have_gnutls_pkgcfg" = "xyes" 
]], 
+ [ # remove GnuTLS from private libs in .pc file as it defined in 
Requires.private
+   MHD_REQ_PRIVATE='gnutls'
+   MHD_LIBDEPS_PKGCFG="${MHD_LIBDEPS//$GNUTLS_LIBS/}"
+ ],
+ [
+   MHD_REQ_PRIVATE=''
+   MHD_LIBDEPS_PKGCFG="$MHD_LIBDEPS"
+ ])
+AC_SUBST([MHD_REQ_PRIVATE])
+AC_SUBST([MHD_LIBDEPS_PKGCFG])
 AC_SUBST(MHD_LIBDEPS)
 
 AC_SUBST(CPPFLAGS)

Modified: libmicrohttpd/libmicrohttpd.pc.in
===================================================================
--- libmicrohttpd/libmicrohttpd.pc.in   2015-03-13 10:44:27 UTC (rev 35382)
+++ libmicrohttpd/libmicrohttpd.pc.in   2015-03-13 11:18:48 UTC (rev 35383)
@@ -7,7 +7,8 @@
 Description: A library for creating an embedded HTTP server
 Version: @VERSION@
 Requires:
+Requires.private: @MHD_REQ_PRIVATE@
 Conflicts:
 Libs: -L${libdir} -lmicrohttpd
-Libs.private: @MHD_LIBDEPS@
+Libs.private: @MHD_LIBDEPS_PKGCFG@
 Cflags: -I${includedir}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]