[libFuzzer] trace switch statements and apply mutations based on the expected case...
[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=edge,indirect-calls")
6
7 set(DFSanTests
8   MemcmpTest
9   SimpleCmpTest
10   StrncmpTest
11   )
12
13 set(Tests
14   CounterTest
15   CxxTokensTest
16   FourIndependentBranchesTest
17   FullCoverageSetTest
18   InfiniteTest
19   MemcmpTest
20   NullDerefTest
21   SimpleCmpTest
22   SimpleTest
23   StrncmpTest
24   SwitchTest
25   TimeoutTest
26   )
27
28 set(CustomMainTests
29   UserSuppliedFuzzerTest
30   )
31
32
33 set(TestBinaries)
34
35 foreach(Test ${Tests})
36   add_executable(LLVMFuzzer-${Test}
37     ${Test}.cpp
38     )
39   target_link_libraries(LLVMFuzzer-${Test}
40     LLVMFuzzer
41     )
42   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
43 endforeach()
44
45 foreach(Test ${CustomMainTests})
46   add_executable(LLVMFuzzer-${Test}
47     ${Test}.cpp
48     )
49   target_link_libraries(LLVMFuzzer-${Test}
50     LLVMFuzzerNoMain
51     )
52   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
53 endforeach()
54
55
56 configure_lit_site_cfg(
57   ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
58   ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
59   )
60
61 configure_lit_site_cfg(
62   ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in
63   ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg
64   )
65
66 include_directories(..)
67 include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
68
69 add_executable(LLVMFuzzer-Unittest
70   FuzzerUnittest.cpp
71   $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
72   )
73
74 target_link_libraries(LLVMFuzzer-Unittest
75   gtest
76   gtest_main
77   )
78
79 set(TestBinaries ${TestBinaries} LLVMFuzzer-Unittest)
80
81 add_subdirectory(dfsan)
82
83 foreach(Test ${DFSanTests})
84   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-DFSan)
85 endforeach()
86
87
88 set_target_properties(${TestBinaries}
89   PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
90   )
91
92 add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
93     ${CMAKE_CURRENT_BINARY_DIR}
94     DEPENDS ${TestBinaries} FileCheck not
95     )