mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2026-07-11 17:51:37 +00:00
test: support an alternative runtime library dir per test
- introduce FAIRMQ_TEST_LD_LIBRARY_PATH, which prepends a directory to each test's environment via ctest, so the tests can run against an alternative runtime library (e.g. a tsan-instrumented libstdc++) - LD_LIBRARY_PATH rather than an injected rpath: an rpath added via the linker flags cannot precede the rpath spack's gcc adds through its specs file, so the compiler's own libstdc++ would keep winning the runtime search order - scoped per test on purpose: an instrumented library has unresolved __tsan_* symbols and must not be loaded into uninstrumented tools like cmake, ctest or ninja - fail the configuration instead of silently dropping the injection on CMake < 3.22 (ENVIRONMENT_MODIFICATION) - cover the example tests too; they share the instrumented runtime but not the locale-cache warmup (their main() is the installed public header). The custom-controller env block was dead before: it tested lsan_options, which only ever existed in the add_example() function scope, so the test also never received the LSan suppressions
This commit is contained in:
committed by
Dennis Klein
parent
2febbe3146
commit
b568535910
@@ -46,6 +46,13 @@ include(FairMQDependencies)
|
||||
|
||||
|
||||
# Targets ######################################################################
|
||||
if(FAIRMQ_TEST_LD_LIBRARY_PATH AND CMAKE_VERSION VERSION_LESS 3.22)
|
||||
# The per-test injection relies on ctest's ENVIRONMENT_MODIFICATION, which
|
||||
# older CMake silently drops -- the tests would run against the default
|
||||
# runtime while looking green.
|
||||
message(FATAL_ERROR "FAIRMQ_TEST_LD_LIBRARY_PATH requires CMake >= 3.22")
|
||||
endif()
|
||||
|
||||
if(BUILD_FAIRMQ)
|
||||
add_subdirectory(fairmq)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user