CMakeLists.txt revision 74c88796a4024922144660ed1ade519af5008fe2
161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekinclude_directories(..)
261f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
361f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekset(LSAN_CFLAGS
461f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  ${SANITIZER_COMMON_CFLAGS}
561f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  -fno-rtti)
661f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
761f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekset(LSAN_COMMON_SOURCES
861f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan_common.cc
961f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan_common_linux.cc)
1061f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
1161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekset(LSAN_SOURCES
1261f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan.cc
1361f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan_allocator.cc
1461f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan_interceptors.cc
1561f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan_preinit.cc
1661f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  lsan_thread.cc)
1761f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
1861f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekset(LSAN_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR})
1961f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
2061f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek# The common files need to build on every arch supported by ASan.
2161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek# (Even if they build into dummy object files.)
2261f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekfilter_available_targets(LSAN_COMMON_SUPPORTED_ARCH
2361f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  x86_64 i386 powerpc64)
2461f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
2561f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek# Architectures supported by the standalone LSan.
2661f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekfilter_available_targets(LSAN_SUPPORTED_ARCH
2761f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  x86_64)
2861f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
2961f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekset(LSAN_RUNTIME_LIBRARIES)
3061f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
3161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekif(APPLE)
3261f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  foreach(os ${SANITIZER_COMMON_SUPPORTED_DARWIN_OS})
3361f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek    add_compiler_rt_darwin_object_library(RTLSanCommon ${os}
3461f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      ARCH ${LSAN_COMMON_SUPPORTED_ARCH}
3561f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      SOURCES ${LSAN_COMMON_SOURCES}
3661f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      CFLAGS ${LSAN_CFLAGS})
3761f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  endforeach()
3861f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekelseif(NOT ANDROID)
3961f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  foreach(arch ${LSAN_COMMON_SUPPORTED_ARCH})
4061f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek    add_compiler_rt_object_library(RTLSanCommon ${arch}
4161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      SOURCES ${LSAN_COMMON_SOURCES}
4261f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      CFLAGS ${LSAN_CFLAGS})
4361f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  endforeach()
4461f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
4561f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  foreach(arch ${LSAN_SUPPORTED_ARCH})
4661f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek    add_compiler_rt_static_runtime(clang_rt.lsan-${arch} ${arch}
4761f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      SOURCES ${LSAN_SOURCES}
4861f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek              $<TARGET_OBJECTS:RTInterception.${arch}>
4961f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek              $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
5061f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek              $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
5161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek              $<TARGET_OBJECTS:RTLSanCommon.${arch}>
5261f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek      CFLAGS ${LSAN_CFLAGS})
5361f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek    list(APPEND LSAN_RUNTIME_LIBRARIES clang_rt.lsan-${arch})
5461f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  endforeach()
5561f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekendif()
5661f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek
5761f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekif (LLVM_INCLUDE_TESTS)
5861f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek  add_subdirectory(tests)
5961f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekendif()
6061f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenekadd_subdirectory(lit_tests)
6161f3e058056ab519d249aa67e3d52b0ead57c63eTed Kremenek