Chandler Carruth | 479d47f | 2012-06-20 10:18:43 +0000 | [diff] [blame] | 1 | # Build system for the common Sanitizer runtime support library components. |
| 2 | # These components are shared between AddressSanitizer and ThreadSanitizer. |
| 3 | |
| 4 | set(SANITIZER_SOURCES |
| 5 | sanitizer_allocator.cc |
| 6 | sanitizer_common.cc |
Alexey Samsonov | 9b1b101 | 2012-07-10 09:17:06 +0000 | [diff] [blame] | 7 | sanitizer_flags.cc |
Chandler Carruth | 479d47f | 2012-06-20 10:18:43 +0000 | [diff] [blame] | 8 | sanitizer_libc.cc |
| 9 | sanitizer_linux.cc |
| 10 | sanitizer_mac.cc |
| 11 | sanitizer_posix.cc |
| 12 | sanitizer_printf.cc |
| 13 | sanitizer_symbolizer.cc |
Alexey Samsonov | 6e893b6 | 2012-08-14 13:00:32 +0000 | [diff] [blame] | 14 | sanitizer_symbolizer_linux.cc |
Alexey Samsonov | 6e893b6 | 2012-08-14 13:00:32 +0000 | [diff] [blame] | 15 | sanitizer_symbolizer_mac.cc |
| 16 | sanitizer_symbolizer_win.cc |
Chandler Carruth | 479d47f | 2012-06-20 10:18:43 +0000 | [diff] [blame] | 17 | sanitizer_win.cc |
| 18 | ) |
| 19 | |
Alexey Samsonov | 8fc90f6 | 2012-08-08 09:46:51 +0000 | [diff] [blame] | 20 | set(SANITIZER_CFLAGS |
| 21 | -O3 |
| 22 | -fPIC |
| 23 | -fno-exceptions |
| 24 | -funwind-tables |
| 25 | -fvisibility=hidden |
Alexey Samsonov | 41df565 | 2012-07-31 11:51:26 +0000 | [diff] [blame] | 26 | ) |
Chandler Carruth | a765ffc | 2012-06-25 08:40:10 +0000 | [diff] [blame] | 27 | |
Alexey Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 28 | set(SANITIZER_COMMON_DEFINITIONS) |
| 29 | |
| 30 | set(SANITIZER_RUNTIME_LIBRARIES) |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 31 | if(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 Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 38 | list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx) |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 39 | else() |
| 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 Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 45 | list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.x86_64) |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 46 | 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 Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 51 | list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.i386) |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 52 | endif() |
Evgeniy Stepanov | b100277 | 2012-08-27 14:28:27 +0000 | [diff] [blame^] | 53 | 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 Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 59 | endif() |
Alexey Samsonov | 8fc90f6 | 2012-08-08 09:46:51 +0000 | [diff] [blame] | 60 | |
Alexey Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 61 | set_property(TARGET ${SANITIZER_RUNTIME_LIBRARIES} APPEND PROPERTY |
| 62 | COMPILE_DEFINITIONS ${SANITIZER_COMMON_DEFINITIONS}) |
| 63 | |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 64 | # FIXME: Add support for running sanitizer_common unit tests. |