]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
Make redis fully optional
authorNicolas PARLANT <nicolas.parlant@parhuet.fr>
Fri, 19 Sep 2025 08:36:55 +0000 (10:36 +0200)
committerNicolas PARLANT <nicolas.parlant@parhuet.fr>
Fri, 19 Sep 2025 10:41:27 +0000 (12:41 +0200)
Add options :
*client (only) for a knot package
*module (only) for a redis-knot package

configure.ac

index 6b53bf8b4c0fa75e396f1770e9c696b5e6c92855..8a208f54602479f4a76d1008c9191fb9a2052776 100644 (file)
@@ -261,21 +261,23 @@ AS_IF([test "$enable_reuseport" = yes],[
 
 # Redis zone backend support
 AC_ARG_ENABLE([redis],
-   AS_HELP_STRING([--enable-redis=auto|yes|no], [enable Redis support [default=auto]]),
+   AS_HELP_STRING([--enable-redis=auto|yes|client|module|no], [enable Redis support [default=auto]]),
    [], [enable_redis=auto])
 
 PKG_CHECK_MODULES([hiredis], [hiredis], [have_hiredis=yes], [have_hiredis=no])
 
 AS_CASE([$enable_redis],
-   [auto], [AS_IF([test "$have_hiredis" = "yes"], [enable_redis=yes], [enable_redis=no])],
-   [yes],  [AS_IF([test "$have_hiredis" = "yes"], [enable_redis=yes], [AC_MSG_ERROR([libhiredis not available])])],
+   [auto],   [AS_IF([test "$have_hiredis" = "yes"], [enable_redis=yes], [enable_redis=no])],
+   [yes],    [AS_IF([test "$have_hiredis" = "yes"], [enable_redis=yes], [AC_MSG_ERROR([libhiredis not available])])],
+   [client], [AS_IF([test "$have_hiredis" = "yes"], [enable_redis=client], [AC_MSG_ERROR([libhiredis not available])])],
+   [module], [AS_IF([test "$enable_shared" = "yes"], [enable_redis=module], [AC_MSG_ERROR([link mode has to be 'shared'])])],
    [no], [],
    [*], [AC_MSG_ERROR([Invalid value of --enable-redis.])]
 )
 AM_CONDITIONAL([ENABLE_REDIS], [test "$enable_redis" != "no"])
-AM_CONDITIONAL([ENABLE_REDIS_MODULE], [test "$enable_redis" != "no" && test "$enable_shared" = "yes"])
+AM_CONDITIONAL([ENABLE_REDIS_MODULE], [test "$enable_redis" != "no" && test "$enable_redis" != "client" && test "$enable_shared" = "yes"])
 
-AS_IF([test "$enable_redis" = yes],[
+AS_IF([test "$enable_redis" = yes -o "$enable_redis" = client],[
    AC_DEFINE([ENABLE_REDIS], [1], [Enable Redis support.])
    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <hiredis/hiredis.h>
                                      #if (HIREDIS_MAJOR < 1) || (HIREDIS_MAJOR == 1 && HIREDIS_MINOR < 1)
@@ -283,7 +285,7 @@ AS_IF([test "$enable_redis" = yes],[
                                      #endif]])],
                   [AC_DEFINE([ENABLE_REDIS_TLS], [1], [Enable Redis TLS support.])],
                   [enable_redis="yes (no TLS)"])
-   AS_IF([test "$enable_shared" = yes],[
+   AS_IF([test "$enable_redis" = yes && test "$enable_shared" = yes],[
       enable_redis="${enable_redis} module"
    ])
 ])
@@ -515,7 +517,7 @@ PKG_CHECK_MODULES([lmdb], [lmdb >= 0.9.15], [], [
   CPPFLAGS="$save_CPPFLAGS"
   LIBS="$save_LIBS"
 
-  AS_IF([test "$have_lmdb" = "no"], [
+  AS_IF([test "$have_lmdb" = "no" && test "$enable_redis" != "module"], [
     AC_MSG_ERROR([lmdb library not found])
   ])
 ])