blob: 6d4fc25d7ca43ee1c08ee37dce4d4f8eff128a41 [file] [log] [blame]
Chandler Carruth479d47f2012-06-20 10:18:43 +00001# Build system for the common Sanitizer runtime support library components.
2# These components are shared between AddressSanitizer and ThreadSanitizer.
3
4set(SANITIZER_SOURCES
5 sanitizer_allocator.cc
6 sanitizer_common.cc
Alexey Samsonov9b1b1012012-07-10 09:17:06 +00007 sanitizer_flags.cc
Chandler Carruth479d47f2012-06-20 10:18:43 +00008 sanitizer_libc.cc
9 sanitizer_linux.cc
10 sanitizer_mac.cc
11 sanitizer_posix.cc
12 sanitizer_printf.cc
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000013 sanitizer_stackdepot.cc
Kostya Serebryany1b5ea8f2012-08-28 14:11:57 +000014 sanitizer_stacktrace.cc
Chandler Carruth479d47f2012-06-20 10:18:43 +000015 sanitizer_symbolizer.cc
Richard Smithab637432012-12-20 05:00:13 +000016 sanitizer_symbolizer_itanium.cc
Alexey Samsonov6e893b62012-08-14 13:00:32 +000017 sanitizer_symbolizer_linux.cc
Alexey Samsonov6e893b62012-08-14 13:00:32 +000018 sanitizer_symbolizer_mac.cc
19 sanitizer_symbolizer_win.cc
Chandler Carruth479d47f2012-06-20 10:18:43 +000020 sanitizer_win.cc
21 )
22
Alexey Samsonov032e8332012-12-21 14:04:52 +000023# Explicitly list all sanitizer_common headers. Not all of these are
24# included in sanitizer_common source files, but we need to depend on
25# headers when building our custom unit tests.
26set(SANITIZER_HEADERS
27 sanitizer_allocator.h
28 sanitizer_atomic_clang.h
29 sanitizer_atomic_msvc.h
30 sanitizer_atomic.h
31 sanitizer_common.h
32 sanitizer_common_interceptors.h
33 sanitizer_flags.h
34 sanitizer_internal_defs.h
Dmitry Vyukovb48224c2013-01-14 08:23:34 +000035 sanitizer_lfstack.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000036 sanitizer_libc.h
37 sanitizer_list.h
38 sanitizer_mutex.h
39 sanitizer_placement_new.h
40 sanitizer_platform_interceptors.h
41 sanitizer_procmaps.h
Dmitry Vyukov9fc0df82013-01-11 08:07:43 +000042 sanitizer_quarantine.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000043 sanitizer_report_decorator.h
44 sanitizer_stackdepot.h
45 sanitizer_stacktrace.h
46 sanitizer_symbolizer.h
47 )
48
Alexey Samsonov0f7d4a42012-09-05 09:00:03 +000049set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
Chandler Carrutha765ffc2012-06-25 08:40:10 +000050
Alexey Samsonov0b562472012-08-13 07:41:43 +000051set(SANITIZER_RUNTIME_LIBRARIES)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000052if(APPLE)
53 # Build universal binary on APPLE.
54 add_library(RTSanitizerCommon.osx OBJECT ${SANITIZER_SOURCES})
55 set_target_compile_flags(RTSanitizerCommon.osx ${SANITIZER_CFLAGS})
56 filter_available_targets(SANITIZER_TARGETS x86_64 i386)
57 set_target_properties(RTSanitizerCommon.osx PROPERTIES
58 OSX_ARCHITECTURES "${SANITIZER_TARGETS}")
Alexey Samsonov0b562472012-08-13 07:41:43 +000059 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000060else()
61 # Otherwise, build separate libraries for each target.
62 if(CAN_TARGET_X86_64)
63 add_library(RTSanitizerCommon.x86_64 OBJECT ${SANITIZER_SOURCES})
64 set_target_compile_flags(RTSanitizerCommon.x86_64
65 ${SANITIZER_CFLAGS} ${TARGET_X86_64_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000066 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.x86_64)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000067 endif()
68 if(CAN_TARGET_I386)
69 add_library(RTSanitizerCommon.i386 OBJECT ${SANITIZER_SOURCES})
70 set_target_compile_flags(RTSanitizerCommon.i386
71 ${SANITIZER_CFLAGS} ${TARGET_I386_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000072 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.i386)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000073 endif()
Evgeniy Stepanov34fc56c2012-09-11 11:55:45 +000074 if(ANDROID)
Evgeniy Stepanovb1002772012-08-27 14:28:27 +000075 add_library(RTSanitizerCommon.arm.android OBJECT ${SANITIZER_SOURCES})
76 set_target_compile_flags(RTSanitizerCommon.arm.android
Evgeniy Stepanov34fc56c2012-09-11 11:55:45 +000077 ${SANITIZER_CFLAGS})
Evgeniy Stepanovb1002772012-08-27 14:28:27 +000078 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android)
79 endif()
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000080endif()
Alexey Samsonov8fc90f62012-08-08 09:46:51 +000081
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000082# Unit tests for common sanitizer runtime.
83if(LLVM_INCLUDE_TESTS)
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000084 add_subdirectory(tests)
85endif()