]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Print out the Userspace-RCU flavor and version
authorOndřej Surý <ondrej@isc.org>
Mon, 24 Apr 2023 11:32:34 +0000 (13:32 +0200)
committerOndřej Surý <ondrej@isc.org>
Thu, 27 Apr 2023 10:38:53 +0000 (12:38 +0200)
The `named -V` now prints out the liburcu flavor used and the
compile-time version.

bin/named/main.c
configure.ac
m4/pkg-modversion.m4 [new file with mode: 0644]

index d1342152077ca94c0d337befc3c8c594580df610..00c4db48d3952cbd105059d75470a495e9894431 100644 (file)
@@ -591,6 +591,7 @@ printversion(bool verbose) {
        printf("compiled with libuv version: %d.%d.%d\n", UV_VERSION_MAJOR,
               UV_VERSION_MINOR, UV_VERSION_PATCH);
        printf("linked to libuv version: %s\n", uv_version_string());
+       printf("compiled with %s version: %s\n", RCU_FLAVOR, RCU_VERSION);
 #if HAVE_LIBNGHTTP2
        nghttp2_info *nginfo = NULL;
        printf("compiled with libnghttp2 version: %s\n", NGHTTP2_VERSION);
index 88504b5dc52a090df0c481dadb112708dfc92320..e40828c52a78a6fc33eb64dd16bcd5d021780c67 100644 (file)
@@ -201,34 +201,43 @@ PKG_PROG_PKG_CONFIG
 AS_IF([test -z "$PKG_CONFIG"],
       [AC_MSG_ERROR([The pkg-config script could not be found or is too old.])])
 
+#
+# Pick Userspace-RCU flavor (developer only option)
+#
+# [pairwise: --with-liburcu=membarrier, --with-liburcu=qsbr, --with-libucru=mb, --with-liburcu=signal, --with-liburcu=bp]
 AC_ARG_WITH([liburcu],
            [AS_HELP_STRING([--with-liburcu=FLAVOR],
                             [Build with Userspace-RCU variant (membarrier|qsbr|mb|signal|bp) [default=membarrier]]))],
            [], [with_liburcu=membarrier])
 
-#
-# Pick Userspace-RCU flavor (developer only option)
-#
-
 AC_MSG_CHECKING([liburcu flavor])
 AS_CASE([$with_liburcu],
-       [membarrier],[AC_MSG_RESULT([membarrier])
-                     PKG_CHECK_MODULES([LIBURCU], [liburcu liburcu-cds])
-                     AC_DEFINE([RCU_MEMBARRIER], [1], [Build with membarrier Userspace-RCU flavor])],
-       [qsbr],[AC_MSG_RESULT([qsbr])
-               PKG_CHECK_MODULES([LIBURCU], [liburcu-qsbr liburcu-cds])
-               AC_DEFINE([RCU_QSBR], [1], [Build with QSBR Userspace-RCU flavor])],
-       [mb],[AC_MSG_RESULT([mb])
-             PKG_CHECK_MODULES([LIBURCU], [liburcu-mb liburcu-cds])
-             AC_DEFINE([RCU_MB], [1], [Build with mb Userspace-RCU flavor])],
-       [signal],[AC_MSG_RESULT([signal])
-                 PKG_CHECK_MODULES([LIBURCU], [liburcu-signal liburcu-cds])
-                 AC_DEFINE([RCU_SIGNAL], [1], [Build with signal Userspace-RCU flavor])],
-       [bp],[AC_MSG_RESULT([bulletproof])
-             PKG_CHECK_MODULES([LIBURCU], [liburcu-bp liburcu-cds])
-             AC_DEFINE([RCU_BP], [1], [Pick bulletproof Userspace-RCU flavor])],
+       [membarrier],
+       [RCU_FLAVOR="liburcu"
+        AC_DEFINE([RCU_MEMBARRIER], [1], [Build with membarrier Userspace-RCU flavor])],
+       [qsbr],
+       [RCU_FLAVOR="liburcu-qsbr"
+        AC_DEFINE([RCU_QSBR], [1], [Build with QSBR Userspace-RCU flavor])],
+       [mb],
+       [RCU_FLAVOR="liburcu-mb"
+        AC_DEFINE([RCU_MB], [1], [Build with mb Userspace-RCU flavor])],
+       [signal],
+       [RCU_FLAVOR="liburcu-signal"
+        AC_DEFINE([RCU_SIGNAL], [1], [Build with signal Userspace-RCU flavor])],
+       [bp],
+       [RCU_FLAVOR="liburcu-bp"
+        AC_DEFINE([RCU_BP], [1], [Build with bulletproof Userspace-RCU flavor])],
        [AC_MSG_ERROR([Invalid Userspace-RCU flavor picked])])
 
+AC_MSG_RESULT([$RCU_FLAVOR])
+
+PKG_CHECK_MODULES([LIBURCU], [$RCU_FLAVOR liburcu-cds])
+
+AC_DEFINE_UNQUOTED([RCU_FLAVOR], ["$RCU_FLAVOR"], [Chosen Userspace-RCU flavor])
+
+PKG_CHECK_VERSION([RCU_VERSION], [$RCU_FLAVOR])
+AC_DEFINE_UNQUOTED([RCU_VERSION], ["$RCU_VERSION"], [Compile-time Userspace-RCU version])
+
 # Fuzzing is not included in pairwise testing as fuzzing tools are
 # not present in the relevant Docker image.
 #
diff --git a/m4/pkg-modversion.m4 b/m4/pkg-modversion.m4
new file mode 100644 (file)
index 0000000..fba2cc2
--- /dev/null
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: FSFAP
+#
+# ===========================================================================
+#      https://gitlab.isc.org/isc-projects/autoconf-archive/ax_jemalloc.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   PKG_CHECK_VERSION(VARIABLE, MODULE, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# DESCRIPTION
+#
+#   Retrieves the value of the pkg-config version for the given module.
+#
+# LICENSE
+#
+#   Copyright (c) 2023 Internet Systems Consortium
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 1
+
+#
+AC_DEFUN([PKG_CHECK_VERSION],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [version of $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [modversion], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$4], [$3])dnl
+])dnl PKG_CHECK_VERSION