xref: /llvm-project/compiler-rt/lib/gwp_asan/tests/CMakeLists.txt (revision 0a94511aec7a41194c0e61d88801312542ff70ce)
1include(CompilerRTCompile)
2
3set(GWP_ASAN_UNITTEST_CFLAGS
4  ${COMPILER_RT_UNITTEST_CFLAGS}
5  ${COMPILER_RT_GTEST_CFLAGS}
6  ${SANITIZER_TEST_CXX_CFLAGS}
7  -std=c++17
8  -I${COMPILER_RT_SOURCE_DIR}/lib/
9  -O2
10  -g
11  -fno-omit-frame-pointer)
12
13file(GLOB GWP_ASAN_HEADERS ../*.h)
14set(GWP_ASAN_UNITTESTS
15  platform_specific/printf_sanitizer_common.cpp
16  alignment.cpp
17  backtrace.cpp
18  basic.cpp
19  compression.cpp
20  iterate.cpp
21  crash_handler_api.cpp
22  driver.cpp
23  mutex_test.cpp
24  slot_reuse.cpp
25  thread_contention.cpp
26  harness.cpp
27  enable_disable.cpp
28  late_init.cpp
29  options.cpp
30  recoverable.cpp
31  never_allocated.cpp
32  utilities.cpp
33)
34
35set(GWP_ASAN_UNIT_TEST_HEADERS
36  ${GWP_ASAN_HEADERS}
37  harness.h)
38
39add_custom_target(GwpAsanUnitTests)
40set_target_properties(GwpAsanUnitTests PROPERTIES FOLDER "Compiler-RT/Tests")
41
42set(GWP_ASAN_UNITTEST_LINK_FLAGS
43  ${COMPILER_RT_UNITTEST_LINK_FLAGS} -ldl
44  ${COMPILER_RT_UNWINDER_LINK_LIBS}
45  ${SANITIZER_TEST_CXX_LIBRARIES})
46list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS --driver-mode=g++)
47if(NOT WIN32)
48  list(APPEND GWP_ASAN_UNITTEST_LINK_FLAGS -pthread)
49endif()
50
51if(COMPILER_RT_DEFAULT_TARGET_ARCH IN_LIST GWP_ASAN_SUPPORTED_ARCH)
52  # GWP-ASan unit tests are only run on the host machine.
53  set(arch ${COMPILER_RT_DEFAULT_TARGET_ARCH})
54
55  set(GWP_ASAN_TEST_RUNTIME RTGwpAsanTest.${arch})
56
57  set(GWP_ASAN_TEST_RUNTIME_OBJECTS
58    $<TARGET_OBJECTS:RTGwpAsan.${arch}>
59    $<TARGET_OBJECTS:RTGwpAsanBacktraceSanitizerCommon.${arch}>
60    $<TARGET_OBJECTS:RTGwpAsanSegvHandler.${arch}>
61    $<TARGET_OBJECTS:RTGwpAsanOptionsParser.${arch}>
62    $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
63    $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
64    $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
65    $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>)
66
67  add_library(${GWP_ASAN_TEST_RUNTIME} STATIC
68    ${GWP_ASAN_TEST_RUNTIME_OBJECTS})
69
70  set_target_properties(${GWP_ASAN_TEST_RUNTIME} PROPERTIES
71    ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
72    FOLDER "Compiler-RT/Tests/Runtime")
73
74  set(GwpAsanTestObjects)
75  generate_compiler_rt_tests(GwpAsanTestObjects
76    GwpAsanUnitTests "GwpAsan-${arch}-Test" ${arch}
77    SOURCES ${GWP_ASAN_UNITTESTS} ${COMPILER_RT_GTEST_SOURCE}
78    RUNTIME ${GWP_ASAN_TEST_RUNTIME}
79    DEPS ${GWP_ASAN_UNIT_TEST_HEADERS}
80    CFLAGS ${GWP_ASAN_UNITTEST_CFLAGS}
81    LINK_FLAGS ${GWP_ASAN_UNITTEST_LINK_FLAGS})
82  set_target_properties(GwpAsanUnitTests PROPERTIES
83    RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
84endif()
85