CMakeLists.txt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # ArduinoJson - https://arduinojson.org
  2. # Copyright © 2014-2023, Benoit BLANCHON
  3. # MIT License
  4. set(CMAKE_CXX_STANDARD 11)
  5. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  6. if(MSVC)
  7. add_compile_options(-D_CRT_SECURE_NO_WARNINGS)
  8. endif()
  9. add_executable(msgpack_reproducer
  10. msgpack_fuzzer.cpp
  11. reproducer.cpp
  12. )
  13. target_link_libraries(msgpack_reproducer
  14. ArduinoJson
  15. )
  16. add_executable(json_reproducer
  17. json_fuzzer.cpp
  18. reproducer.cpp
  19. )
  20. target_link_libraries(json_reproducer
  21. ArduinoJson
  22. )
  23. macro(add_fuzzer name)
  24. set(FUZZER "${name}_fuzzer")
  25. set(CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_corpus")
  26. set(SEED_CORPUS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${name}_seed_corpus")
  27. add_executable("${FUZZER}"
  28. "${name}_fuzzer.cpp"
  29. )
  30. target_link_libraries("${FUZZER}"
  31. ArduinoJson
  32. )
  33. set_target_properties("${FUZZER}"
  34. PROPERTIES
  35. COMPILE_FLAGS "-fprofile-instr-generate -fcoverage-mapping -fsanitize=fuzzer -fno-sanitize-recover=all"
  36. LINK_FLAGS "-fprofile-instr-generate -fcoverage-mapping -fsanitize=fuzzer -fno-sanitize-recover=all"
  37. )
  38. add_test(
  39. NAME "${FUZZER}"
  40. COMMAND "${FUZZER}" "${CORPUS_DIR}" "${SEED_CORPUS_DIR}" -max_total_time=5 -timeout=1
  41. )
  42. set_tests_properties("${FUZZER}"
  43. PROPERTIES
  44. LABELS "Fuzzing"
  45. )
  46. endmacro()
  47. if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6)
  48. add_fuzzer(json)
  49. add_fuzzer(msgpack)
  50. endif()