diff options
Diffstat (limited to 'fuzzers/CMakeLists.txt')
-rw-r--r-- | fuzzers/CMakeLists.txt | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/fuzzers/CMakeLists.txt b/fuzzers/CMakeLists.txt index 59eca24d0..a2c19ed40 100644 --- a/fuzzers/CMakeLists.txt +++ b/fuzzers/CMakeLists.txt @@ -1,23 +1,28 @@ -LINK_DIRECTORIES(${LIBGIT2_LIBDIRS}) -INCLUDE_DIRECTORIES(${LIBGIT2_INCLUDES}) -INCLUDE_DIRECTORIES(SYSTEM ${LIBGIT2_SYSTEM_INCLUDES}) +# fuzzers: libFuzzer and standalone fuzzing utilities -IF(BUILD_FUZZERS AND NOT USE_STANDALONE_FUZZERS) - ADD_C_FLAG(-fsanitize=fuzzer) -ENDIF () +if(BUILD_FUZZERS AND NOT USE_STANDALONE_FUZZERS) + set(CMAKE_REQUIRED_FLAGS "-fsanitize=fuzzer-no-link") + add_c_flag(-fsanitize=fuzzer) + add_c_flag(-fsanitize=fuzzer-no-link) + unset(CMAKE_REQUIRED_FLAGS) +endif() -FILE(GLOB SRC_FUZZ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *_fuzzer.c) -FOREACH(fuzz_target_src ${SRC_FUZZ}) - STRING(REPLACE ".c" "" fuzz_target_name ${fuzz_target_src}) - STRING(REPLACE "_fuzzer" "" fuzz_name ${fuzz_target_name}) +file(GLOB SRC_FUZZERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *_fuzzer.c) +foreach(fuzz_target_src ${SRC_FUZZERS}) + string(REPLACE ".c" "" fuzz_target_name ${fuzz_target_src}) + string(REPLACE "_fuzzer" "" fuzz_name ${fuzz_target_name}) - SET(${fuzz_target_name}_SOURCES ${fuzz_target_src} ${LIBGIT2_OBJECTS}) - IF(USE_STANDALONE_FUZZERS) - LIST(APPEND ${fuzz_target_name}_SOURCES "standalone_driver.c") - ENDIF() - ADD_EXECUTABLE(${fuzz_target_name} ${${fuzz_target_name}_SOURCES}) - SET_TARGET_PROPERTIES(${fuzz_target_name} PROPERTIES C_STANDARD 90) - TARGET_LINK_LIBRARIES(${fuzz_target_name} ${LIBGIT2_LIBS}) + set(${fuzz_target_name}_SOURCES ${fuzz_target_src} ${LIBGIT2_OBJECTS}) + if(USE_STANDALONE_FUZZERS) + list(APPEND ${fuzz_target_name}_SOURCES "standalone_driver.c") + endif() + add_executable(${fuzz_target_name} ${${fuzz_target_name}_SOURCES}) + set_target_properties(${fuzz_target_name} PROPERTIES C_STANDARD 90) - ADD_TEST(${fuzz_target_name} "${CMAKE_CURRENT_BINARY_DIR}/${fuzz_target_name}" "${CMAKE_CURRENT_SOURCE_DIR}/corpora/${fuzz_name}") -ENDFOREACH() + target_include_directories(${fuzz_target_name} PRIVATE ${LIBGIT2_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES}) + target_include_directories(${fuzz_target_name} SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES}) + + target_link_libraries(${fuzz_target_name} ${LIBGIT2_SYSTEM_LIBS}) + + add_test(${fuzz_target_name} "${CMAKE_CURRENT_BINARY_DIR}/${fuzz_target_name}" "${CMAKE_CURRENT_SOURCE_DIR}/corpora/${fuzz_name}") +endforeach() |