include_directories(..) set(LSAN_CFLAGS ${SANITIZER_COMMON_CFLAGS}) append_rtti_flag(OFF LSAN_CFLAGS) set(LSAN_COMMON_SOURCES lsan_common.cc lsan_common_linux.cc lsan_common_mac.cc) set(LSAN_SOURCES lsan.cc lsan_allocator.cc lsan_linux.cc lsan_interceptors.cc lsan_mac.cc lsan_malloc_mac.cc lsan_preinit.cc lsan_thread.cc) set(LSAN_HEADERS lsan.h lsan_allocator.h lsan_common.h lsan_flags.inc lsan_thread.h) set(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}) add_compiler_rt_object_libraries(RTLSanCommon OS ${SANITIZER_COMMON_SUPPORTED_OS} ARCHS ${LSAN_COMMON_SUPPORTED_ARCH} SOURCES ${LSAN_COMMON_SOURCES} ADDITIONAL_HEADERS ${LSAN_HEADERS} CFLAGS ${LSAN_CFLAGS}) if(COMPILER_RT_HAS_LSAN) add_compiler_rt_component(lsan) if(APPLE) set(LSAN_LINK_LIBS ${SANITIZER_COMMON_LINK_LIBS}) add_weak_symbols("lsan" WEAK_SYMBOL_LINK_FLAGS) add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS) add_compiler_rt_runtime(clang_rt.lsan SHARED OS ${SANITIZER_COMMON_SUPPORTED_OS} ARCHS ${LSAN_SUPPORTED_ARCH} SOURCES ${LSAN_SOURCES} ADDITIONAL_HEADERS ${LSAN_HEADERS} OBJECT_LIBS RTLSanCommon RTInterception RTSanitizerCommon RTSanitizerCommonLibc RTSanitizerCommonCoverage RTSanitizerCommonSymbolizer CFLAGS ${LSAN_CFLAGS} LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS} LINK_LIBS ${LSAN_LINK_LIBS} PARENT_TARGET lsan) else() foreach(arch ${LSAN_SUPPORTED_ARCH}) add_compiler_rt_runtime(clang_rt.lsan STATIC ARCHS ${arch} SOURCES ${LSAN_SOURCES} $ $ $ $ $ $ ADDITIONAL_HEADERS ${LSAN_HEADERS} CFLAGS ${LSAN_CFLAGS} PARENT_TARGET lsan) endforeach() endif() endif()