1*9880d681SAndroid Build Coastguard Workerset(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}") 2*9880d681SAndroid Build Coastguard Worker# Disable the coverage and sanitizer instrumentation for the fuzzer itself. 3*9880d681SAndroid Build Coastguard Workerset(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize=all -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters -Werror") 4*9880d681SAndroid Build Coastguard Workerif( LLVM_USE_SANITIZE_COVERAGE ) 5*9880d681SAndroid Build Coastguard Worker if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address") 6*9880d681SAndroid Build Coastguard Worker message(FATAL_ERROR 7*9880d681SAndroid Build Coastguard Worker "LibFuzzer and its tests require LLVM_USE_SANITIZER=Address and " 8*9880d681SAndroid Build Coastguard Worker "LLVM_USE_SANITIZE_COVERAGE=YES to be set." 9*9880d681SAndroid Build Coastguard Worker ) 10*9880d681SAndroid Build Coastguard Worker endif() 11*9880d681SAndroid Build Coastguard Worker add_library(LLVMFuzzerNoMainObjects OBJECT 12*9880d681SAndroid Build Coastguard Worker FuzzerCrossOver.cpp 13*9880d681SAndroid Build Coastguard Worker FuzzerTraceState.cpp 14*9880d681SAndroid Build Coastguard Worker FuzzerDriver.cpp 15*9880d681SAndroid Build Coastguard Worker FuzzerExtFunctionsDlsym.cpp 16*9880d681SAndroid Build Coastguard Worker FuzzerExtFunctionsWeak.cpp 17*9880d681SAndroid Build Coastguard Worker FuzzerIO.cpp 18*9880d681SAndroid Build Coastguard Worker FuzzerLoop.cpp 19*9880d681SAndroid Build Coastguard Worker FuzzerMutate.cpp 20*9880d681SAndroid Build Coastguard Worker FuzzerSHA1.cpp 21*9880d681SAndroid Build Coastguard Worker FuzzerTracePC.cpp 22*9880d681SAndroid Build Coastguard Worker FuzzerUtil.cpp 23*9880d681SAndroid Build Coastguard Worker ) 24*9880d681SAndroid Build Coastguard Worker add_library(LLVMFuzzerNoMain STATIC 25*9880d681SAndroid Build Coastguard Worker $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects> 26*9880d681SAndroid Build Coastguard Worker ) 27*9880d681SAndroid Build Coastguard Worker target_link_libraries(LLVMFuzzerNoMain ${PTHREAD_LIB}) 28*9880d681SAndroid Build Coastguard Worker add_library(LLVMFuzzer STATIC 29*9880d681SAndroid Build Coastguard Worker FuzzerMain.cpp 30*9880d681SAndroid Build Coastguard Worker $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects> 31*9880d681SAndroid Build Coastguard Worker ) 32*9880d681SAndroid Build Coastguard Worker target_link_libraries(LLVMFuzzer ${PTHREAD_LIB}) 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker if( LLVM_INCLUDE_TESTS ) 35*9880d681SAndroid Build Coastguard Worker add_subdirectory(test) 36*9880d681SAndroid Build Coastguard Worker endif() 37*9880d681SAndroid Build Coastguard Workerendif() 38