Subject: [bug#77406] [PATCH sysadmin-team v2 2/2] gnu: spdlog: Include benchmarks.

From: Greg Hogan <[email-masked]>
Date: Tue, 22 Apr 2025 19:26:24 +0000

* gnu/packages/logging.scm (spdlog)[outputs]: Add "bin".
[arguments]<#:configure-flags>: Enable benchmark builds.
<#:phases>: Add 'patch phase to insert install commands.
[inputs]: Add googlebenchmark.

Change-Id: Ia0494c1efffb13bcb5dcd470372cf5427f003857
---
 gnu/packages/logging.scm | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm
index 7425cd2740..8c5e517f21 100644
--- a/gnu/packages/logging.scm
+++ b/gnu/packages/logging.scm
@@ -250,16 +250,29 @@ (define-public spdlog
        (sha256
         (base32 "0n6i8d5aycvp9n2zz2rz67s1y19cw9m5j3pk4719d3a5czh4267m"))))
     (build-system cmake-build-system)
-    ;; TODO run benchmark. Currently not possible, as adding
-    ;; (gnu packages benchmark) forms a dependency cycle
+    (outputs '("out" "bin"))
     (arguments
      (list #:configure-flags
-           #~(list "-DSPDLOG_BUILD_BENCH=OFF"
+           #~(list "-DSPDLOG_BUILD_BENCH=ON"
                    "-DSPDLOG_BUILD_SHARED=ON"
                    #$@(if (%current-target-system)
                           '()
-                          '("-DSPDLOG_BUILD_TESTS=ON")))))
+                          '("-DSPDLOG_BUILD_TESTS=ON")))
+           #:phases
+           #~(modify-phases %standard-phases
+             (add-after 'unpack 'patch
+               (lambda _
+                 (substitute* "bench/CMakeLists.txt"
+                   ;; Add install command for each benchmark program.
+                   (("add_executable\\(([^ ]+) .*$" all target)
+                    (string-append all
+                                   "install(TARGETS "
+                                   target
+                                   " DESTINATION "
+                                   #$output:bin "/bin"
+                                   ")\n"))))))))
     (native-inputs (list catch2-3))
+    (inputs (list googlebenchmark))
     (home-page "https://github.com/gabime/spdlog")
     (synopsis "Fast C++ logging library")
     (description "Spdlog is a very fast header-only/compiled C++ logging
-- 
2.49.0