| include_directories(..) |
| |
| set(LSAN_CFLAGS |
| ${SANITIZER_COMMON_CFLAGS}) |
| |
| set(LSAN_COMMON_SOURCES |
| lsan_common.cc |
| lsan_common_linux.cc) |
| |
| set(LSAN_SOURCES |
| lsan_interceptors.cc |
| lsan_allocator.cc |
| lsan_thread.cc |
| lsan.cc) |
| |
| set(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}) |
| |
| # The common files need to build on every arch supported by ASan. |
| # (Even if they build into dummy object files.) |
| filter_available_targets(LSAN_COMMON_SUPPORTED_ARCH |
| x86_64 i386 powerpc64) |
| |
| # Architectures supported by the standalone LSan. |
| filter_available_targets(LSAN_SUPPORTED_ARCH |
| x86_64) |
| |
| set(LSAN_RUNTIME_LIBRARIES) |
| |
| if(APPLE) |
| add_compiler_rt_osx_object_library(RTLSanCommon |
| ARCH ${LSAN_COMMON_SUPPORTED_ARCH} |
| SOURCES ${LSAN_COMMON_SOURCES} |
| CFLAGS ${LSAN_CFLAGS}) |
| elseif(NOT ANDROID) |
| foreach(arch ${LSAN_COMMON_SUPPORTED_ARCH}) |
| add_compiler_rt_object_library(RTLSanCommon ${arch} |
| SOURCES ${LSAN_COMMON_SOURCES} |
| CFLAGS ${LSAN_CFLAGS}) |
| endforeach() |
| |
| foreach(arch ${LSAN_SUPPORTED_ARCH}) |
| add_compiler_rt_static_runtime(clang_rt.lsan-${arch} ${arch} |
| SOURCES ${LSAN_SOURCES} |
| $<TARGET_OBJECTS:RTInterception.${arch}> |
| $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> |
| $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> |
| $<TARGET_OBJECTS:RTLSanCommon.${arch}> |
| CFLAGS ${LSAN_CFLAGS}) |
| list(APPEND LSAN_RUNTIME_LIBRARIES clang_rt.lsan-${arch}) |
| endforeach() |
| endif() |
| |
| if (LLVM_INCLUDE_TESTS) |
| add_subdirectory(tests) |
| endif() |
| add_subdirectory(lit_tests) |