Files
bitcoin/depends/patches/boost/skip_compiled_targets.patch
Cory Fields 6c2538d5bf depends: Bump boost to 1.88.0 and use new CMake buildsystem
This has a few advantages over the old method of simply copying headers:
- Installs proper cmake files which can be picked up by our buildsystem
- Only installs necessary headers, not all of boost

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
2025-06-25 13:37:50 +01:00

137 lines
4.0 KiB
Diff

cmake: Add `BOOST_TEST_HEADERS_ONLY` configuration variable
This change allows the build to be configured to install only the
Boost.Test headers required for using the headers-only variant of the
Unit Test Framework.
Upstream commit: 097e97820e654ead9c477b47443a545cef5d3b12
--- a/libs/test/CMakeLists.txt
+++ b/libs/test/CMakeLists.txt
@@ -30,60 +30,70 @@ set(_boost_test_dependencies
Boost::utility
)
-# Compiled targets
+option(BOOST_TEST_HEADERS_ONLY "Boost.Test: Only install headers" OFF)
-function(boost_test_add_library name)
+set(_boost_test_libraries "")
- add_library(boost_${name} ${ARGN})
- add_library(Boost::${name} ALIAS boost_${name})
+if (NOT BOOST_TEST_HEADERS_ONLY)
- target_include_directories(boost_${name} PUBLIC include)
- target_link_libraries(boost_${name} PUBLIC ${_boost_test_dependencies})
+ # Compiled targets
- target_compile_definitions(boost_${name}
- PUBLIC BOOST_TEST_NO_LIB
- # Source files already define BOOST_TEST_SOURCE
- # PRIVATE BOOST_TEST_SOURCE
- )
+ function(boost_test_add_library name)
- if(BUILD_SHARED_LIBS)
- target_compile_definitions(boost_${name} PUBLIC BOOST_TEST_DYN_LINK)
- else()
- target_compile_definitions(boost_${name} PUBLIC BOOST_TEST_STATIC_LINK)
- endif()
+ add_library(boost_${name} ${ARGN})
+ add_library(Boost::${name} ALIAS boost_${name})
-endfunction()
+ target_include_directories(boost_${name} PUBLIC include)
+ target_link_libraries(boost_${name} PUBLIC ${_boost_test_dependencies})
-boost_test_add_library(prg_exec_monitor
- src/cpp_main.cpp
- src/debug.cpp
- src/execution_monitor.cpp
-)
+ target_compile_definitions(boost_${name}
+ PUBLIC BOOST_TEST_NO_LIB
+ # Source files already define BOOST_TEST_SOURCE
+ # PRIVATE BOOST_TEST_SOURCE
+ )
-set(SOURCES
- src/compiler_log_formatter.cpp
- src/debug.cpp
- src/decorator.cpp
- src/execution_monitor.cpp
- src/framework.cpp
- src/junit_log_formatter.cpp
- src/plain_report_formatter.cpp
- src/progress_monitor.cpp
- src/results_collector.cpp
- src/results_reporter.cpp
- src/test_framework_init_observer.cpp
- src/test_tools.cpp
- src/test_tree.cpp
- src/unit_test_log.cpp
- src/unit_test_main.cpp
- src/unit_test_monitor.cpp
- src/unit_test_parameters.cpp
- src/xml_log_formatter.cpp
- src/xml_report_formatter.cpp
-)
+ if(BUILD_SHARED_LIBS)
+ target_compile_definitions(boost_${name} PUBLIC BOOST_TEST_DYN_LINK)
+ else()
+ target_compile_definitions(boost_${name} PUBLIC BOOST_TEST_STATIC_LINK)
+ endif()
+
+ endfunction()
-boost_test_add_library(test_exec_monitor STATIC ${SOURCES} src/test_main.cpp)
-boost_test_add_library(unit_test_framework ${SOURCES})
+ boost_test_add_library(prg_exec_monitor
+ src/cpp_main.cpp
+ src/debug.cpp
+ src/execution_monitor.cpp
+ )
+
+ set(SOURCES
+ src/compiler_log_formatter.cpp
+ src/debug.cpp
+ src/decorator.cpp
+ src/execution_monitor.cpp
+ src/framework.cpp
+ src/junit_log_formatter.cpp
+ src/plain_report_formatter.cpp
+ src/progress_monitor.cpp
+ src/results_collector.cpp
+ src/results_reporter.cpp
+ src/test_framework_init_observer.cpp
+ src/test_tools.cpp
+ src/test_tree.cpp
+ src/unit_test_log.cpp
+ src/unit_test_main.cpp
+ src/unit_test_monitor.cpp
+ src/unit_test_parameters.cpp
+ src/xml_log_formatter.cpp
+ src/xml_report_formatter.cpp
+ )
+
+ boost_test_add_library(test_exec_monitor STATIC ${SOURCES} src/test_main.cpp)
+ boost_test_add_library(unit_test_framework ${SOURCES})
+
+ set(_boost_test_libraries boost_prg_exec_monitor boost_test_exec_monitor boost_unit_test_framework)
+
+endif()
# Header-only targets
@@ -107,7 +117,7 @@ if(BOOST_SUPERPROJECT_VERSION AND NOT CMAKE_VERSION VERSION_LESS 3.13)
boost_install(
TARGETS
- boost_prg_exec_monitor boost_test_exec_monitor boost_unit_test_framework
+ ${_boost_test_libraries}
boost_included_prg_exec_monitor boost_included_test_exec_monitor boost_included_unit_test_framework
VERSION ${BOOST_SUPERPROJECT_VERSION}
HEADER_DIRECTORY include