From b9d82aa69d96fc1e83cba51b6b40e3917baae21a Mon Sep 17 00:00:00 2001 From: bacon-jam Date: Thu, 21 May 2026 01:43:19 -0400 Subject: [PATCH] Fix Windows MSVC/Clang-CL C++20 and target-scoped coverage configuration --- CMakeLists.txt | 4 +++- cmake/AddFuzzTest.cmake | 6 ++++++ cmake/FuzzTestFlagSetup.cmake | 9 ++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f9f71df01..7150a7a98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,9 @@ option(FUZZTEST_BUILD_TESTING "Building the tests." OFF) option(FUZZTEST_BUILD_FLATBUFFERS "Building the flatbuffers support." OFF) option(FUZZTEST_FUZZING_MODE "Building the fuzztest in fuzzing mode." OFF) set(FUZZTEST_COMPATIBILITY_MODE "" CACHE STRING "Compatibility mode. Available options: , libfuzzer") -set(CMAKE_CXX_STANDARD 17) +if (NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 17) +endif () if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set (COMPILER_GCC 1) diff --git a/cmake/AddFuzzTest.cmake b/cmake/AddFuzzTest.cmake index ca649a99b..49ed854ac 100644 --- a/cmake/AddFuzzTest.cmake +++ b/cmake/AddFuzzTest.cmake @@ -19,6 +19,9 @@ function(link_fuzztest name) fuzztest::fuzztest fuzztest::fuzztest_gtest_main ) + if (FUZZTEST_FUZZING_MODE) + target_compile_options(${name} PRIVATE -fsanitize-coverage=inline-8bit-counters -fsanitize-coverage=trace-cmp) + endif () endfunction() function(link_fuzztest_core name) @@ -28,4 +31,7 @@ function(link_fuzztest_core name) fuzztest::fuzztest_core fuzztest::fuzztest_gtest_main ) + if (FUZZTEST_FUZZING_MODE) + target_compile_options(${name} PRIVATE -fsanitize-coverage=inline-8bit-counters -fsanitize-coverage=trace-cmp) + endif () endfunction() diff --git a/cmake/FuzzTestFlagSetup.cmake b/cmake/FuzzTestFlagSetup.cmake index ac6a24aeb..85b254299 100644 --- a/cmake/FuzzTestFlagSetup.cmake +++ b/cmake/FuzzTestFlagSetup.cmake @@ -14,16 +14,11 @@ macro(fuzztest_setup_fuzzing_flags) if (FUZZTEST_FUZZING_MODE OR (FUZZTEST_COMPATIBILITY_MODE STREQUAL "libfuzzer")) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -UNDEBUG -fsanitize=address") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -UNDEBUG -fsanitize=address") - SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -UNDEBUG") + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -UNDEBUG") endif () if (FUZZTEST_COMPATIBILITY_MODE STREQUAL "libfuzzer") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=fuzzer-no-link -DFUZZTEST_COMPATIBILITY_MODE") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=fuzzer-no-link -DFUZZTEST_COMPATIBILITY_MODE") endif () - if (FUZZTEST_FUZZING_MODE OR (FUZZTEST_COMPATIBILITY_MODE STREQUAL "libfuzzer")) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize-coverage=inline-8bit-counters -fsanitize-coverage=trace-cmp -fsanitize=address -DADDRESS_SANITIZER") - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize-coverage=inline-8bit-counters -fsanitize-coverage=trace-cmp -fsanitize=address -DADDRESS_SANITIZER") - endif () endmacro ()