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