mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-07-24 15:27:41 +08:00
fuzztest's coverage instrumentation is incompatible with Thread Sanitizer. Add px4_setup_gtest_without_fuzztest() macro to cmake/px4_add_gtest.cmake that fetches GTest standalone and stubs out fuzztest cmake functions. Guard all fuzztest-specific code on TARGET fuzztest::fuzztest so it compiles cleanly without fuzztest.
28 lines
978 B
CMake
28 lines
978 B
CMake
if(CMAKE_BUILD_TYPE STREQUAL "ThreadSanitizer")
|
|
message(STATUS "TSAN build: skipping fuzztest, fetching GTest only")
|
|
px4_setup_gtest_without_fuzztest()
|
|
else()
|
|
px4_add_git_submodule(TARGET git_fuzztest PATH "fuzztest")
|
|
message(STATUS "Adding fuzztest")
|
|
# This will also add GTest
|
|
add_subdirectory(fuzztest EXCLUDE_FROM_ALL)
|
|
endif()
|
|
|
|
# Ensure there's no -R without any filter expression since that trips newer ctest versions
|
|
if(TESTFILTER)
|
|
set(TESTFILTERARG "-R")
|
|
else()
|
|
set(TESTFILTERARG "")
|
|
endif()
|
|
|
|
add_custom_target(test_results
|
|
# antlr4_tests_NOT_BUILT gets added by fuzztest
|
|
COMMAND GTEST_COLOR=1 ${CMAKE_CTEST_COMMAND} --output-on-failure -T Test ${TESTFILTERARG} ${TESTFILTER} --exclude-regex "antlr4_tests_NOT_BUILT"
|
|
DEPENDS
|
|
px4
|
|
examples__dyn_hello
|
|
USES_TERMINAL
|
|
COMMENT "Running tests"
|
|
WORKING_DIRECTORY ${PX4_BINARY_DIR})
|
|
set_target_properties(test_results PROPERTIES EXCLUDE_FROM_ALL TRUE)
|