blob: 8141ae68497e3acc8800b3ea0c365e5bccd33804 [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
Evgeniy Stepanov9358c582013-02-19 09:19:16 +000011 sanitizer_platform_limits_posix.cc
Chandler Carruth479d47f2012-06-20 10:18:43 +000012 sanitizer_posix.cc
13 sanitizer_printf.cc
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000014 sanitizer_stackdepot.cc
Kostya Serebryany1b5ea8f2012-08-28 14:11:57 +000015 sanitizer_stacktrace.cc
Sergey Matveeva52e5c62013-06-26 15:37:14 +000016 sanitizer_suppressions.cc
Richard Smithab637432012-12-20 05:00:13 +000017 sanitizer_symbolizer_itanium.cc
Peter Collingbourne51c963a2013-05-29 12:11:43 +000018 sanitizer_symbolizer_linux.cc
Alexey Samsonov6e893b62012-08-14 13:00:32 +000019 sanitizer_symbolizer_mac.cc
20 sanitizer_symbolizer_win.cc
Alexey Samsonov6d429cd2013-03-14 13:54:30 +000021 sanitizer_thread_registry.cc
Alexey Samsonovd64bcf42013-06-11 08:13:36 +000022 sanitizer_win.cc)
Chandler Carruth479d47f2012-06-20 10:18:43 +000023
Peter Collingbourne0c547de2013-05-17 16:17:19 +000024set(SANITIZER_LIBCDEP_SOURCES
25 sanitizer_common_libcdep.cc
Peter Collingbourne088ea2b2013-05-20 15:57:44 +000026 sanitizer_linux_libcdep.cc
Peter Collingbourne04a22812013-05-21 10:27:07 +000027 sanitizer_posix_libcdep.cc
Peter Collingbourne705e3102013-05-21 11:38:39 +000028 sanitizer_stoptheworld_linux_libcdep.cc
Peter Collingbourne8b3af3a2013-05-21 12:08:37 +000029 sanitizer_symbolizer_libcdep.cc
30 sanitizer_symbolizer_linux_libcdep.cc
Alexey Samsonovd64bcf42013-06-11 08:13:36 +000031 sanitizer_symbolizer_posix_libcdep.cc)
Peter Collingbourne0c547de2013-05-17 16:17:19 +000032
Alexey Samsonov032e8332012-12-21 14:04:52 +000033# Explicitly list all sanitizer_common headers. Not all of these are
34# included in sanitizer_common source files, but we need to depend on
35# headers when building our custom unit tests.
36set(SANITIZER_HEADERS
37 sanitizer_allocator.h
Alexey Samsonov1f3c2fe2013-05-29 09:15:39 +000038 sanitizer_allocator_internal.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000039 sanitizer_atomic_clang.h
40 sanitizer_atomic_msvc.h
41 sanitizer_atomic.h
42 sanitizer_common.h
Evgeniy Stepanov4f32c0b2013-01-18 13:01:18 +000043 sanitizer_common_interceptors.inc
Evgeniy Stepanov4612aba2013-06-20 09:19:28 +000044 sanitizer_common_interceptors_ioctl.inc
Evgeniy Stepanov4f32c0b2013-01-18 13:01:18 +000045 sanitizer_common_interceptors_scanf.inc
Evgeniy Stepanov2887a642013-04-11 14:37:04 +000046 sanitizer_common_syscalls.inc
Alexey Samsonov032e8332012-12-21 14:04:52 +000047 sanitizer_flags.h
48 sanitizer_internal_defs.h
Dmitry Vyukovb48224c2013-01-14 08:23:34 +000049 sanitizer_lfstack.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000050 sanitizer_libc.h
Kostya Serebryany6fb47af2013-02-27 11:22:40 +000051 sanitizer_linux.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000052 sanitizer_list.h
53 sanitizer_mutex.h
54 sanitizer_placement_new.h
55 sanitizer_platform_interceptors.h
56 sanitizer_procmaps.h
Dmitry Vyukov9fc0df82013-01-11 08:07:43 +000057 sanitizer_quarantine.h
Alexey Samsonov032e8332012-12-21 14:04:52 +000058 sanitizer_report_decorator.h
59 sanitizer_stackdepot.h
60 sanitizer_stacktrace.h
61 sanitizer_symbolizer.h
Alexey Samsonovd64bcf42013-06-11 08:13:36 +000062 sanitizer_thread_registry.h)
Alexey Samsonov032e8332012-12-21 14:04:52 +000063
Alexey Samsonov2be1e7f2013-03-14 13:16:35 +000064set(SANITIZER_CFLAGS
65 ${SANITIZER_COMMON_CFLAGS}
66 -fno-rtti)
Chandler Carrutha765ffc2012-06-25 08:40:10 +000067
Alexey Samsonov0b562472012-08-13 07:41:43 +000068set(SANITIZER_RUNTIME_LIBRARIES)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000069if(APPLE)
70 # Build universal binary on APPLE.
Alexey Samsonov51623142013-01-20 14:36:12 +000071 add_compiler_rt_osx_object_library(RTSanitizerCommon
72 ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH}
Peter Collingbourne0c547de2013-05-17 16:17:19 +000073 SOURCES ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES}
Alexey Samsonov51623142013-01-20 14:36:12 +000074 CFLAGS ${SANITIZER_CFLAGS})
Alexey Samsonov0b562472012-08-13 07:41:43 +000075 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx)
Alexey Samsonov392c50d2013-01-18 16:05:21 +000076elseif(ANDROID)
Peter Collingbourne0c547de2013-05-17 16:17:19 +000077 add_library(RTSanitizerCommon.arm.android OBJECT
78 ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES})
Alexey Samsonov392c50d2013-01-18 16:05:21 +000079 set_target_compile_flags(RTSanitizerCommon.arm.android
80 ${SANITIZER_CFLAGS})
81 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android)
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000082else()
83 # Otherwise, build separate libraries for each target.
Alexey Samsonov43b4b9c2013-01-18 16:51:07 +000084 foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH})
85 add_compiler_rt_object_library(RTSanitizerCommon ${arch}
Alexey Samsonov392c50d2013-01-18 16:05:21 +000086 SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS})
Peter Collingbourne0c547de2013-05-17 16:17:19 +000087 add_compiler_rt_object_library(RTSanitizerCommonLibc ${arch}
88 SOURCES ${SANITIZER_LIBCDEP_SOURCES} CFLAGS ${SANITIZER_CFLAGS})
Richard Smith3e587a42013-03-20 23:49:17 +000089 add_compiler_rt_static_runtime(clang_rt.san-${arch} ${arch}
Richard Smithb877cb52013-05-19 19:53:01 +000090 SOURCES $<TARGET_OBJECTS:RTSanitizerCommon.${arch}>
91 $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}>
92 CFLAGS ${SANITIZER_CFLAGS})
Alexey Samsonov43b4b9c2013-01-18 16:51:07 +000093 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.${arch})
94 endforeach()
Alexey Samsonovfe51abb2012-08-10 14:45:52 +000095endif()
Alexey Samsonov8fc90f62012-08-08 09:46:51 +000096
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000097# Unit tests for common sanitizer runtime.
98if(LLVM_INCLUDE_TESTS)
Alexey Samsonov3f3ca962012-09-11 10:50:32 +000099 add_subdirectory(tests)
100endif()