xref: /aosp_15_r20/external/llvm/lib/Fuzzer/CMakeLists.txt (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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