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