blob: 5ac8e3b874004b096d9e5a474ba618ded02d0cba [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()
53endif()
Alexey Samsonov8fc90f62012-08-08 09:46:51 +000054
Alexey Samsonov0b562472012-08-13 07:41:43 +000055set_property(TARGET ${SANITIZER_RUNTIME_LIBRARIES} APPEND PROPERTY
56 COMPILE_DEFINITIONS ${SANITIZER_COMMON_DEFINITIONS})
57
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000058# FIXME: Add support for running sanitizer_common unit tests.