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