]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Select whether to link/dlopen libocs at configure time
authorAndreas Metzler <ametzler@bebt.de>
Sun, 25 Aug 2024 11:01:30 +0000 (13:01 +0200)
committerAndreas Metzler <ametzler@bebt.de>
Sat, 21 Sep 2024 09:27:24 +0000 (11:27 +0200)
(This defaults to off)

Signed-off-by: Andreas Metzler <ametzler@bebt.de>
configure.ac
lib/Makefile.am
lib/liboqs/Makefile.am
lib/nettle/Makefile.am

index 51ccf5583466fb60ec3af8abdff080021bc99bdf..250056942cf5975b32a584f9e617df50efe7af4f 100644 (file)
@@ -1273,29 +1273,41 @@ AS_IF([test "$ac_libzstd" = dlopen], [
 ])
 
 AC_ARG_WITH(liboqs,
-       AS_HELP_STRING([--with-liboqs],
-               [Enable liboqs support.]),
-       [with_liboqs=$withval], [with_liboqs=no])
-AS_IF([test "$with_liboqs" != no], [PKG_CHECK_MODULES(LIBOQS, [liboqs >= 0.10.1], [have_liboqs=yes], [have_liboqs=no])])
-AS_IF([test "$have_liboqs" = yes], [AC_DEFINE([HAVE_LIBOQS], 1, [Have liboqs])],
-      [test "$with_liboqs" = yes], [AC_MSG_ERROR([[
+   [AS_HELP_STRING([--with-liboqs=yes/link/dlopen --with-liboqs],
+                  [customize/enable liboqs support])],
+            ac_liboqs=$withval, ac_liboqs=no)
+AS_CASE([$ac_liboqs],
+  [yes],
+    [AM_COND_IF([ENABLE_DLOPEN], [ac_liboqs=dlopen], [ac_liboqs=link])],
+  [dlopen],
+    [AM_COND_IF([ENABLE_DLOPEN], [:],[AC_MSG_ERROR([[
 ***
-*** liboqs support was requested but the required libraries were not found.
-*** ]])])
-
-save_CFLAGS=$CFLAGS
-CFLAGS="$CFLAGS $LIBOQS_CFLAGS"
-AC_CHECK_DECLS([OQS_SHA3_set_callbacks])
-CFLAGS="$save_CFLAGS"
-
-# liboqs 0.10.1 didn't expose OQS_SHA3_set_callbacks from the header
-# file, so extra treatment is needed:
-# https://github.com/open-quantum-safe/liboqs/pull/1832
-AM_CONDITIONAL(NEED_LIBOQS_SHA3_OPS_H, test "$ac_cv_have_decl_OQS_SHA3_set_callbacks" != yes)
-
-AM_CONDITIONAL(ENABLE_LIBOQS, test "$have_liboqs" = yes)
-
-AS_IF([test "$ac_cv_dlopen_soname_works" = yes], [
+*** Unable to dlopen LIBOQS, try --with-liboqs.
+*** ]])])],
+  [link], [:],
+  [no], [:],
+  [AC_MSG_ERROR([[Unknown argument ${ac_liboqs} for --with-liboqs]])])
+
+
+AS_IF([test x$ac_liboqs != xno],
+    [PKG_CHECK_MODULES([LIBOQS],[liboqs >= 0.10.1],
+      [save_CFLAGS=$CFLAGS
+      CFLAGS="$CFLAGS $LIBOQS_CFLAGS"
+      AC_CHECK_DECLS([OQS_SHA3_set_callbacks])
+      CFLAGS="$save_CFLAGS"
+      # liboqs 0.10.1 didn't expose OQS_SHA3_set_callbacks from the header
+      # file, so extra treatment is needed:
+      # https://github.com/open-quantum-safe/liboqs/pull/1832
+      AC_DEFINE([HAVE_LIBOQS], 1, [Have liboqs])
+      need_ltlibdl=yes],
+      [AC_MSG_ERROR([liboqs support was requested but the required libraries were not found.])])])
+
+AM_CONDITIONAL(ENABLE_LIBOQS, test "$ac_liboqs" != "no")
+AM_CONDITIONAL(NEED_LIBOQS_SHA3_OPS_H,
+  test "$ac_cv_have_decl_OQS_SHA3_set_callbacks" != yes)
+AM_CONDITIONAL([LIBOQS_ENABLE_DLOPEN], [test "$ac_liboqs" = dlopen])
+
+AS_IF([test "$ac_liboqs" = dlopen], [
     save_CFLAGS=$CFLAGS
     CFLAGS="$CFLAGS $LIBOQS_CFLAGS"
     save_LIBS=$LIBS
@@ -1303,10 +1315,10 @@ AS_IF([test "$ac_cv_dlopen_soname_works" = yes], [
     LIBGNUTLS_CHECK_SONAME([oqs], [AC_LANG_PROGRAM([
                    #include <oqs/oqs.h>],[
                    OQS_version ();])])
-    LIBS="$save_LIBS"
     CFLAGS="$save_CFLAGS"
+    LIBS="$save_LIBS"
 ],
-      [test "$have_liboqs" = yes], [
+    [test "$ac_liboqs" = link], [
     if test "x$GNUTLS_REQUIRES_PRIVATE" = x; then
         GNUTLS_REQUIRES_PRIVATE="Requires.private: liboqs"
     else
index 85d9107f5f9f4498d09a7a2b326744890f621f40..7091304ede036fdc11336bddbe987783d7f28dd4 100644 (file)
@@ -131,7 +131,7 @@ if ENABLE_LIBOQS
 COBJECTS += dlwrap/oqs.c dlwrap/oqsfuncs.h dlwrap/oqs.h
 AM_CPPFLAGS += $(LIBOQS_CFLAGS)
 
-if ENABLE_DLOPEN
+if LIBOQS_ENABLE_DLOPEN
 AM_CPPFLAGS += -DGNUTLS_OQS_ENABLE_DLOPEN=1
 else
 thirdparty_libadd += $(LIBOQS_LIBS)
index a20e7cbdf90a6f8121cdcb061d8978bcd19e8f00..3956c9320a4e9fb0f125431f9ccacff758811352 100644 (file)
@@ -30,7 +30,7 @@ AM_CPPFLAGS = \
        -I$(builddir)/../includes       \
        -I$(srcdir)/..
 
-if ENABLE_DLOPEN
+if LIBOQS_ENABLE_DLOPEN
 AM_CPPFLAGS += $(LIBOQS_CFLAGS) -DGNUTLS_OQS_ENABLE_DLOPEN=1
 endif
 
index 0f21823cb49960c68e924879ac636c8c88d5a0ca..be6580550ac4a6119959d81255916ecd7b8c8dcf 100644 (file)
@@ -36,7 +36,7 @@ if ENABLE_MINITASN1
 AM_CPPFLAGS += -I$(srcdir)/../minitasn1
 endif
 
-if ENABLE_DLOPEN
+if LIBOQS_ENABLE_DLOPEN
 AM_CPPFLAGS += $(LIBOQS_CFLAGS) -DGNUTLS_OQS_ENABLE_DLOPEN=1
 endif