Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/fuzzing/CMakeLists.txt
blob: 03e205ce584e918ac827c26b87561e903f4a1db1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# License: Boost 1.0
# By Paul Dreik 2020

# add a library that brings in the main() function from libfuzzer
# and has all the dependencies, so the individual fuzzers can be
# added one line each.
add_library(fuzzhelper NullOStream.h NullOStream.cpp)
target_link_libraries(fuzzhelper PUBLIC Catch3::Catch3)

# The runner fuzzers include its C++20 headers.
target_compile_features(fuzzhelper PUBLIC cxx_std_17)

# This should be possible to set from the outside to be oss-fuzz compatible,
# fix later. For now, target libFuzzer only.
target_link_options(fuzzhelper PUBLIC "-fsanitize=fuzzer")

foreach(fuzzer TestSpecParser)
  add_executable(fuzz_${fuzzer} fuzz_${fuzzer}.cpp)
  target_link_libraries(fuzz_${fuzzer} PRIVATE fuzzhelper)
endforeach()

# Progmasoft's fuzzers live apart, under their own license header.
foreach(fuzzer ProjectConfig RunnerJson RunnerOptions)
  add_executable(fuzz_${fuzzer} Progmasoft/fuzz_${fuzzer}.cpp)
  target_link_libraries(fuzz_${fuzzer} PRIVATE fuzzhelper)
endforeach()