https://lists.gnu.org/archive/html/bug-recutils/2024-10/msg00002.html

From 42e038b1024c4e225b8309bab2438137f2c0a088 Mon Sep 17 00:00:00 2001
Message-ID: <42e038b1024c4e225b8309bab2438137f2c0a088.1728191717.git.sam@gentoo.org>
In-Reply-To: <9f08064fef75ce02df9b6133d240c0fa84df458e.1728191717.git.sam@gentoo.org>
References: <9f08064fef75ce02df9b6133d240c0fa84df458e.1728191717.git.sam@gentoo.org>
From: Sam James <sam@gentoo.org>
Date: Sun, 6 Oct 2024 05:04:15 +0100
Subject: [PATCH 06/10] configure.ac: add options for dependencies

Avoid "automagic" dependencies by adding options to control them so
they can be easily overridden, rather than detection based on installed
packages.

2024-10-06  Sam James  <sam@gentoo.org>

	* configure.ac: Add --enable-curl, --enable-uuid, --enable-mdb.
---
 configure.ac | 129 ++++++++++++++++++++++++++-------------------------
 1 file changed, 67 insertions(+), 62 deletions(-)

diff --git a/configure.ac b/configure.ac
index 24495b4..d6ffb01 100644
--- a/configure.ac
+++ b/configure.ac
@@ -84,18 +84,35 @@ AM_CONDITIONAL([CHECK], [test "x$have_check" != "xno"])
 AC_SUBST([CHECK_CFLAGS])
 AC_SUBST([CHECK_LIBS])
 
+AC_ARG_ENABLE([curl],
+              AS_HELP_STRING([--enable-curl],
+                             [Enable support for remote descriptors using libcurl (default is YES)]),
+              [curl_enabled=$enableval], [curl_enabled=yes])
 have_curl=no
-AC_CHECK_LIB([curl],[curl_global_init],[have_curl=yes],)
-if test "x$have_curl" = "xyes"; then
-   CURLLIBS=-lcurl
-fi
+AS_IF([test "x$curl_enabled" = "xyes"], [
+    AC_CHECK_LIB([curl], [curl_global_init], [have_curl=yes], [])
+    AS_IF([test "x$have_curl" = "xyes"], [
+        CURLLIBS=-lcurl
+    ], [
+        AC_MSG_ERROR([curl support enabled but libcurl not found])
+    ])
+], [])
 AC_SUBST([CURLLIBS])
 
+AC_ARG_ENABLE([uuid],
+              AS_HELP_STRING([--enable-uuid],
+                             [Compile recutils with support for uuid types (default is YES)]),
+              [uuid_enabled=$enableval], [uuid_enabled=yes])
+
 have_uuid=no
-AC_CHECK_LIB([uuid],[uuid_generate],[have_uuid=yes],)
-if test "x$have_uuid" = "xyes"; then
-   UUIDLIBS=-luuid
-fi
+AS_IF([test "x$uuid_enabled" = "xyes"], [
+    AC_CHECK_LIB([uuid], [uuid_generate], [have_uuid=yes], [])
+    AS_IF([test "x$have_uuid" = "xyes"], [
+        UUIDLIBS=-luuid
+    ], [
+        AC_MSG_ERROR([uuid support enabled but libuuid not found])
+    ])
+], [])
 AC_SUBST([UUIDLIBS])
 AC_SUBST([have_uuid])
 
@@ -105,45 +122,56 @@ AC_ARG_ENABLE([encryption],
               [crypt_enabled=$enableval], [crypt_enabled=yes])
 
 crypt_support=no
