]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Cleanup libnettle detection (#1144)
authorAmos Jeffries <yadij@users.noreply.github.com>
Sat, 17 Sep 2022 11:01:26 +0000 (11:01 +0000)
committerSquid Anubis <squid-anubis@squid-cache.org>
Sun, 18 Sep 2022 03:49:24 +0000 (03:49 +0000)
... to use pkg-config compatible variable naming and break out
the code test to a dedicated macro per the style used by other
libraries.

Also, add support for pkg-config library auto-detection.

Also, our libcompat provides local replacement for Base64 on
builds with older libnettle. Fix the library link order to
ensure our functions get linked properly.

14 files changed:
acinclude/nettle.m4 [new file with mode: 0644]
configure.ac
src/Makefile.am
src/auth/basic/NCSA/Makefile.am
src/auth/basic/RADIUS/Makefile.am
src/auth/digest/LDAP/Makefile.am
src/auth/digest/eDirectory/Makefile.am
src/auth/digest/file/Makefile.am
src/auth/negotiate/kerberos/Makefile.am
src/auth/negotiate/wrapper/Makefile.am
src/auth/ntlm/SMB_LM/Makefile.am
src/auth/ntlm/fake/Makefile.am
tools/Makefile.am
tools/squidclient/Makefile.am

diff --git a/acinclude/nettle.m4 b/acinclude/nettle.m4
new file mode 100644 (file)
index 0000000..1ca4844
--- /dev/null
@@ -0,0 +1,36 @@
+## Copyright (C) 1996-2022 The Squid Software Foundation and contributors
+##
+## Squid software is distributed under GPLv2+ license and includes
+## contributions from numerous individuals and organizations.
+## Please see the COPYING and CONTRIBUTORS files for details.
+##
+
+dnl check whether libnettle Base64 uses the nettle 3.4 API
+dnl which matters on 64-bit systems
+dnl Defines HAVE_NETTLE34_BASE64 based on the result
+dnl
+AC_DEFUN([SQUID_CHECK_NETTLE_BASE64],[
+  AC_CHECK_HEADERS(nettle/base64.h)
+  AC_MSG_CHECKING([for Nettle 3.4 API compatibility])
+  AH_TEMPLATE(HAVE_NETTLE34_BASE64,[set to 1 if Nettle 3.4 API will link])
+  SQUID_STATE_SAVE(squid_nettle_base64_state)
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#   include <cstddef>
+#   include <cstdint>
+#   include <nettle/base64.h>
+  ]],[[
+    char inData[10]; inData[0] = '\0';
+    size_t srcLen = 0;
+    struct base64_decode_ctx ctx;
+    base64_decode_init(&ctx);
+    uint8_t outData[10];
+    size_t dstLen = 0;
+    if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
+            !base64_decode_final(&ctx)) {
+        return 1;
+    }
+  ]])],[AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_NETTLE34_BASE64,1,[set to 1 if Nettle 3.4 API will link])
+  ],[AC_MSG_RESULT(no)])
+  SQUID_STATE_ROLLBACK(squid_nettle_base64_state)
+])
index 75b4a51a37045e414365df219d336d8c5814c673..e418014ee49af7cf3c0393514d9722009265cdf5 100644 (file)
@@ -21,6 +21,7 @@ m4_include([acinclude/squid-util.m4])
 m4_include([acinclude/compiler-flags.m4])
 m4_include([acinclude/os-deps.m4])
 m4_include([acinclude/krb5.m4])
+m4_include([acinclude/nettle.m4])
 m4_include([acinclude/pam.m4])
 m4_include([acinclude/pkg.m4])
 m4_include([acinclude/tdb.m4])
