]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/fuzzer/tests/CMakeLists.txt
Vendor import of compiler-rt trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / lib / fuzzer / tests / CMakeLists.txt
1 include(CompilerRTCompile)
2
3 set(LIBFUZZER_UNITTEST_CFLAGS
4   ${COMPILER_RT_UNITTEST_CFLAGS}
5   ${COMPILER_RT_GTEST_CFLAGS}
6   -I${COMPILER_RT_SOURCE_DIR}/lib/fuzzer
7   -fno-rtti
8   -O2)
9
10 if (APPLE)
11   set(FUZZER_SUPPORTED_OS osx)
12 endif()
13
14 add_custom_target(FuzzerUnitTests)
15 set_target_properties(FuzzerUnitTests PROPERTIES FOLDER "Compiler-RT Tests")
16
17 set(LIBFUZZER_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_LINK_FLAGS})
18 list(APPEND LIBFUZZER_UNITTEST_LINK_FLAGS --driver-mode=g++)
19
20 if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
21   list(APPEND LIBFUZZER_UNITTEST_LINK_FLAGS -lc++ -lpthread)
22 elseif(NOT WIN32)
23   list(APPEND LIBFUZZER_UNITTEST_LINK_FLAGS -lstdc++ -lpthread)
24 endif()
25
26 if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND COMPILER_RT_LIBCXX_PATH)
27   list(APPEND LIBFUZZER_UNITTEST_CFLAGS -nostdinc++)
28 endif()
29
30 if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST FUZZER_SUPPORTED_ARCH)
31   # libFuzzer unit tests are only run on the host machine.
32   set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH})
33
34   set(LIBFUZZER_TEST_RUNTIME RTFuzzerTest.${arch})
35   if(APPLE)
36     set(LIBFUZZER_TEST_RUNTIME_OBJECTS
37       $<TARGET_OBJECTS:RTfuzzer.osx>)
38   else()
39     set(LIBFUZZER_TEST_RUNTIME_OBJECTS
40       $<TARGET_OBJECTS:RTfuzzer.${arch}>)
41   endif()
42   add_library(${LIBFUZZER_TEST_RUNTIME} STATIC
43     ${LIBFUZZER_TEST_RUNTIME_OBJECTS})
44   set_target_properties(${LIBFUZZER_TEST_RUNTIME} PROPERTIES
45     ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
46     FOLDER "Compiler-RT Runtime tests")
47
48   if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux" AND COMPILER_RT_LIBCXX_PATH)
49     set(LIBFUZZER_TEST_RUNTIME_DEPS libcxx_fuzzer_${arch}-build)
50     set(LIBFUZZER_TEST_RUNTIME_CFLAGS -isystem ${LIBCXX_${arch}_PREFIX}/include/c++/v1)
51     set(LIBFUZZER_TEST_RUNTIME_LINK_FLAGS ${LIBCXX_${arch}_PREFIX}/lib/libc++.a)
52   endif()
53
54   set(FuzzerTestObjects)
55   generate_compiler_rt_tests(FuzzerTestObjects
56     FuzzerUnitTests "Fuzzer-${arch}-Test" ${arch}
57     SOURCES FuzzerUnittest.cpp ${COMPILER_RT_GTEST_SOURCE}
58     RUNTIME ${LIBFUZZER_TEST_RUNTIME}
59     DEPS gtest ${LIBFUZZER_TEST_RUNTIME_DEPS}
60     CFLAGS ${LIBFUZZER_UNITTEST_CFLAGS} ${LIBFUZZER_TEST_RUNTIME_CFLAGS}
61     LINK_FLAGS ${LIBFUZZER_UNITTEST_LINK_FLAGS} ${LIBFUZZER_TEST_RUNTIME_LINK_FLAGS})
62   set_target_properties(FuzzerUnitTests PROPERTIES
63     RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
64 endif()