blob: 001ea0844d5c987a5205805af798cc026de652f8 [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
Evgeniy Stepanov4f32c0b2013-01-18 13:01:18 +000032 sanitizer_common_interceptors.inc
33 sanitizer_common_interceptors_scanf.inc
Alexey Samsonov032e8332012-12-21 14:04:52 +000034 sanitizer_flags.h
35 sanitizer_internal_defs.h
Dmitry Vyukovb48224c2013-01-14 08:23:34 +000036 sanitizer_lfstack.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000037 sanitizer_libc.h
38 sanitizer_list.h
39 sanitizer_mutex.h
40 sanitizer_placement_new.h
41 sanitizer_platform_interceptors.h
42 sanitizer_procmaps.h
Dmitry Vyukov9fc0df82013-01-11 08:07:43 +000043 sanitizer_quarantine.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000044 sanitizer_report_decorator.h
45 sanitizer_stackdepot.h
46 sanitizer_stacktrace.h
47 sanitizer_symbolizer.h
48 )
49
Alexey Samsonov0f7d4a42012-09-05 09:00:03 +000050set(SANITIZER_CFLAGS ${SANITIZER_COMMON_CFLAGS})
Chandler Carrutha765ffc2012-06-25 08:40:10 +000051
Alexey Samsonov0b562472012-08-13 07:41:43 +000052set(SANITIZER_RUNTIME_LIBRARIES)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000053if(APPLE)
54 # Build universal binary on APPLE.
55 add_library(RTSanitizerCommon.osx OBJECT ${SANITIZER_SOURCES})
56 set_target_compile_flags(RTSanitizerCommon.osx ${SANITIZER_CFLAGS})
57 filter_available_targets(SANITIZER_TARGETS x86_64 i386)
58 set_target_properties(RTSanitizerCommon.osx PROPERTIES
59 OSX_ARCHITECTURES "${SANITIZER_TARGETS}")
Alexey Samsonov0b562472012-08-13 07:41:43 +000060 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx)
Alexey Samsonov392c50d2013-01-18 16:05:21 +000061elseif(ANDROID)
62 add_library(RTSanitizerCommon.arm.android OBJECT ${SANITIZER_SOURCES})
63 set_target_compile_flags(RTSanitizerCommon.arm.android
64 ${SANITIZER_CFLAGS})
65 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000066else()
67 # Otherwise, build separate libraries for each target.
Alexey Samsonov2f3aef02013-01-18 12:45:44 +000068 if(CAN_TARGET_x86_64)
Alexey Samsonov392c50d2013-01-18 16:05:21 +000069 add_compiler_rt_object_library(RTSanitizerCommon x86_64
70 SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000071 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.x86_64)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000072 endif()
Alexey Samsonov2f3aef02013-01-18 12:45:44 +000073 if(CAN_TARGET_i386)
Alexey Samsonov392c50d2013-01-18 16:05:21 +000074 add_compiler_rt_object_library(RTSanitizerCommon i386
75 SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000076 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.i386)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000077 endif()
78endif()
Alexey Samsonov8fc90f62012-08-08 09:46:51 +000079
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000080# Unit tests for common sanitizer runtime.
81if(LLVM_INCLUDE_TESTS)
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000082 add_subdirectory(tests)
83endif()