diff --git a/arch/arm/core/CMakeLists.txt b/arch/arm/core/CMakeLists.txt index 7ea2f9fd299..cb090dace32 100644 --- a/arch/arm/core/CMakeLists.txt +++ b/arch/arm/core/CMakeLists.txt @@ -2,11 +2,9 @@ zephyr_library() -zephyr_compile_options_ifdef(CONFIG_COVERAGE_GCOV - -ftest-coverage - -fprofile-arcs - -fno-inline - ) +if (CONFIG_COVERAGE) + toolchain_cc_coverage() +endif () zephyr_library_sources( exc_exit.S diff --git a/arch/posix/CMakeLists.txt b/arch/posix/CMakeLists.txt index 4a6ffd97370..ff0283041ed 100644 --- a/arch/posix/CMakeLists.txt +++ b/arch/posix/CMakeLists.txt @@ -21,14 +21,9 @@ toolchain_cc_no_freestanding_options() zephyr_include_directories(${BOARD_DIR}) -zephyr_compile_options_ifdef(CONFIG_COVERAGE - -fprofile-arcs - -ftest-coverage - -fno-inline -) -zephyr_link_libraries_ifdef(CONFIG_COVERAGE - -lgcov - ) +if (CONFIG_COVERAGE) + toolchain_cc_coverage() +endif () if (CONFIG_ASAN) zephyr_compile_options(-fsanitize=address) diff --git a/arch/x86/core/CMakeLists.txt b/arch/x86/core/CMakeLists.txt index af3f23f9c4b..9c94423461a 100644 --- a/arch/x86/core/CMakeLists.txt +++ b/arch/x86/core/CMakeLists.txt @@ -3,11 +3,9 @@ zephyr_library() -zephyr_compile_options_ifdef(CONFIG_COVERAGE_GCOV - -ftest-coverage - -fprofile-arcs - -fno-inline - ) +if (CONFIG_COVERAGE) + toolchain_cc_coverage() +endif () zephyr_library_sources(cpuhalt.c) zephyr_library_sources_if_kconfig(pcie.c) diff --git a/cmake/compiler/clang/target.cmake b/cmake/compiler/clang/target.cmake index ff5e4213d88..80c6332efcb 100644 --- a/cmake/compiler/clang/target.cmake +++ b/cmake/compiler/clang/target.cmake @@ -73,6 +73,7 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_baremetal.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_warnings.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake) +include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_coverage.cmake) macro(toolchain_cc_security_fortify) # No op, clang doesn't understand fortify at all diff --git a/cmake/compiler/clang/target_coverage.cmake b/cmake/compiler/clang/target_coverage.cmake new file mode 100644 index 00000000000..7cbfa17f7d1 --- /dev/null +++ b/cmake/compiler/clang/target_coverage.cmake @@ -0,0 +1,18 @@ +# SPDX-License-Identifier: Apache-2.0 + +macro(toolchain_cc_coverage) + +zephyr_compile_options( + --coverage + -fno-inline +) + +if (NOT CONFIG_COVERAGE_GCOV) + + zephyr_link_libraries( + --coverage + ) + +endif() + +endmacro() diff --git a/cmake/compiler/gcc/target.cmake b/cmake/compiler/gcc/target.cmake index accd4ff19f2..7ec61cca42f 100644 --- a/cmake/compiler/gcc/target.cmake +++ b/cmake/compiler/gcc/target.cmake @@ -140,3 +140,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_baremetal.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_warnings.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_imacros.cmake) include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_base.cmake) +include(${ZEPHYR_BASE}/cmake/compiler/${COMPILER}/target_coverage.cmake) diff --git a/cmake/compiler/gcc/target_coverage.cmake b/cmake/compiler/gcc/target_coverage.cmake new file mode 100644 index 00000000000..5a7dc74ef03 --- /dev/null +++ b/cmake/compiler/gcc/target_coverage.cmake @@ -0,0 +1,19 @@ +# SPDX-License-Identifier: Apache-2.0 + +macro(toolchain_cc_coverage) + +zephyr_compile_options( + -fprofile-arcs + -ftest-coverage + -fno-inline +) + +if (NOT CONFIG_COVERAGE_GCOV) + + zephyr_link_libraries( + -lgcov + ) + +endif() + +endmacro() diff --git a/cmake/compiler/host-gcc/target.cmake b/cmake/compiler/host-gcc/target.cmake index ed3210fd07e..9f3528003bb 100644 --- a/cmake/compiler/host-gcc/target.cmake +++ b/cmake/compiler/host-gcc/target.cmake @@ -76,3 +76,4 @@ include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_baremetal.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_warnings.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_imacros.cmake) include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_base.cmake) +include(${ZEPHYR_BASE}/cmake/compiler/gcc/target_coverage.cmake)