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 ()