aboutsummaryrefslogtreecommitdiff
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
parent837016fe33e11c6252ec24c423d1b6ae0cd7efd3 (diff)
downloadguix-2d19e505f6f9f82aebc9ba8c74ba223818acd9bc.tar
guix-2d19e505f6f9f82aebc9ba8c74ba223818acd9bc.tar.gz
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>
-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 a153b3e247..42961e60b2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1075,6 +1075,7 @@ dist_patch_DATA = \
%D%/packages/patches/cool-retro-term-wctype.patch \
%D%/packages/patches/coreutils-gnulib-tests.patch \
%D%/packages/patches/cppcheck-disable-char-signedness-test.patch \
+ %D%/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch\
%D%/packages/patches/cpuinfo-system-libraries.patch \
%D%/packages/patches/cpulimit-with-glib-2.32.patch \
%D%/packages/patches/crawl-upgrade-saves.patch \
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 6d4567acc4..612533b03d 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages c)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages check)
#:use-module (gnu packages code)
#:use-module (gnu packages compression)
@@ -185,6 +186,56 @@ intended for use by people who discover and report bugs in compilers and other
tools that process C/C++ code.")
(license license:ncsa)))
+(define-public cppdap
+ (package
+ (name "cppdap")
+ (version "1.58.0-a")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/google/cppdap")
+ (commit (string-append "dap-" version))))
+ (modules '((guix build utils)))
+ (snippet
+ '(delete-file-recursively "third_party"))
+ (patches (search-patches
+ "cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch"))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0fq2w35fw1lb5wya1nny45pk3a13b689k48calk1cmqmqpbcjn2b"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:configure-flags
+ #~(list
+ "-DCPPDAP_BUILD_TESTS=ON"
+ "-DCPPDAP_USE_EXTERNAL_GTEST_PACKAGE=ON"
+ ;; Only one of the following three can be enabled at the same time
+ ;; "-DCPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE=ON"
+ ;; "-DCPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE=ON"
+ "-DCPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE=ON")))
+ (native-inputs
+ (list googletest))
+ ;; see lib/cmake/cppdap/cppdapConfig.cmake
+ ;; cmake file require propagate this.
+ (propagated-inputs
+ (list
+ ;; Only one of the following three can be enabled at the same time
+ ;; rapidjson
+ ;; jsoncpp
+ nlohmann-json))
+ (home-page "https://github.com/google/cppdap")
+ (synopsis "C++ library for the Debug Adapter Protocol")
+ (description
+ "cppdap is a C++11 library (\"SDK\") implementation of the Debug Adapter
+Protocol, providing an API for implementing a DAP client or server. cppdap
+provides C++ type-safe structures for the full DAP specification, and provides a
+simple way to add custom protocol messages.")
+ (license license:expat)))
+
(define-public c-vise
(package
(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 0000000000..ab19edbf82
--- /dev/null
+++ b/gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch
@@ -0,0 +1,103 @@
+from https://github.com/google/cppdap/pull/124
+
+From 40d9eaf3b6eca2ab8d5558e8935d56a75bd97183 Mon Sep 17 00:00:00 2001
+From: topazus <topazus@outlook.com>
+Date: Wed, 27 Dec 2023 19:56:49 +0800
+Subject: [PATCH] CMake: add CPPDAP_USE_EXTERNAL_GTEST_PACKAGE option
+
+---
+ CMakeLists.txt | 35 +++++++++++++++++++++++++----------
+ 1 file changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1b3c321..7292f3c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -40,6 +40,7 @@ option_if_not_defined(CPPDAP_INSTALL_VSCODE_EXAMPLES "Build and install dap exam
+ option_if_not_defined(CPPDAP_USE_EXTERNAL_NLOHMANN_JSON_PACKAGE "Use nlohmann_json with find_package() instead of building internal submodule" OFF)
+ option_if_not_defined(CPPDAP_USE_EXTERNAL_RAPIDJSON_PACKAGE "Use RapidJSON with find_package()" OFF)
+ option_if_not_defined(CPPDAP_USE_EXTERNAL_JSONCPP_PACKAGE "Use JsonCpp with find_package()" OFF)
++option_if_not_defined(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE "Use googletest with find_package()" OFF)
+
+ ###########################################################
+ # Directories
+@@ -59,7 +60,7 @@ set_if_not_defined(CPPDAP_GOOGLETEST_DIR ${CPPDAP_THIRD_PARTY_DIR}/googletest)
+ ###########################################################
+ # Submodules
+ ###########################################################
+-if(CPPDAP_BUILD_TESTS)
++if(CPPDAP_BUILD_TESTS AND NOT CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
+ if(NOT EXISTS ${CPPDAP_GOOGLETEST_DIR}/.git)
+ message(WARNING "third_party/googletest submodule missing.")
+ message(WARNING "Run: `git submodule update --init` to build tests.")
+@@ -161,7 +162,7 @@ function(cppdap_set_json_links target)
+ target_link_libraries(${target} PRIVATE JsonCpp::JsonCpp)
+ else()
+ target_include_directories(${target} PRIVATE "${CPPDAP_JSON_DIR}/include/")
+- endif()
++ endif()
+ endfunction(cppdap_set_json_links)
+
+ function(cppdap_set_target_options target)
+@@ -247,7 +248,7 @@ write_basic_package_version_file(
+ )
+ configure_package_config_file(
+ ${CPPDAP_CMAKE_CONFIG_TEMPLATE}
+- "${CPPDAP_CMAKE_PROJECT_CONFIG_FILE}"
++ "${CPPDAP_CMAKE_PROJECT_CONFIG_FILE}"
+ INSTALL_DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR}
+ )
+
+@@ -276,6 +277,8 @@ DESTINATION ${CPPDAP_CONFIG_INSTALL_DIR})
+
+ # tests
+ if(CPPDAP_BUILD_TESTS)
++ enable_testing()
++
+ set(DAP_TEST_LIST
+ ${CPPDAP_SRC_DIR}/any_test.cpp
+ ${CPPDAP_SRC_DIR}/chan_test.cpp
+@@ -290,16 +293,24 @@ if(CPPDAP_BUILD_TESTS)
+ ${CPPDAP_SRC_DIR}/traits_test.cpp
+ ${CPPDAP_SRC_DIR}/typeinfo_test.cpp
+ ${CPPDAP_SRC_DIR}/variant_test.cpp
+- ${CPPDAP_GOOGLETEST_DIR}/googletest/src/gtest-all.cc
+ )
+
+- set(DAP_TEST_INCLUDE_DIR
+- ${CPPDAP_GOOGLETEST_DIR}/googlemock/include/
+- ${CPPDAP_GOOGLETEST_DIR}/googletest/
+- ${CPPDAP_GOOGLETEST_DIR}/googletest/include/
+- )
++ if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
++ find_package(GTest REQUIRED)
++ else()
++ list(APPEND DAP_TEST_LIST
++ ${CPPDAP_GOOGLETEST_DIR}/googletest/src/gtest-all.cc
++ )
++
++ set(DAP_TEST_INCLUDE_DIR
++ ${CPPDAP_GOOGLETEST_DIR}/googlemock/include/
++ ${CPPDAP_GOOGLETEST_DIR}/googletest/
++ ${CPPDAP_GOOGLETEST_DIR}/googletest/include/
++ )
++ endif()
+
+ add_executable(cppdap-unittests ${DAP_TEST_LIST})
++ add_test(NAME cppdap-unittests COMMAND cppdap-unittests)
+
+ target_include_directories(cppdap-unittests PUBLIC ${DAP_TEST_INCLUDE_DIR} )
+ set_target_properties(cppdap-unittests PROPERTIES
+@@ -312,7 +323,11 @@ if(CPPDAP_BUILD_TESTS)
+ endif()
+
+ cppdap_set_target_options(cppdap-unittests)
+- target_link_libraries(cppdap-unittests PRIVATE cppdap)
++ if(CPPDAP_USE_EXTERNAL_GTEST_PACKAGE)
++ target_link_libraries(cppdap-unittests PRIVATE cppdap GTest::gtest)
++ else()
++ target_link_libraries(cppdap-unittests PRIVATE cppdap)
++ endif()
+ endif(CPPDAP_BUILD_TESTS)
+
+ # fuzzer