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)