-if test "x$crypt_enabled" = "xyes"; then
+AS_IF([test "x$crypt_enabled" = "xyes"], [
+    AC_LIB_HAVE_LINKFLAGS([gcrypt], [gpg-error], [#include <gpg-error.h>])
+    crypt_support=$HAVE_LIBGCRYPT
 
-   AC_LIB_HAVE_LINKFLAGS([gcrypt],[gpg-error],[#include <gpg-error.h>])
-   crypt_support=$HAVE_LIBGCRYPT
-
-   if test "x$crypt_support" = "xyes"; then
-      AC_DEFINE([REC_CRYPT_SUPPORT],[1],[Compile encryption support])
-   fi
-fi
+    AS_IF([test "x$crypt_support" = "xyes"], [
+        AC_DEFINE([REC_CRYPT_SUPPORT], [1], [Compile encryption support])
+    ], [])
+], [])
 
 AM_CONDITIONAL([CRYPT], [test "x$crypt_support" = "xyes"])
 AC_SUBST([crypt_support])
 
-have_glib=no
-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.0.0],
-                  [have_glib=yes], [have_glib=no])
-
+AC_ARG_ENABLE([mdb],
+              AS_HELP_STRING([--enable-mdb],
+                             [Build the mdb2rec utility (default is YES)]),
+              [mdb_enabled=$enableval], [mdb_enabled=yes])
 have_mdb=no
-AC_CHECK_LIB([mdb],[mdb_init],[have_mdb=yes],)
-if test "x$have_mdb" = "xyes"; then
-   MDBLIBS=-lmdb
-
-   OLD_CFLAGS=$CFLAGS
-   CFLAGS="$CFLAGS $pkg_cv_GLIB_CFLAGS"
-   mdb_uses_sdatetime=no
-   AC_CHECK_DECL([MDB_SDATETIME],[mdb_uses_sdatetime=yes],,[#include <glib.h>
-#include <mdbtools.h>])
-   CFLAGS=$OLD_CFLAGS
-
-   if test "x$mdb_uses_sdatetime" = "xyes"; then
-      MDB_DATETIME="MDB_SDATETIME"
-   else
-      MDB_DATETIME="MDB_DATETIME"
-   fi
-
-   AC_SUBST([MDB_DATETIME])
-fi
+AS_IF([test "x$mdb_enabled" = "xyes"], [
+    AC_CHECK_LIB([mdb], [mdb_init], [have_mdb=yes], [])
+    AS_IF([test "x$have_mdb" = "xyes"], [
+        MDBLIBS=-lmdb
+
+        OLD_CFLAGS=$CFLAGS
+        CFLAGS="$CFLAGS $pkg_cv_GLIB_CFLAGS"
+        mdb_uses_sdatetime=no
+        AC_CHECK_DECL([MDB_SDATETIME], [mdb_uses_sdatetime=yes], [], [
+            #include <glib.h>
+            #include <mdbtools.h>
+        ])
+        CFLAGS=$OLD_CFLAGS
+
+        AS_IF([test "x$mdb_uses_sdatetime" = "xyes"], [
+           MDB_DATETIME="MDB_SDATETIME"
+        ], [
+         MDB_DATETIME="MDB_DATETIME"
+       ])
+    ], [
+        AC_MSG_ERROR([mdb support enabled but libmdb not found])
+    ])
+
+    AC_SUBST([MDB_DATETIME])
+], [])
 AC_SUBST([MDBLIBS])
 
+have_glib=no
+AS_IF([test "x$mdb_enabled" = "xyes"], [
+    PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.0.0],
+                      [have_glib=yes], [have_glib=no])
+], [])
+
 AM_CONDITIONAL([COMPILE_MDB2REC],
                [test "x$have_glib" = "xyes" && test "x$have_mdb" = "xyes"])
 AM_CONDITIONAL([REMOTE_DESCRIPTORS], [test "x$have_curl" = "xyes"])
@@ -217,29 +245,6 @@ AC_OUTPUT
 
 dnl Report warnings
 
-if test "x$have_check" = "xno"; then
-   echo "warning: libcheck was not found in the system."
-   echo "warning: unit tests wont be compiled and executed upon make check."
-fi
-
-if test "x$have_mdb" = "xno"; then
-   echo "warning: libmdb was not found in the system."
-   echo "warning: the mdb2rec utility won't get built."
-fi
-
-if test "x$have_glib" = "xno"; then
-   echo "warning: glib was not found in the system."
-   echo "warning: the mdb2rec utility won't get built."
-fi
-
-if test "x$crypt_support" = "xno"; then
-   echo "warning: building recutils without encryption support."
-fi
-
-if test "x$have_uuid" = "xno"; then
-   echo "warning: building recutils without support for uuid types."
-fi
-
 if test "x$bash_headers_available" = "xno" || test "x$bash_builtins_enabled" = "xno"; then
    echo "warning: not building the recutils bash builtins."
 fi
-- 
2.46.2

