xref: /llvm-project/compiler-rt/lib/lsan/CMakeLists.txt (revision d38a8e937b51f52ab4c324b99d984d3031833b63)
1include_directories(..)
2
3set(LSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS})
4append_rtti_flag(OFF LSAN_CFLAGS)
5
6# Too many existing bugs, needs cleanup.
7append_list_if(COMPILER_RT_HAS_WNO_FORMAT -Wno-format LSAN_CFLAGS)
8
9set(LSAN_COMMON_SOURCES
10  lsan_common.cpp
11  lsan_common_fuchsia.cpp
12  lsan_common_linux.cpp
13  lsan_common_mac.cpp
14  )
15
16set(LSAN_SOURCES
17  lsan.cpp
18  lsan_allocator.cpp
19  lsan_fuchsia.cpp
20  lsan_interceptors.cpp
21  lsan_linux.cpp
22  lsan_mac.cpp
23  lsan_malloc_mac.cpp
24  lsan_posix.cpp
25  lsan_preinit.cpp
26  lsan_thread.cpp
27  )
28
29set(LSAN_HEADERS
30  lsan.h
31  lsan_allocator.h
32  lsan_common.h
33  lsan_flags.inc
34  lsan_thread.h
35  )
36
37set(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
38
39# Used by asan/hwasan even without COMPILER_RT_HAS_LSAN.
40add_compiler_rt_object_libraries(RTLSanCommon
41    OS ${SANITIZER_COMMON_SUPPORTED_OS}
42    ARCHS ${LSAN_COMMON_SUPPORTED_ARCH}
43    SOURCES ${LSAN_COMMON_SOURCES}
44    ADDITIONAL_HEADERS ${LSAN_HEADERS}
45    CFLAGS ${LSAN_CFLAGS})
46
47if(COMPILER_RT_HAS_LSAN)
48  add_compiler_rt_component(lsan)
49  if(APPLE)
50    set(LSAN_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS})
51
52    add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS)
53    add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
54
55    add_compiler_rt_runtime(clang_rt.lsan
56      SHARED
57      OS ${LSAN_SUPPORTED_OS}
58      ARCHS ${LSAN_SUPPORTED_ARCH}
59      SOURCES ${LSAN_SOURCES}
60      ADDITIONAL_HEADERS ${LSAN_HEADERS}
61      OBJECT_LIBS RTLSanCommon
62                  RTInterception
63                  RTSanitizerCommon
64                  RTSanitizerCommonLibc
65                  RTSanitizerCommonCoverage
66                  RTSanitizerCommonSymbolizer
67      CFLAGS ${LSAN_CFLAGS}
68      LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}
69      LINK_LIBS ${LSAN_LINK_LIBS}
70      PARENT_TARGET lsan)
71  else()
72    foreach(arch ${LSAN_SUPPORTED_ARCH})
73      add_compiler_rt_runtime(clang_rt.lsan
74        STATIC
75        ARCHS ${arch}
76        SOURCES ${LSAN_SOURCES}
77                $<TARGET_OBJECTS:RTInterception.${arch}>
78                $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
79                $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
80                $<TARGET_OBJECTS:RTSanitizerCommonCoverage.${arch}>
81                $<TARGET_OBJECTS:RTSanitizerCommonSymbolizer.${arch}>
82                $<TARGET_OBJECTS:RTSanitizerCommonSymbolizerInternal.${arch}>
83                $<TARGET_OBJECTS:RTLSanCommon.${arch}>
84        ADDITIONAL_HEADERS ${LSAN_HEADERS}
85        CFLAGS ${LSAN_CFLAGS}
86        PARENT_TARGET lsan)
87    endforeach()
88  endif()
89endif()
90