4cff70c111192e1383b0d867bd45c4f113bfd2dd
[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   TimeoutTest
25   )
26
27 set(CustomMainTests
28   UserSuppliedFuzzerTest
29   )
30
31
32 set(TestBinaries)
33
34 foreach(Test ${Tests})
35   add_executable(LLVMFuzzer-${Test}
36     ${Test}.cpp
37     )
38   target_link_libraries(LLVMFuzzer-${Test}
39     LLVMFuzzer
40     )
41   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
42 endforeach()
43
44 foreach(Test ${CustomMainTests})
45   add_executable(LLVMFuzzer-${Test}
46     ${Test}.cpp
47     )
48   target_link_libraries(LLVMFuzzer-${Test}
49     LLVMFuzzerNoMain
50     )
51   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test})
52 endforeach()
53
54
55 configure_lit_site_cfg(
56   ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
57   ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
58   )
59
60 configure_lit_site_cfg(
61   ${CMAKE_CURRENT_SOURCE_DIR}/unit/lit.site.cfg.in
62   ${CMAKE_CURRENT_BINARY_DIR}/unit/lit.site.cfg
63   )
64
65 include_directories(..)
66 include_directories(${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include)
67
68 add_executable(LLVMFuzzer-Unittest
69   FuzzerUnittest.cpp
70   $<TARGET_OBJECTS:LLVMFuzzerNoMainObjects>
71   )
72
73 target_link_libraries(LLVMFuzzer-Unittest
74   gtest
75   gtest_main
76   )
77
78 set(TestBinaries ${TestBinaries} LLVMFuzzer-Unittest)
79
80 add_subdirectory(dfsan)
81
82 foreach(Test ${DFSanTests})
83   set(TestBinaries ${TestBinaries} LLVMFuzzer-${Test}-DFSan)
84 endforeach()
85
86
87 set_target_properties(${TestBinaries}
88   PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
89   )
90
91 add_lit_testsuite(check-fuzzer "Running Fuzzer tests"
92     ${CMAKE_CURRENT_BINARY_DIR}
93     DEPENDS ${TestBinaries} FileCheck not
94     )