xref: /llvm-project/compiler-rt/lib/rtsan/CMakeLists.txt (revision 1e07c4800cf46ac9e4748b664cb58cbd48acb918)
1include_directories(..)
2
3set(RTSAN_CXX_SOURCES
4  rtsan.cpp
5  rtsan_context.cpp
6  rtsan_diagnostics.cpp
7  rtsan_flags.cpp
8  rtsan_interceptors_posix.cpp
9  rtsan_stats.cpp
10  rtsan_suppressions.cpp
11  )
12
13set(RTSAN_PREINIT_SOURCES
14  rtsan_preinit.cpp)
15
16set(RTSAN_HEADERS
17  rtsan.h
18  rtsan_checks.inc
19  rtsan_assertions.h
20  rtsan_context.h
21  rtsan_diagnostics.h
22  rtsan_flags.h
23  rtsan_flags.inc
24  rtsan_stats.h
25  rtsan_suppressions.h
26  )
27
28set(RTSAN_DEPS)
29
30set(RTSAN_CFLAGS
31  ${COMPILER_RT_COMMON_CFLAGS}
32  ${COMPILER_RT_CXX_CFLAGS}
33  -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS)
34set(RTSAN_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS})
35set(RTSAN_DYNAMIC_LIBS
36  ${COMPILER_RT_UNWINDER_LINK_LIBS}
37  ${SANITIZER_CXX_ABI_LIBRARIES}
38  ${SANITIZER_COMMON_LINK_LIBS})
39
40append_rtti_flag(OFF RTSAN_CFLAGS)
41
42if(APPLE)
43  add_compiler_rt_object_libraries(RTRtsan
44    OS ${SANITIZER_COMMON_SUPPORTED_OS}
45    ARCHS ${RTSAN_SUPPORTED_ARCH}
46    SOURCES ${RTSAN_CXX_SOURCES}
47    ADDITIONAL_HEADERS ${RTSAN_HEADERS}
48    CFLAGS ${RTSAN_CFLAGS}
49    DEPS ${RTSAN_DEPS})
50else()
51  add_compiler_rt_object_libraries(RTRtsan
52    ARCHS ${RTSAN_SUPPORTED_ARCH}
53    SOURCES ${RTSAN_CXX_SOURCES}
54    ADDITIONAL_HEADERS ${RTSAN_HEADERS}
55    CFLAGS ${RTSAN_CFLAGS}
56    DEPS ${RTSAN_DEPS})
57  add_compiler_rt_object_libraries(RTRtsan_preinit
58    ARCHS ${RTSAN_SUPPORTED_ARCH}
59    SOURCES ${RTSAN_PREINIT_SOURCES}
60    ADDITIONAL_HEADERS ${RTSAN_HEADERS}
61    CFLAGS ${RTSAN_CFLAGS})
62endif()
63
64set(RTSAN_COMMON_RUNTIME_OBJECT_LIBS
65  RTInterception
66  RTSanitizerCommon
67  RTSanitizerCommonLibc
68  RTSanitizerCommonCoverage
69  RTSanitizerCommonSymbolizer)
70
71append_list_if(COMPILER_RT_HAS_LIBDL dl RTSAN_DYNAMIC_LIBS)
72append_list_if(COMPILER_RT_HAS_LIBRT rt RTSAN_DYNAMIC_LIBS)
73append_list_if(COMPILER_RT_HAS_LIBM m RTSAN_DYNAMIC_LIBS)
74append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread RTSAN_DYNAMIC_LIBS)
75append_list_if(COMPILER_RT_HAS_LIBLOG log RTSAN_DYNAMIC_LIBS)
76
77add_compiler_rt_component(rtsan)
78
79if (APPLE)
80  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
81  set(RTSAN_LINK_FLAGS ${RTSAN_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS})
82
83  add_compiler_rt_runtime(clang_rt.rtsan
84    SHARED
85    OS ${SANITIZER_COMMON_SUPPORTED_OS}
86    ARCHS ${RTSAN_SUPPORTED_ARCH}
87    OBJECT_LIBS RTRtsan
88                ${RTSAN_COMMON_RUNTIME_OBJECT_LIBS}
89    LINK_FLAGS ${RTSAN_LINK_FLAGS}
90    LINK_LIBS ${RTSAN_DYNAMIC_LIBS}
91    PARENT_TARGET rtsan)
92else()
93  add_compiler_rt_runtime(clang_rt.rtsan
94    STATIC
95    ARCHS ${RTSAN_SUPPORTED_ARCH}
96    OBJECT_LIBS RTRtsan_preinit
97                RTRtsan
98                ${RTSAN_COMMON_RUNTIME_OBJECT_LIBS}
99    LINK_FLAGS ${RTSAN_LINK_FLAGS}
100    CFLAGS ${RTSAN_CFLAGS}
101    PARENT_TARGET rtsan)
102endif()
103
104if(COMPILER_RT_INCLUDE_TESTS)
105  add_subdirectory(tests)
106endif()
107