From 015bd1447472f82a5607ecb5fabaf25bf37cd4e2 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Tue, 21 Feb 2023 21:04:58 +0000 Subject: Don't give the libFuzzer version of fuzzpuzz a special name I've changed my mind already. The other versions of fuzzpuzz all have different command-line interfaces anyway, so I think the best approach is to just accept that and decide that precisely how fuzzpuzz works isn't a defined API. Fuzzing is inherently not an end-user activity, so I think it's acceptable to make it a bit inconsistent. This means that in Clang builds you get the non-libFuzzer version of fuzzpuzz by default (so you can use it with other fuzzers), but if you turn on WITH_LIBFUZZER then you'll get the libFuzzer version instead. --- CMakeLists.txt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index ceb4756..37c0f54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -279,18 +279,15 @@ if(build_cli_programs) write_generated_games_header() include(CheckFunctionExists) check_function_exists(HF_ITER HAVE_HF_ITER) + set(WITH_LIBFUZZER OFF + CACHE BOOL "Build fuzzpuzz using Clang's libFuzzer") cliprogram(fuzzpuzz fuzzpuzz.c list.c ${puzzle_sources} - COMPILE_DEFINITIONS COMBINED $<$:HAVE_HF_ITER>) + COMPILE_DEFINITIONS COMBINED $<$:OMIT_MAIN> + $<$:HAVE_HF_ITER>) target_include_directories(fuzzpuzz PRIVATE ${generated_include_dir}) - - if(CMAKE_C_COMPILER_ID MATCHES "Clang") - cliprogram(fuzzpuzz-libfuzzer fuzzpuzz.c list.c ${puzzle_sources} - COMPILE_DEFINITIONS COMBINED OMIT_MAIN) - target_include_directories(fuzzpuzz-libfuzzer - PRIVATE ${generated_include_dir}) - target_compile_options(fuzzpuzz-libfuzzer PRIVATE -fsanitize=fuzzer) - set_target_properties(fuzzpuzz-libfuzzer - PROPERTIES LINK_FLAGS -fsanitize=fuzzer) + if(WITH_LIBFUZZER) + target_compile_options(fuzzpuzz PRIVATE -fsanitize=fuzzer) + set_target_properties(fuzzpuzz PROPERTIES LINK_FLAGS -fsanitize=fuzzer) endif() endif() -- cgit v1.1