diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 331afc2e3e..abb50d81b2 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2020 Alexandros Theodotou ;;; Copyright © 2020, 2021 Greg Hogan ;;; Copyright © 2020 Brett Gilio +;;; Copyright © 2020 Milkey Mouse ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,6 +41,7 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) + #:use-module (guix modules) #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages boost) @@ -903,3 +905,51 @@ provides a number of utilities to make coding with expected cleaner.") (description "Magic Enum offers static reflection of enums, with conversions to and from strings, iteration and related functionality.") (license license:expat))) + +(define-public cli11 + (package + (name "cli11") + (version "1.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/CLIUtils/CLI11") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0hbch0vk8irgmiaxnfqlqys65v1770rxxdfn3d23m2vqyjh0j9l6")) + (modules '((guix build utils))) + (snippet + '(begin (delete-file-recursively "extern") + #t)))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + '("-DCLI11_SINGLE_FILE=OFF" + "-DCLI11_BUILD_EXAMPLES=OFF") + #:imported-modules ,(append %cmake-build-system-modules + (source-module-closure '((guix utils)))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'no-vendor-gtest + (lambda _ + (use-modules (guix utils)) + (substitute* "tests/CMakeLists.txt" + ;; We provide our own googletest, so this is not really a problem. + (("message\\(FATAL_ERROR \"You have requested tests be built, but googletest is not downloaded." msg) + (string-replace-substring msg "FATAL_ERROR" "TRACE"))) + (substitute* "cmake/AddGoogletest.cmake" + (("^add_subdirectory\\(.*googletest.*$") "find_package(GTest REQUIRED)") + (("^set_target_properties\\(gtest gtest_main gmock gmock_main") "") + (("^ PROPERTIES FOLDER \"Extern\"\\)") "")) + #t))))) + (native-inputs + `(("doxygen" ,doxygen) + ("googletest" ,googletest))) + (synopsis "Command line parser for C++11") + (description + "CLI11 is a command line parser for C++11 and beyond that provides a rich +feature set with a simple and intuitive interface.") + (home-page "https://cliutils.github.io/CLI11/book/") + (license license:bsd-3)))