From 5faa46fa0a94b1bb548901626bc7ad34b80cb144 Mon Sep 17 00:00:00 2001 From: Ramon Roche Date: Tue, 17 Jun 2025 13:46:52 -0700 Subject: [PATCH] cmake: use atomic profile updates for coverage Signed-off-by: Ramon Roche --- CMakeLists.txt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a535dafbaa..e5acfd2929 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -240,6 +240,20 @@ if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE ${PX4_BUILD_TYPE} CACHE STRING "Build type" FORCE) endif() +if (CMAKE_BUILD_TYPE STREQUAL Coverage) + # Coverage instrumentation plus atomic updates + set(COVERAGE_FLAGS + --coverage + -fprofile-update=atomic + ) + + # Apply to every compile and link invocation + add_compile_options(${COVERAGE_FLAGS}) + add_link_options(${COVERAGE_FLAGS}) + + message(STATUS "Coverage instrumentation enabled with flags: ${COVERAGE_FLAGS}") +endif() + if((CMAKE_BUILD_TYPE STREQUAL "Debug") OR (CMAKE_BUILD_TYPE STREQUAL "Coverage")) set(MAX_CUSTOM_OPT_LEVEL -O0) elseif(CMAKE_BUILD_TYPE MATCHES "Sanitizer") @@ -426,7 +440,6 @@ if(BUILD_TESTING) set_target_properties(test_results PROPERTIES EXCLUDE_FROM_ALL TRUE) endif() - #============================================================================= # subdirectories #