@@ -1081,38 +1082,25 @@ AC_MSG_NOTICE([HTCP support enabled: $enable_htcp])
 # Cryptograhic libraries
 SQUID_AUTO_LIB(nettle,[Nettle crypto],[LIBNETTLE])
 AS_IF(test "x$with_nettle" != "xno"],[
-  CPPFLAGS="$LIBNETTLE_CFLAGS $CPPFLAGS"
-  AC_CHECK_LIB(nettle, nettle_md5_init,[
-    NETTLELIB="$LIBNETTLE_PATH -lnettle"
-    AC_CHECK_HEADERS(nettle/md5.h)
-  ],[with_nettle=no])
-  AS_IF([test "x$with_nettle" != "xno"],[
-    # Base64 uses the nettle 3.4 API
-    # which matters on 64-bit systems
-    AC_CHECK_HEADERS(nettle/base64.h)
-    AC_MSG_CHECKING([for Nettle 3.4 API compatibility])
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#     include <cstddef>
-#     include <cstdint>
-#     include <nettle/base64.h>
-    ]],[[
-      char inData[10]; inData[0] = '\0';
-      size_t srcLen = 0;
-      struct base64_decode_ctx ctx;
-      base64_decode_init(&ctx);
-      uint8_t outData[10];
-      size_t dstLen = 0;
-      if (!base64_decode_update(&ctx, &dstLen, outData, srcLen, inData) ||
-              !base64_decode_final(&ctx)) {
-          return 1;
-      }
-    ]])],[AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_NETTLE34_BASE64,1,[set to 1 if Nettle 3.4 API will link])
-    ],[AC_MSG_RESULT(no)])
+  SQUID_STATE_SAVE(squid_nettle_state)
+  PKG_CHECK_MODULES([LIBNETTLE],[nettle >= 3.4],[],[
+    CPPFLAGS="$LIBNETTLE_CFLAGS $CPPFLAGS"
+    AC_CHECK_LIB(nettle,[nettle_md5_init],[LIBNETTLE_LIBS="-lnettle"])
+  ])
+  AC_CHECK_HEADERS(nettle/base64.h nettle/md5.h)
+  SQUID_CHECK_NETTLE_BASE64
+  SQUID_STATE_ROLLBACK(squid_nettle_state)
+  AS_IF([test "x$LIBNETTLE_LIBS" != "x"],[
+    CXXFLAGS="$LIBNETTLE_CFLAGS $CXXFLAGS"
+    LIBNETTLE_LIBS="$LIBNETTLE_PATH $LIBNETTLE_LIBS"
+  ],[test "x$with_nettle" = "xyes"],[
+    AC_MSG_ERROR([Required library nettle not found])
+  ],[
+    AC_MSG_NOTICE([Library nettle not found.])
   ])
 ])
 AC_MSG_NOTICE([Using Nettle cryptographic library: ${with_nettle:=yes}])
-AC_SUBST(NETTLELIB)
+AC_SUBST(LIBNETTLE_LIBS)
 
 dnl Check for libcrypt
 CRYPTLIB=
index 2a4912fb0e50fcad5d60f2d1ea502f0c3cbdadb0..5df3b1339871f17bb56d2cb890f5afb2981f2864 100644 (file)
@@ -514,7 +514,6 @@ squid_LDADD = \
        debug/libdebug.la \
        $(XTRA_OBJS) \
        $(REPL_OBJS) \
-       $(NETTLELIB) \
        $(CRYPTLIB) \
        $(REGEXLIB) \
        $(ADAPTATION_LIBS) \
