CMakeLists.txt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Build all these tests with -O0, otherwise optimizations may merge some
  2. # basic blocks and we'll fail to discover the targets.
  3. # Also enable the coverage instrumentation back (it is disabled
  4. # for the Fuzzer lib)
  5. set(CMAKE_CXX_FLAGS_RELEASE "${LIBFUZZER_FLAGS_BASE} -O0 -fsanitize-coverage=edge,indirect-calls")
  6. set(DFSanTests
  7. DFSanMemcmpTest
  8. DFSanSimpleCmpTest
  9. )
  10. set(Tests
  11. CounterTest
  12. CxxTokensTest
  13. FourIndependentBranchesTest
  14. FullCoverageSetTest
  15. InfiniteTest
  16. NullDerefTest
  17. SimpleTest
  18. TimeoutTest
  19. ${DFSanTests}
  20. )
  21. set(CustomMainTests
  22. UserSuppliedFuzzerTest
  23. )
  24. set(TestBinaries)
  25. foreach(Test ${Tests})
  26. add_executable(LLVMFuzzer-${Test}
  27. ${Test}.cpp
  28. )
  29. target_link_libraries(LLVMFuzzer-${Test}
  30. LLVMFuzzer
  31. )
  32. set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
  33. endforeach()
  34. foreach(Test ${CustomMainTests})
  35. add_executable(LLVMFuzzer-${Test}
  36. ${Test}.cpp
  37. )
  38. target_link_libraries(LLVMFuzzer-${Test}
  39. LLVMFuzzerNoMain
  40. )
  41. set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
  42. endforeach()
  43. configure_lit_site_cfg(
  44. ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
  45. ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
  46. )
  47. configure_lit_site_cfg(
  48. ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in
  49. ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg
  50. )
  51. include_directories(..)
  52. include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
  53. add_executable(LLVMFuzzer-Unittest
  54. FuzzerUnittest.cpp
  55. $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
  56. )
  57. target_link_libraries(LLVMFuzzer-Unittest
  58. gtest
  59. gtest_main
  60. )
  61. set(TestBinaries ${TestBinaries} LLVMFuzzer-Unittest)
  62. add_subdirectory(dfsan)
  63. foreach(Test ${DFSanTests})
  64. set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-DFSan)
  65. endforeach()
  66. set_target_properties(${TestBinaries}
  67. PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
  68. )
  69. add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
  70. ${CMAKE_CURRENT_BINARY_DIR}
  71. DEPENDS ${TestBinaries} FileCheck not
  72. )