diff options
| author | Daniel Ziltener <dziltener@lyrion.ch> | 2024-04-16 00:26:36 +0800 |
|---|---|---|
| committer | Zheng Junjie <zhengjunjie@iscas.ac.cn> | 2024-04-23 16:45:34 +0800 |
| commit | 2d19e505f6f9f82aebc9ba8c74ba223818acd9bc (patch) | |
| tree | 0166a0e8fdcb8024e0ed36eba4620ccd21020f71 /gnu | |
| parent | 837016fe33e11c6252ec24c423d1b6ae0cd7efd3 (diff) | |
gnu: Add cppdap.
* gnu/packages/debug.scm (cppdap): New variable.
* gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch: New
patch.
* gnu/local.mk (dist_patch_DATA): Register it.
Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn>
Change-Id: I328ca0c01787defcc9d18f4ccd7762c86412cca7
Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn>
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/local.mk | 1 | ||||
| -rw-r--r-- | gnu/packages/debug.scm | 51 | ||||
| -rw-r--r-- | gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch | 103 |
3 files changed, 155 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index a153b3e2477..42961e60b2c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk | |||
| @@ -1075,6 +1075,7 @@ dist_patch_DATA = \ | |||
| 1075 | %D%/packages/patches/cool-retro-term-wctype.patch \ | 1075 | %D%/packages/patches/cool-retro-term-wctype.patch \ |
| 1076 | %D%/packages/patches/coreutils-gnulib-tests.patch \ | 1076 | %D%/packages/patches/coreutils-gnulib-tests.patch \ |
| 1077 | %D%/packages/patches/cppcheck-disable-char-signedness-test.patch \ | 1077 | %D%/packages/patches/cppcheck-disable-char-signedness-test.patch \ |
| 1078 | %D%/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch\ | ||
| 1078 | %D%/packages/patches/cpuinfo-system-libraries.patch \ | 1079 | %D%/packages/patches/cpuinfo-system-libraries.patch \ |
| 1079 | %D%/packages/patches/cpulimit-with-glib-2.32.patch \ | 1080 | %D%/packages/patches/cpulimit-with-glib-2.32.patch \ |
| 1080 | %D%/packages/patches/crawl-upgrade-saves.patch \ | 1081 | %D%/packages/patches/crawl-upgrade-saves.patch \ |
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm index 6d4567acc40..612533b03d1 100644 --- a/gnu/packages/debug.scm +++ b/gnu/packages/debug.scm | |||
| @@ -46,6 +46,7 @@ | |||
| 46 | #:use-module (gnu packages bash) | 46 | #:use-module (gnu packages bash) |
| 47 | #:use-module (gnu packages bison) | 47 | #:use-module (gnu packages bison) |
| 48 | #:use-module (gnu packages c) | 48 | #:use-module (gnu packages c) |
| 49 | #:use-module (gnu packages cpp) | ||
| 49 | #:use-module (gnu packages check) | 50 | #:use-module (gnu packages check) |
| 50 | #:use-module (gnu packages code) | 51 | #:use-module (gnu packages code) |
| 51 | #:use-module (gnu packages compression) | 52 | #:use-module (gnu packages compression) |
| @@ -185,6 +186,56 @@ intended for use by people who discover and report bugs in compilers and other | |||
| 185 | tools that process C/C++ code.") | 186 | tools that process C/C++ code.") |
| 186 | (license license:ncsa))) | 187 | (license license:ncsa))) |
| 187 | 188 | ||
| 189 | (define-public cppdap | ||
| 190 | (package | ||
| 191 | (name "cppdap") | ||
| 192 | (version "1.58.0-a") | ||
| 193 | (source | ||
| 194 | (origin | ||
| 195 | (method git-fetch) | ||
| 196 | (uri | ||
| 197 | (git-reference | ||
| 198 | (url "https://github.com/google/cppdap") | ||
| 199 | (commit (string-append "dap-" version)))) | ||
| 200 | (modules '((guix build utils))) | ||
| 201 | (snippet | ||
| 202 | '(delete-file-recursively "third_party")) | ||
| 203 | (patches (search-patches | ||
| 204 | "cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch")) | ||
| 205 | (file-name (git-file-name name version)) | ||
| 206 | (sha256 | ||
| 207 | (base32 | ||
| 208 | "0fq2w35fw1lb5wya1nny45pk3a13b689k48calk1cmqmqpbcjn2b")))) | ||
| 209 | (build-system cmake-build-system) | ||
| 210 | (arguments | ||
| 211 | (list | ||
| 212 | #:configure-flags | ||
| 213 | #~(list | ||
| 214 | "-DCPPDAP_BUILD_TESTS=ON" | ||
| 215 | "-DCPPDAP_USE_EXTERNAL_GTEST_PACKAGE=ON" | ||
| 216 | ;; Only one of the following three can be enabled at the same time | ||
| 217 | ;; "-DCPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE=ON" | ||
| 218 | ;; "-DCPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE=ON" | ||
| 219 | "-DCPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE=ON"))) | ||
| 220 | (native-inputs | ||
| 221 | (list googletest)) | ||
| 222 | ;; see lib/cmake/cppdap/cppdapConfig.cmake | ||
| 223 | ;; cmake file require propagate this. | ||
| 224 | (propagated-inputs | ||
| 225 | (list | ||
| 226 | ;; Only one of the following three can be enabled at the same time | ||
| 227 | ;; rapidjson | ||
| 228 | ;; jsoncpp | ||
| 229 | nlohmann-json)) | ||
| 230 | (home-page "https://github.com/google/cppdap") | ||
| 231 | (synopsis "C++ library for the Debug Adapter Protocol") | ||
| 232 | (description | ||
| 233 | "cppdap is a C++11 library (\"SDK\") implementation of the Debug Adapter | ||
| 234 | Protocol, providing an API for implementing a DAP client or server. cppdap | ||
| 235 | provides C++ type-safe structures for the full DAP specification, and provides a | ||
| 236 | simple way to add custom protocol messages.") | ||
| 237 | (license license:expat))) | ||
| 238 | |||
| 188 | (define-public c-vise | 239 | (define-public c-vise |
| 189 | (package | 240 | (package |
| 190 | (name "c-vise") | 241 | (name "c-vise") |
diff --git a/gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch b/gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch new file mode 100644 index 00000000000..ab19edbf822 --- /dev/null +++ b/gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch | |||
| @@ -0,0 +1,103 @@ | |||
| 1 | from https://github.com/google/cppdap/pull/124 | ||
| 2 | |||
| 3 | From 40d9eaf3b6eca2ab8d5558e8935d56a75bd97183 Mon Sep 17 00:00:00 2001 | ||
| 4 | From: topazus <topazus@outlook.com> | ||
| 5 | Date: Wed, 27 Dec 2023 19:56:49 +0800 | ||
| 6 | Subject: [PATCH] CMake: add CPPDAP_USE_EXTERNAL_GTEST_PACKAGE option | ||
| 7 | |||
| 8 | --- | ||
| 9 | CMakeLists.txt | 35 +++++++++++++++++++++++++---------- | ||
| 10 | 1 file changed, 25 insertions(+), 10 deletions(-) | ||
| 11 | |||
| 12 | diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
| 13 | index 1b3c321..7292f3c 100644 | ||
| 14 | --- a/CMakeLists.txt | ||
| 15 | +++ b/CMakeLists.txt | ||
| 16 | @@ -40,6 +40,7 @@ option_if_not_defined(CPPDAP_INSTALL_VSCODE_EXAMPLES "Build and install dap exam | ||
| 17 | option_if_not_defined(CPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE "Use nlohmann_json with find_package() instead of building internal submodule" OFF) | ||
| 18 | option_if_not_defined(CPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE "Use RapidJSON with find_package()" OFF) | ||
| 19 | option_if_not_defined(CPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE "Use JsonCpp with find_package()" OFF) | ||
| 20 | +option_if_not_defined(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE "Use googletest with find_package()" OFF) | ||
| 21 | |||
| 22 | ########################################################### | ||
| 23 | # Directories | ||
| 24 | @@ -59,7 +60,7 @@ set_if_not_defined(CPPDAP_GOOGLETEST_DIR ${CPPDAP_THIRD_PARTY_DIR}/googletest) | ||
| 25 | ########################################################### | ||
| 26 | # Submodules | ||
| 27 | ########################################################### | ||
| 28 | -if(CPPDAP_BUILD_TESTS) | ||
| 29 | +if(CPPDAP_BUILD_TESTS AND NOT CPPDAP_USE_EXTERNAL_GTEST_PACKAGE) | ||
| 30 | if(NOT EXISTS ${CPPDAP_GOOGLETEST_DIR}/.git) | ||
| 31 | message(WARNING "third_party/googletest submodule missing.") | ||
| 32 | message(WARNING "Run: `git submodule update --init` to build tests.") | ||
| 33 | @@ -161,7 +162,7 @@ function(cppdap_set_json_links target) | ||
| 34 | target_link_libraries(${target} PRIVATE JsonCpp::JsonCpp) | ||
| 35 | else() | ||
| 36 | target_include_directories(${target} PRIVATE "${CPPDAP_JSON_DIR}/include/") | ||
| 37 | - endif() | ||
| 38 | + endif() | ||
| 39 | endfunction(cppdap_set_json_links) | ||
| 40 | |||
| 41 | function(cppdap_set_target_options target) | ||
| 42 | @@ -247,7 +248,7 @@ write_basic_package_version_file( | ||
| 43 | ) | ||
| 44 | configure_package_config_file( | ||
| 45 | ${CPPDAP_CMAKE_CONFIG_TEMPLATE} | ||
| 46 | - "${CPPDAP_CMAKE_PROJECT_CONFIG_FILE}" | ||
| 47 | + "${CPPDAP_CMAKE_PROJECT_CONFIG_FILE}" | ||
| 48 | INSTALL_DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR} | ||
| 49 | ) | ||
| 50 | |||
| 51 | @@ -276,6 +277,8 @@ DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR}) | ||
| 52 | |||
| 53 | # tests | ||
| 54 | if(CPPDAP_BUILD_TESTS) | ||
| 55 | + enable_testing() | ||
| 56 | + | ||
| 57 | set(DAP_TEST_LIST | ||
| 58 | ${CPPDAP_SRC_DIR}/any_test.cpp | ||
| 59 | ${CPPDAP_SRC_DIR}/chan_test.cpp | ||
| 60 | @@ -290,16 +293,24 @@ if(CPPDAP_BUILD_TESTS) | ||
| 61 | ${CPPDAP_SRC_DIR}/traits_test.cpp | ||
| 62 | ${CPPDAP_SRC_DIR}/typeinfo_test.cpp | ||
| 63 | ${CPPDAP_SRC_DIR}/variant_test.cpp | ||
| 64 | - ${CPPDAP_GOOGLETEST_DIR}/googletest/src/gtest-all.cc | ||
| 65 | ) | ||
| 66 | |||
| 67 | - set(DAP_TEST_INCLUDE_DIR | ||
| 68 | - ${CPPDAP_GOOGLETEST_DIR}/googlemock/include/ | ||
| 69 | - ${CPPDAP_GOOGLETEST_DIR}/googletest/ | ||
| 70 | - ${CPPDAP_GOOGLETEST_DIR}/googletest/include/ | ||
| 71 | - ) | ||
| 72 | + if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE) | ||
| 73 | + find_package(GTest REQUIRED) | ||
| 74 | + else() | ||
| 75 | + list(APPEND DAP_TEST_LIST | ||
| 76 | + ${CPPDAP_GOOGLETEST_DIR}/googletest/src/gtest-all.cc | ||
| 77 | + ) | ||
| 78 | + | ||
| 79 | + set(DAP_TEST_INCLUDE_DIR | ||
| 80 | + ${CPPDAP_GOOGLETEST_DIR}/googlemock/include/ | ||
| 81 | + ${CPPDAP_GOOGLETEST_DIR}/googletest/ | ||
| 82 | + ${CPPDAP_GOOGLETEST_DIR}/googletest/include/ | ||
| 83 | + ) | ||
| 84 | + endif() | ||
| 85 | |||
| 86 | add_executable(cppdap-unittests ${DAP_TEST_LIST}) | ||
| 87 | + add_test(NAME cppdap-unittests COMMAND cppdap-unittests) | ||
| 88 | |||
| 89 | target_include_directories(cppdap-unittests PUBLIC ${DAP_TEST_INCLUDE_DIR} ) | ||
| 90 | set_target_properties(cppdap-unittests PROPERTIES | ||
| 91 | @@ -312,7 +323,11 @@ if(CPPDAP_BUILD_TESTS) | ||
| 92 | endif() | ||
| 93 | |||
| 94 | cppdap_set_target_options(cppdap-unittests) | ||
| 95 | - target_link_libraries(cppdap-unittests PRIVATE cppdap) | ||
| 96 | + if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE) | ||
| 97 | + target_link_libraries(cppdap-unittests PRIVATE cppdap GTest::gtest) | ||
| 98 | + else() | ||
| 99 | + target_link_libraries(cppdap-unittests PRIVATE cppdap) | ||
| 100 | + endif() | ||
| 101 | endif(CPPDAP_BUILD_TESTS) | ||
| 102 | |||
| 103 | # fuzzer | ||
