blob: b3e88ea292d8c5aea533790fd4db0260f383dc51 [file] [log] [blame]
Evgeniy Stepanov0231c502012-12-25 12:39:56 +00001include_directories(..)
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +00002
Evgeniy Stepanov0231c502012-12-25 12:39:56 +00003# Runtime library sources and build flags.
4set(MSAN_RTL_SOURCES
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +00005 msan.cc
6 msan_allocator.cc
7 msan_interceptors.cc
8 msan_linux.cc
9 msan_new_delete.cc
Evgeniy Stepanovdb010da2012-12-26 09:32:05 +000010 msan_report.cc
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000011 )
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000012set(MSAN_RTL_CFLAGS
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000013 ${SANITIZER_COMMON_CFLAGS}
Alexey Samsonova7e5db92013-03-13 09:18:30 +000014 -fno-rtti
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000015 -fPIE
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000016 # Prevent clang from generating libc calls.
17 -ffreestanding)
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000018
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000019# Static runtime library.
Evgeniy Stepanov78c56c32012-12-11 12:27:27 +000020set(MSAN_RUNTIME_LIBRARIES)
Alexey Samsonov7eca1522013-01-20 14:14:13 +000021set(arch "x86_64")
22if(CAN_TARGET_${arch})
23 add_compiler_rt_static_runtime(clang_rt.msan-${arch} ${arch}
24 SOURCES ${MSAN_RTL_SOURCES}
25 $<TARGET_OBJECTS:RTInterception.${arch}>
26 $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
Peter Collingbourne0c547de2013-05-17 16:17:19 +000027 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
Richard Smitha06fe912013-03-23 00:31:07 +000028 CFLAGS ${MSAN_RTL_CFLAGS}
29 SYMS msan.syms)
Alexey Samsonov7eca1522013-01-20 14:14:13 +000030 list(APPEND MSAN_RUNTIME_LIBRARIES clang_rt.msan-${arch})
31endif()
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000032
Alexey Samsonov4d1b3832013-05-21 13:55:56 +000033add_compiler_rt_resource_file(msan_blacklist msan_blacklist.txt)
34
Alexey Samsonov7575e0a2013-06-10 09:09:40 +000035# We should only build MSan unit tests if we can build instrumented libcxx.
36set(MSAN_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/projects/libcxx)
37if(EXISTS ${MSAN_LIBCXX_PATH}/)
38 set(MSAN_CAN_INSTRUMENT_LIBCXX TRUE)
39else()
40 set(MSAN_CAN_INSTRUMENT_LIBCXX FALSE)
41endif()
42
Evgeniy Stepanov0231c502012-12-25 12:39:56 +000043if(LLVM_INCLUDE_TESTS)
44 add_subdirectory(tests)
45endif()
Evgeniy Stepanov9af86762013-02-11 11:34:26 +000046
47add_subdirectory(lit_tests)