OSDN Git Service

[CMake] Fix pthread handling for out-of-tree builds
[android-x86/external-llvm.git] / lib / Fuzzer / CMakeLists.txt
1 set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}")
2 # Disable the coverage and sanitizer instrumentation for the fuzzer itself.
3 set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize-coverage=trace-pc-guard,edge,trace-cmp,indirect-calls,8bit-counters -Werror")
4 if( LLVM_USE_SANITIZE_COVERAGE )
5   if(NOT "${LLVM_USE_SANITIZER}" STREQUAL "Address")
6     message(FATAL_ERROR
7       "LibFuzzer and its tests require LLVM_USE_SANITIZER=Address and "
8       "LLVM_USE_SANITIZE_COVERAGE=YES to be set."
9       )
10   endif()
11   add_library(LLVMFuzzerNoMainObjects OBJECT
12     FuzzerCrossOver.cpp
13     FuzzerDriver.cpp
14     FuzzerExtFunctionsDlsym.cpp
15     FuzzerExtFunctionsDlsymWin.cpp
16     FuzzerExtFunctionsWeak.cpp
17     FuzzerIO.cpp
18     FuzzerIOPosix.cpp
19     FuzzerIOWindows.cpp
20     FuzzerLoop.cpp
21     FuzzerMerge.cpp
22     FuzzerMutate.cpp
23     FuzzerSHA1.cpp
24     FuzzerShmemPosix.cpp
25     FuzzerShmemWindows.cpp
26     FuzzerTracePC.cpp
27     FuzzerTraceState.cpp
28     FuzzerUtil.cpp
29     FuzzerUtilDarwin.cpp
30     FuzzerUtilLinux.cpp
31     FuzzerUtilPosix.cpp
32     FuzzerUtilWindows.cpp
33     )
34   add_library(LLVMFuzzerNoMain STATIC
35     $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
36     )
37   target_link_libraries(LLVMFuzzerNoMain ${LLVM_PTHREAD_LIB})
38   add_library(LLVMFuzzer STATIC
39     FuzzerMain.cpp
40     $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
41     )
42   target_link_libraries(LLVMFuzzer ${LLVM_PTHREAD_LIB})
43
44   if( LLVM_INCLUDE_TESTS )
45     add_subdirectory(test)
46   endif()
47 endif()