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