blob: 1829f0586b858845a7eb701f48bc66cec09b8c39 [file] [log] [blame]
Dan Liew676892a2016-05-26 20:55:05 +00001set(LIBFUZZER_FLAGS_BASE "${CMAKE_CXX_FLAGS}")
Kostya Serebryany16d03bd2015-03-30 22:09:51 +00002# Disable the coverage and sanitizer instrumentation for the fuzzer itself.
Kostya Serebryanybceadcf2016-08-24 01:38:42 +00003set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE} -fno-sanitize=all -fno-sanitize-coverage=edge,trace-cmp,indirect-calls,8bit-counters -Werror")
Aaron Ballmanf77031f2015-04-06 16:09:13 +00004if( LLVM_USE_SANITIZE_COVERAGE )
Dan Liewc752a2642016-05-26 20:55:09 +00005 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()
Kostya Serebryanyf3424592015-05-22 22:35:31 +000011 add_library(LLVMFuzzerNoMainObjects OBJECT
Aaron Ballmanef116982015-01-29 16:58:29 +000012 FuzzerCrossOver.cpp
Kostya Serebryany22526252015-05-11 21:16:27 +000013 FuzzerTraceState.cpp
Kostya Serebryany016852c2015-02-19 18:45:37 +000014 FuzzerDriver.cpp
Dan Liewd3c33112016-06-02 05:48:02 +000015 FuzzerExtFunctionsDlsym.cpp
16 FuzzerExtFunctionsWeak.cpp
Aaron Ballmanef116982015-01-29 16:58:29 +000017 FuzzerIO.cpp
18 FuzzerLoop.cpp
Aaron Ballmanef116982015-01-29 16:58:29 +000019 FuzzerMutate.cpp
Kostya Serebryany96eab652015-05-14 22:41:49 +000020 FuzzerSHA1.cpp
Kostya Serebryanyda63c1d2016-02-26 21:33:56 +000021 FuzzerTracePC.cpp
Aaron Ballmanef116982015-01-29 16:58:29 +000022 FuzzerUtil.cpp
Dan Liewed3c9ca2016-08-12 18:29:36 +000023 FuzzerUtilDarwin.cpp
24 FuzzerUtilLinux.cpp
Aaron Ballmanef116982015-01-29 16:58:29 +000025 )
Kostya Serebryanyf3424592015-05-22 22:35:31 +000026 add_library(LLVMFuzzerNoMain STATIC
27 $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
28 )
Rafael Espindola5cd721a2016-03-01 15:54:40 +000029 target_link_libraries(LLVMFuzzerNoMain ${PTHREAD_LIB})
Kostya Serebryany71672552015-01-30 23:26:57 +000030 add_library(LLVMFuzzer STATIC
31 FuzzerMain.cpp
Kostya Serebryanyf3424592015-05-22 22:35:31 +000032 $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
Kostya Serebryany71672552015-01-30 23:26:57 +000033 )
Rafael Espindola5cd721a2016-03-01 15:54:40 +000034 target_link_libraries(LLVMFuzzer ${PTHREAD_LIB})
Aaron Ballmanef116982015-01-29 16:58:29 +000035
36 if( LLVM_INCLUDE_TESTS )
37 add_subdirectory(test)
38 endif()
39endif()