[fuzzer] Add support for token-based fuzzing (e.g. for C++). Allow string flags.
[oota-llvm.git] / lib / Fuzzer / test / CMakeLists.txt
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=4")
6
7 set(Tests
8   CounterTest
9   CxxTokensTest
10   FourIndependentBranchesTest
11   FullCoverageSetTest
12   InfiniteTest
13   NullDerefTest
14   SimpleTest
15   TimeoutTest
16   )
17
18 set(DFSanTests
19   DFSanSimpleCmpTest
20   )
21
22 set(TestBinaries)
23
24 foreach(Test ${Tests})
25   add_executable(LLVMFuzzer-${Test}
26     ${Test}.cpp
27     )
28   target_link_libraries(LLVMFuzzer-${Test}
29     LLVMFuzzer
30     )
31   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
32 endforeach()
33
34 configure_lit_site_cfg(
35   ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
36   ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
37   )
38
39 configure_lit_site_cfg(
40   ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in
41   ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg
42   )
43
44 include_directories(..)
45 include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
46
47 add_executable(LLVMFuzzer-Unittest
48   FuzzerUnittest.cpp
49   $<TARGET_OBJECTS:LLVMFuzzerNoMain>
50   )
51
52 target_link_libraries(LLVMFuzzer-Unittest
53   gtest
54   gtest_main
55   )
56
57 set(TestBinaries ${TestBinaries} LLVMFuzzer-Unittest)
58
59 add_subdirectory(dfsan)
60
61 foreach(Test ${DFSanTests})
62   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
63 endforeach()
64
65
66 set_target_properties(${TestBinaries}
67   PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
68   )
69
70 add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
71     ${CMAKE_CURRENT_BINARY_DIR}
72     DEPENDS ${TestBinaries} FileCheck not
73     )