1cmake_minimum_required(VERSION 3.5.1) 2 3if(CMAKE_C_COMPILER_ID MATCHES "Clang") 4 enable_language(CXX) 5 6 if(DEFINED ENV{LIB_FUZZING_ENGINE}) 7 set(FUZZING_ENGINE $ENV{LIB_FUZZING_ENGINE}) 8 set(FUZZING_ENGINE_FOUND ON) 9 else() 10 find_library(FUZZING_ENGINE "FuzzingEngine") 11 endif() 12endif() 13 14set(FUZZERS 15 fuzzer_checksum 16 fuzzer_compress 17 fuzzer_example_small 18 fuzzer_example_large 19 fuzzer_example_flush 20 fuzzer_example_dict 21 ) 22 23if(WITH_GZFILEOP) 24 list(APPEND FUZZERS fuzzer_minigzip) 25endif() 26 27foreach(FUZZER ${FUZZERS}) 28 add_executable(${FUZZER} ${FUZZER}.c) 29 30 if(NOT FUZZING_ENGINE_FOUND) 31 target_sources(${FUZZER} PRIVATE standalone_fuzz_target_runner.c) 32 endif() 33 34 target_link_libraries(${FUZZER} zlibstatic) 35 if(FUZZING_ENGINE_FOUND) 36 target_link_libraries(${FUZZER} ${FUZZING_ENGINE}) 37 endif() 38 39 if(ZLIB_ENABLE_TESTS) 40 file(GLOB FUZZER_TEST_FILES ${CMAKE_SOURCE_DIR}/*) 41 set(FUZZER_COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:${FUZZER}> ${FUZZER_TEST_FILES}) 42 add_test(NAME ${FUZZER} COMMAND ${FUZZER_COMMAND}) 43 endif() 44endforeach() 45