macro(add_fuzzer_test FILES LINK_LIBS)
    if (BUILD_FUZZERS)
        string(REPLACE " " ";" LOCAL_LINK_LIBS ${LINK_LIBS})
        list(APPEND LOCAL_LINK_LIBS fuzzer_config)
        foreach(test ${FILES})
            get_filename_component(TestName ${test} NAME_WE)
            add_executable(${TestName} ${test})
            # Use PUBLIC to force 'fuzzer_config' for all dependent targets.
            target_link_libraries(${TestName} PUBLIC ${LOCAL_LINK_LIBS})
            add_test(${TestName} ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${TestName})
            set_target_properties(${TestName} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
            add_dependencies(fuzzers ${TestName})
        endforeach()
    endif (BUILD_FUZZERS)
endmacro()
