guix/gnu/packages/patches/cppdap-add-CPPDAP_USE_EXTERNAL_GTEST_PACKAGE.patch
Daniel Ziltener 2d19e505f6
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>
2024-04-23 16:45:34 +08:00

103 lines
3.9 KiB
Diff

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