diff --git a/cmake/config/compiler.cmake b/cmake/config/compiler.cmake index fb43500420..065f13917b 100644 --- a/cmake/config/compiler.cmake +++ b/cmake/config/compiler.cmake @@ -17,6 +17,15 @@ else() target_compile_options( eve_test INTERFACE -std=c++20 -Werror -Wall -Wpedantic -Wextra -fdiagnostics-color=always -Wno-array-bounds -Wno-stringop-overread -Wno-stringop-overflow) endif() +if(EVE_ENABLE_COVERAGE) + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + message(FATAL_ERROR "EVE coverage profiling is not supported on MSVC") + else() + target_compile_options( eve_test INTERFACE --coverage -fprofile-update=atomic ) + target_link_options( eve_test INTERFACE --coverage -fprofile-update=atomic ) + endif() +endif() + target_include_directories( eve_test INTERFACE ${PROJECT_SOURCE_DIR}/test ${PROJECT_SOURCE_DIR}/examples diff --git a/cmake/config/options.cmake b/cmake/config/options.cmake index b2740ed5c3..b5e6f22e81 100644 --- a/cmake/config/options.cmake +++ b/cmake/config/options.cmake @@ -12,6 +12,7 @@ option( EVE_BUILD_TEST "Build unit tests for eve" option( EVE_BUILD_RANDOM "Build random precision tests for eve" OFF ) option( EVE_BUILD_BENCHMARKS "Build benchmarks for eve" OFF ) option( EVE_BUILD_DOCUMENTATION "Compile Doxygen documentation" ON ) +option( EVE_ENABLE_COVERAGE "Enable code coverage" OFF ) if( EVE_USE_PCH ) set(pch_status "ON ") @@ -37,10 +38,17 @@ else() set(bench_status "OFF") endif() +if( EVE_ENABLE_COVERAGE ) + set(coverage_status "ON ") +else() + set(coverage_status "OFF") +endif() + message( STATUS "[eve] Building ${CMAKE_BUILD_TYPE} mode with: ${CMAKE_CXX_FLAGS}" ) message( STATUS "[eve] Use PCH : ${pch_status} (via EVE_USE_PCH)" ) message( STATUS "[eve] Unit tests : ${test_status} (via EVE_BUILD_TEST)" ) message( STATUS "[eve] Random tests : ${random_status} (via EVE_BUILD_RANDOM)" ) message( STATUS "[eve] Benchmarks tests : ${bench_status} (via EVE_BUILD_BENCHMARKS)" ) +message( STATUS "[eve] Code Coverage : ${coverage_status} (via EVE_ENABLE_COVERAGE)" ) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/include/eve/arch/cpu/wide.hpp b/include/eve/arch/cpu/wide.hpp index 3c40a73988..d1fef21972 100644 --- a/include/eve/arch/cpu/wide.hpp +++ b/include/eve/arch/cpu/wide.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include