-# Disable the coverage instrumentation for the fuzzer itself.
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2 -fsanitize-coverage=0")
-if( LLVM_USE_SANITIZE_COVERAGE )
- add_library(LLVMFuzzer STATIC
- EXCLUDE_FROM_ALL # Do not build if you are not building fuzzers.
+set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS_RELEASE}")
+# Disable the coverage and sanitizer instrumentation for the fuzzer itself.
+set(CMAKE_CXX_FLAGS_RELEASE "${LIBFUZZER_FLAGS_BASE} -O2 -fno-sanitize=all")
+if( LLVM_USE_SANITIZE_COVERAGE )
+ add_library(LLVMFuzzerNoMainObjects OBJECT
FuzzerCrossOver.cpp
+ FuzzerInterface.cpp
+ FuzzerTraceState.cpp
+ FuzzerDriver.cpp
FuzzerIO.cpp
FuzzerLoop.cpp
- FuzzerMain.cpp
FuzzerMutate.cpp
+ FuzzerSanitizerOptions.cpp
+ FuzzerSHA1.cpp
FuzzerUtil.cpp
)
+ add_library(LLVMFuzzerNoMain STATIC
+ $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
+ )
+ add_library(LLVMFuzzer STATIC
+ FuzzerMain.cpp
+ $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
+ )
if( LLVM_INCLUDE_TESTS )
add_subdirectory(test)