guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/05: gnu: Add cppdap.


From: guix-commits
Subject: 05/05: gnu: Add cppdap.
Date: Tue, 23 Apr 2024 04:52:36 -0400 (EDT)

z572 pushed a commit to branch master
in repository guix.

commit 2d19e505f6f9f82aebc9ba8c74ba223818acd9bc
Author: Daniel Ziltener <dziltener@lyrion.ch>
AuthorDate: Tue Apr 16 00:26:36 2024 +0800

    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>
---
 gnu/local.mk                                       |   1 +
 gnu/packages/debug.scm                             |  51 ++++++++++
 ...dap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch | 103 +++++++++++++++++++++
 3 files changed, 155 insertions(+)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]