blob: d8ea7c8a74e1e85827ae21c8041707592fd76eec [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
13 sanitizer_symbolizer.cc
Alexey Samsonov6e893b62012-08-14 13:00:32 +000014 sanitizer_symbolizer_linux.cc
Alexey Samsonov6e893b62012-08-14 13:00:32 +000015 sanitizer_symbolizer_mac.cc
16 sanitizer_symbolizer_win.cc
Chandler Carruth479d47f2012-06-20 10:18:43 +000017 sanitizer_win.cc
18 )
19
Alexey Samsonov8fc90f62012-08-08 09:46:51 +000020set(SANITIZER_CFLAGS
21 -O3
22 -fPIC
23 -fno-exceptions
24 -funwind-tables
25 -fvisibility=hidden
Alexey Samsonov41df5652012-07-31 11:51:26 +000026 )
Chandler Carrutha765ffc2012-06-25 08:40:10 +000027
Alexey Samsonov0b562472012-08-13 07:41:43 +000028set(SANITIZER_COMMON_DEFINITIONS)
29
30set(SANITIZER_RUNTIME_LIBRARIES)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000031if(APPLE)
32 # Build universal binary on APPLE.
33 add_library(RTSanitizerCommon.osx OBJECT ${SANITIZER_SOURCES})
34 set_target_compile_flags(RTSanitizerCommon.osx ${SANITIZER_CFLAGS})
35 filter_available_targets(SANITIZER_TARGETS x86_64 i386)
36 set_target_properties(RTSanitizerCommon.osx PROPERTIES
37 OSX_ARCHITECTURES "${SANITIZER_TARGETS}")
Alexey Samsonov0b562472012-08-13 07:41:43 +000038 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000039else()
40 # Otherwise, build separate libraries for each target.
41 if(CAN_TARGET_X86_64)
42 add_library(RTSanitizerCommon.x86_64 OBJECT ${SANITIZER_SOURCES})
43 set_target_compile_flags(RTSanitizerCommon.x86_64
44 ${SANITIZER_CFLAGS} ${TARGET_X86_64_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000045 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.x86_64)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000046 endif()
47 if(CAN_TARGET_I386)
48 add_library(RTSanitizerCommon.i386 OBJECT ${SANITIZER_SOURCES})
49 set_target_compile_flags(RTSanitizerCommon.i386
50 ${SANITIZER_CFLAGS} ${TARGET_I386_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000051 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.i386)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000052 endif()
Evgeniy Stepanovb1002772012-08-27 14:28:27 +000053 if(CAN_TARGET_ARM_ANDROID)
54 add_library(RTSanitizerCommon.arm.android OBJECT ${SANITIZER_SOURCES})
55 set_target_compile_flags(RTSanitizerCommon.arm.android
56 ${SANITIZER_CFLAGS} ${TARGET_ARM_ANDROID_CFLAGS})
57 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android)
58 endif()
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000059endif()
Alexey Samsonov8fc90f62012-08-08 09:46:51 +000060
Alexey Samsonov0b562472012-08-13 07:41:43 +000061set_property(TARGET ${SANITIZER_RUNTIME_LIBRARIES} APPEND PROPERTY
62 COMPILE_DEFINITIONS ${SANITIZER_COMMON_DEFINITIONS})
63
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000064# FIXME: Add support for running sanitizer_common unit tests.