summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorDaniel Ziltener <dziltener@lyrion.ch>2024-04-16 00:26:36 +0800
committerZheng Junjie <zhengjunjie@iscas.ac.cn>2024-04-23 16:45:34 +0800
commit2d19e505f6f9f82aebc9ba8c74ba223818acd9bc (patch)
tree0166a0e8fdcb8024e0ed36eba4620ccd21020f71 /gnu
parent837016fe33e11c6252ec24c423d1b6ae0cd7efd3 (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.mk1
-rw-r--r--gnu/packages/debug.scm51
-rw-r--r--gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch103
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
185tools that process C/C++ code.") 186tools 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
234Protocol, providing an API for implementing a DAP client or server. cppdap
235provides C++ type-safe structures for the full DAP specification, and provides a
236simple 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 @@
1from https://github.com/google/cppdap/pull/124
2
3From 40d9eaf3b6eca2ab8d5558e8935d56a75bd97183 Mon Sep 17 00:00:00 2001
4From: topazus <topazus@outlook.com>
5Date: Wed, 27 Dec 2023 19:56:49 +0800
6Subject: [PATCH] CMake: add CPPDAP_USE_EXTERNAL_GTEST_PACKAGE option
7
8---
9 CMakeLists.txt | 35 +++++++++++++++++++++++++----------
10 1 file changed, 25 insertions(+), 10 deletions(-)
11
12diff --git a/CMakeLists.txt b/CMakeLists.txt
13index 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