@@ -532,6 +531,7 @@ squid_LDADD = \
        $(KRB5LIBS) \
        $(SYSTEMD_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 
 if ENABLE_LOADABLE_MODULES
@@ -1151,11 +1151,11 @@ tests_testRock_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        $(LIBCPPUNIT_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testRock_LDFLAGS = $(AM_CPPFLAGS) $(LIBADD_DL)
 else
@@ -1331,11 +1331,11 @@ tests_testUfs_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        $(LIBCPPUNIT_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testUfs_LDFLAGS = $(LIBADD_DL)
 else
@@ -1496,12 +1496,12 @@ tests_testStore_LDADD= \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        CommCalls.o \
        $(LIBCPPUNIT_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testStore_LDFLAGS = $(LIBADD_DL)
 
@@ -1674,11 +1674,11 @@ tests_testDiskIO_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        $(LIBCPPUNIT_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testDiskIO_LDFLAGS = $(LIBADD_DL)
 
@@ -1957,13 +1957,13 @@ tests_test_http_range_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        $(KRB5LIBS) \
        $(LIBCPPUNIT_LIBS) \
        $(SYSTEMD_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_test_http_range_LDFLAGS = $(LIBADD_DL)
 
@@ -2109,10 +2109,10 @@ tests_testHttpReply_LDADD=\
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(SSLLIB) \
        $(LIBCPPUNIT_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testHttpReply_LDFLAGS = $(LIBADD_DL)
 
@@ -2341,13 +2341,13 @@ tests_testHttpRequest_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        $(KRB5LIBS) \
        $(LIBCPPUNIT_LIBS) \
        $(SYSTEMD_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testHttpRequest_LDFLAGS = $(LIBADD_DL)
 
@@ -2639,13 +2639,13 @@ tests_testCacheManager_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
-       $(NETTLELIB) \
        $(REGEXLIB) \
        $(SSLLIB) \
        $(KRB5LIBS) \
        $(LIBCPPUNIT_LIBS) \
        $(SYSTEMD_LIBS) \
        $(COMPAT_LIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
 tests_testCacheManager_LDFLAGS = $(LIBADD_DL)
 
index 7963aa518972a9704b3e621b283ad621f73d9477..e39e9b501044678240953f4f51807816bd5fef5e 100644 (file)
@@ -19,7 +19,7 @@ basic_ncsa_auth_LDADD= \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIB) \
        $(CRYPTLIB) \
        $(SSLLIB) \
        $(XTRA_LIBS)
index c548a1f1708a0ef702bac7260a873bf697043dca..8201ceefef44d8eb7c30947d9406dce82eeac9fa 100644 (file)
@@ -21,6 +21,6 @@ basic_radius_auth_LDADD= \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/src/base/libbase.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(SSLLIB) \
        $(XTRA_LIBS)
index c4afa43897256e05c345e13295a08926e1013b38..d2e95be3aaf3ddcd9961748ba46e5319501da9c2 100644 (file)
@@ -20,7 +20,7 @@ digest_ldap_auth_LDADD= \
        $(COMPAT_LIB) \
        $(LDAPLIB) \
        $(LBERLIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(CRYPTLIB) \
        $(SSLLIB) \
        $(XTRA_LIBS)
index baba329ac68eae4278f48ac3714c44b80010cf33..89a84127f539f560c6d11d9077cebb86a1e0d593 100644 (file)
@@ -22,7 +22,7 @@ digest_edirectory_auth_LDADD = \
        $(COMPAT_LIB) \
        $(LDAPLIB) \
        $(LBERLIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(CRYPTLIB) \
        $(SSLLIB) \
        $(XTRA_LIBS)
index 235d3293e47b9fa94650cc7870478761fbe82523..4bb5d42c10a2b75650cf59af7e1ba57f314e9619 100644 (file)
@@ -20,7 +20,7 @@ digest_file_auth_LDADD = \
        $(top_builddir)/lib/libmisccontainers.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(CRYPTLIB) \
        $(SSLLIB) \
        $(XTRA_LIBS)
index bab99bc635a12f2330972442ef0c775116ac4a64..72eb6d841691d595a26652d7302c161b215b40ed 100644 (file)
@@ -26,7 +26,7 @@ negotiate_kerberos_auth_LDFLAGS=
 negotiate_kerberos_auth_LDADD= \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(KRB5LIBS) \
        $(XTRA_LIBS)
 
@@ -36,7 +36,7 @@ negotiate_kerberos_auth_test_LDFLAGS=
 negotiate_kerberos_auth_test_LDADD= \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(KRB5LIBS) \
        $(XTRA_LIBS)
 
index c158ad007a10da8a96fe5fb82219c9858f77acc6..bd341428603f2bb90a4f8bb883c6543c1b8f5ffa 100644 (file)
@@ -16,5 +16,5 @@ negotiate_wrapper_auth_SOURCES = \
 negotiate_wrapper_auth_LDADD= \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(XTRA_LIBS)
index a122a6113d8886055e1ac8ee8869ee0996a2c858..595678f36ec15d7cefe570ba819b54d987c562ea 100644 (file)
@@ -16,7 +16,7 @@ ntlm_smb_lm_auth_LDADD = \
        $(top_builddir)/lib/ntlmauth/libntlmauth.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(CRYPTLIB) \
        $(XTRA_LIBS)
 
index 6d7230aa6435b396eff5178f841abd5987e66f70..90405150065c8b4dff3166f6610b904025eea4c0 100644 (file)
@@ -14,7 +14,7 @@ ntlm_fake_auth_LDADD= \
        $(top_builddir)/lib/ntlmauth/libntlmauth.la \
        $(top_builddir)/lib/libmiscencoding.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(CRYPTLIB) \
        $(XTRA_LIBS)
 
index d0950c4160952be7a2f43e49c96968b411bd2e02..43c327de56a74abe882c3124fd7c4039c664c64c 100644 (file)
@@ -22,7 +22,7 @@ LDADD= \
        $(top_builddir)/lib/libmiscencoding.la \
        $(top_builddir)/lib/libmiscutil.la \
        $(COMPAT_LIB) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(KRB5LIBS) \
        $(XTRA_LIBS)
 
index 2c745b0276da17adbff8f9621d7e4135ccbaa809..4da06191b01edf0b3cc960596ab4f26552ee2c95 100644 (file)
@@ -21,7 +21,7 @@ LDADD = \
        $(top_builddir)/lib/libmiscutil.la \
        $(COMPAT_LIB) \
        $(LIBGNUTLS_LIBS) \
-       $(NETTLELIB) \
+       $(LIBNETTLE_LIBS) \
        $(KRB5LIBS) \
        $(XTRA_LIBS)