]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - lib/lsan/CMakeLists.txt
Vendor import of compiler-rt trunk r351319 (just before the release_80
[FreeBSD/FreeBSD.git] / lib / lsan / CMakeLists.txt
1 include_directories(..)
2
3 set(LSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS})
4 append_rtti_flag(OFF LSAN_CFLAGS)
5
6 set(LSAN_COMMON_SOURCES
7   lsan_common.cc
8   lsan_common_linux.cc
9   lsan_common_mac.cc)
10
11 set(LSAN_SOURCES
12   lsan.cc
13   lsan_allocator.cc
14   lsan_linux.cc
15   lsan_interceptors.cc
16   lsan_mac.cc
17   lsan_malloc_mac.cc
18   lsan_preinit.cc
19   lsan_thread.cc)
20
21 set(LSAN_HEADERS
22   lsan.h
23   lsan_allocator.h
24   lsan_common.h
25   lsan_flags.inc
26   lsan_thread.h)
27
28 set(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
29
30 add_compiler_rt_object_libraries(RTLSanCommon
31     OS ${SANITIZER_COMMON_SUPPORTED_OS}
32     ARCHS ${LSAN_COMMON_SUPPORTED_ARCH}
33     SOURCES ${LSAN_COMMON_SOURCES}
34     ADDITIONAL_HEADERS ${LSAN_HEADERS}
35     CFLAGS ${LSAN_CFLAGS})
36
37 if(COMPILER_RT_HAS_LSAN)
38   add_compiler_rt_component(lsan)
39   if(APPLE)
40     set(LSAN_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
41
42     add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS)
43     add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
44
45     add_compiler_rt_runtime(clang_rt.lsan
46       SHARED
47       OS ${SANITIZER_COMMON_SUPPORTED_OS}
48       ARCHS ${LSAN_SUPPORTED_ARCH}
49       SOURCES ${LSAN_SOURCES}
50       ADDITIONAL_HEADERS ${LSAN_HEADERS}
51       OBJECT_LIBS RTLSanCommon
52                   RTInterception
53                   RTSanitizerCommon
54                   RTSanitizerCommonLibc
55                   RTSanitizerCommonCoverage
56                   RTSanitizerCommonSymbolizer
57       CFLAGS ${LSAN_CFLAGS}
58       LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
59       LINK_LIBS ${LSAN_LINK_LIBS}
60       PARENT_TARGET lsan)
61   else()
62     foreach(arch ${LSAN_SUPPORTED_ARCH})
63       add_compiler_rt_runtime(clang_rt.lsan
64         STATIC
65         ARCHS ${arch}
66         SOURCES ${LSAN_SOURCES}
67                 $<TARGET_OBJECTS:RTInterception.${arch}>
68                 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
69                 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
70                 $<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}>
71                 $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
72                 $<TARGET_OBJECTS:RTLSanCommon.${arch}>
73         ADDITIONAL_HEADERS ${LSAN_HEADERS}
74         CFLAGS ${LSAN_CFLAGS}
75         PARENT_TARGET lsan)
76     endforeach()
77   endif()
78 endif()