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 |
Dmitry Vyukov | 4af0f21 | 2013-10-03 13:37:17 +0000 | [diff] [blame^] | 9 | sanitizer_libignore.cc |
Chandler Carruth | 479d47f | 2012-06-20 10:18:43 +0000 | [diff] [blame] | 10 | sanitizer_linux.cc |
| 11 | sanitizer_mac.cc |
Evgeniy Stepanov | 639df40 | 2013-09-06 14:20:01 +0000 | [diff] [blame] | 12 | sanitizer_platform_limits_linux.cc |
Evgeniy Stepanov | 9358c58 | 2013-02-19 09:19:16 +0000 | [diff] [blame] | 13 | sanitizer_platform_limits_posix.cc |
Chandler Carruth | 479d47f | 2012-06-20 10:18:43 +0000 | [diff] [blame] | 14 | sanitizer_posix.cc |
| 15 | sanitizer_printf.cc |
Alexey Samsonov | 3f3ca96 | 2012-09-11 10:50:32 +0000 | [diff] [blame] | 16 | sanitizer_stackdepot.cc |
Kostya Serebryany | 1b5ea8f | 2012-08-28 14:11:57 +0000 | [diff] [blame] | 17 | sanitizer_stacktrace.cc |
Sergey Matveev | a52e5c6 | 2013-06-26 15:37:14 +0000 | [diff] [blame] | 18 | sanitizer_suppressions.cc |
Alexey Samsonov | 6e893b6 | 2012-08-14 13:00:32 +0000 | [diff] [blame] | 19 | sanitizer_symbolizer_win.cc |
Alexey Samsonov | 6d429cd | 2013-03-14 13:54:30 +0000 | [diff] [blame] | 20 | sanitizer_thread_registry.cc |
Alexey Samsonov | d64bcf4 | 2013-06-11 08:13:36 +0000 | [diff] [blame] | 21 | sanitizer_win.cc) |
Chandler Carruth | 479d47f | 2012-06-20 10:18:43 +0000 | [diff] [blame] | 22 | |
Peter Collingbourne | 0c547de | 2013-05-17 16:17:19 +0000 | [diff] [blame] | 23 | set(SANITIZER_LIBCDEP_SOURCES |
| 24 | sanitizer_common_libcdep.cc |
Peter Collingbourne | 088ea2b | 2013-05-20 15:57:44 +0000 | [diff] [blame] | 25 | sanitizer_linux_libcdep.cc |
Peter Collingbourne | 04a2281 | 2013-05-21 10:27:07 +0000 | [diff] [blame] | 26 | sanitizer_posix_libcdep.cc |
Peter Collingbourne | 705e310 | 2013-05-21 11:38:39 +0000 | [diff] [blame] | 27 | sanitizer_stoptheworld_linux_libcdep.cc |
Alexey Samsonov | d64bcf4 | 2013-06-11 08:13:36 +0000 | [diff] [blame] | 28 | sanitizer_symbolizer_posix_libcdep.cc) |
Peter Collingbourne | 0c547de | 2013-05-17 16:17:19 +0000 | [diff] [blame] | 29 | |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 30 | # Explicitly list all sanitizer_common headers. Not all of these are |
| 31 | # included in sanitizer_common source files, but we need to depend on |
| 32 | # headers when building our custom unit tests. |
| 33 | set(SANITIZER_HEADERS |
| 34 | sanitizer_allocator.h |
Alexey Samsonov | 1f3c2fe | 2013-05-29 09:15:39 +0000 | [diff] [blame] | 35 | sanitizer_allocator_internal.h |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 36 | sanitizer_atomic_clang.h |
| 37 | sanitizer_atomic_msvc.h |
| 38 | sanitizer_atomic.h |
| 39 | sanitizer_common.h |
Evgeniy Stepanov | 4f32c0b | 2013-01-18 13:01:18 +0000 | [diff] [blame] | 40 | sanitizer_common_interceptors.inc |
Evgeniy Stepanov | 4612aba | 2013-06-20 09:19:28 +0000 | [diff] [blame] | 41 | sanitizer_common_interceptors_ioctl.inc |
Evgeniy Stepanov | 4f32c0b | 2013-01-18 13:01:18 +0000 | [diff] [blame] | 42 | sanitizer_common_interceptors_scanf.inc |
Evgeniy Stepanov | 2887a64 | 2013-04-11 14:37:04 +0000 | [diff] [blame] | 43 | sanitizer_common_syscalls.inc |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 44 | sanitizer_flags.h |
| 45 | sanitizer_internal_defs.h |
Dmitry Vyukov | b48224c | 2013-01-14 08:23:34 +0000 | [diff] [blame] | 46 | sanitizer_lfstack.h |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 47 | sanitizer_libc.h |
Dmitry Vyukov | 4af0f21 | 2013-10-03 13:37:17 +0000 | [diff] [blame^] | 48 | sanitizer_libignore.h |
Kostya Serebryany | 6fb47af | 2013-02-27 11:22:40 +0000 | [diff] [blame] | 49 | sanitizer_linux.h |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 50 | sanitizer_list.h |
| 51 | sanitizer_mutex.h |
| 52 | sanitizer_placement_new.h |
| 53 | sanitizer_platform_interceptors.h |
| 54 | sanitizer_procmaps.h |
Dmitry Vyukov | 9fc0df8 | 2013-01-11 08:07:43 +0000 | [diff] [blame] | 55 | sanitizer_quarantine.h |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 56 | sanitizer_report_decorator.h |
| 57 | sanitizer_stackdepot.h |
| 58 | sanitizer_stacktrace.h |
| 59 | sanitizer_symbolizer.h |
Alexey Samsonov | d64bcf4 | 2013-06-11 08:13:36 +0000 | [diff] [blame] | 60 | sanitizer_thread_registry.h) |
Alexey Samsonov | 032e833 | 2012-12-21 14:04:52 +0000 | [diff] [blame] | 61 | |
Hans Wennborg | c1f1af7 | 2013-08-27 01:24:01 +0000 | [diff] [blame] | 62 | if (NOT MSVC) |
| 63 | set(SANITIZER_CFLAGS |
| 64 | ${SANITIZER_COMMON_CFLAGS} |
| 65 | -fno-rtti) |
| 66 | else() |
| 67 | set(SANITIZER_CFLAGS |
| 68 | ${SANITIZER_COMMON_CFLAGS} |
| 69 | /GR-) |
| 70 | endif() |
Chandler Carruth | a765ffc | 2012-06-25 08:40:10 +0000 | [diff] [blame] | 71 | |
Alexey Samsonov | 7a3d5fe | 2013-09-11 09:57:15 +0000 | [diff] [blame] | 72 | if(SUPPORTS_GLOBAL_CONSTRUCTORS_FLAG) |
| 73 | list(APPEND SANITIZER_CFLAGS -Wglobal-constructors) |
| 74 | endif() |
| 75 | |
Alexey Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 76 | set(SANITIZER_RUNTIME_LIBRARIES) |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 77 | if(APPLE) |
| 78 | # Build universal binary on APPLE. |
Alexey Samsonov | 5162314 | 2013-01-20 14:36:12 +0000 | [diff] [blame] | 79 | add_compiler_rt_osx_object_library(RTSanitizerCommon |
| 80 | ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH} |
Peter Collingbourne | 0c547de | 2013-05-17 16:17:19 +0000 | [diff] [blame] | 81 | SOURCES ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES} |
Alexey Samsonov | 5162314 | 2013-01-20 14:36:12 +0000 | [diff] [blame] | 82 | CFLAGS ${SANITIZER_CFLAGS}) |
Alexey Samsonov | 0b56247 | 2012-08-13 07:41:43 +0000 | [diff] [blame] | 83 | list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx) |
Alexey Samsonov | 392c50d | 2013-01-18 16:05:21 +0000 | [diff] [blame] | 84 | elseif(ANDROID) |
Peter Collingbourne | 0c547de | 2013-05-17 16:17:19 +0000 | [diff] [blame] | 85 | add_library(RTSanitizerCommon.arm.android OBJECT |
| 86 | ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES}) |
Alexey Samsonov | 392c50d | 2013-01-18 16:05:21 +0000 | [diff] [blame] | 87 | set_target_compile_flags(RTSanitizerCommon.arm.android |
| 88 | ${SANITIZER_CFLAGS}) |
| 89 | list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android) |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 90 | else() |
| 91 | # Otherwise, build separate libraries for each target. |
Alexey Samsonov | 43b4b9c | 2013-01-18 16:51:07 +0000 | [diff] [blame] | 92 | foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH}) |
| 93 | add_compiler_rt_object_library(RTSanitizerCommon ${arch} |
Alexey Samsonov | 392c50d | 2013-01-18 16:05:21 +0000 | [diff] [blame] | 94 | SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) |
Peter Collingbourne | 0c547de | 2013-05-17 16:17:19 +0000 | [diff] [blame] | 95 | add_compiler_rt_object_library(RTSanitizerCommonLibc ${arch} |
| 96 | SOURCES ${SANITIZER_LIBCDEP_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) |
Richard Smith | 3e587a4 | 2013-03-20 23:49:17 +0000 | [diff] [blame] | 97 | add_compiler_rt_static_runtime(clang_rt.san-${arch} ${arch} |
Richard Smith | b877cb5 | 2013-05-19 19:53:01 +0000 | [diff] [blame] | 98 | SOURCES $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> |
| 99 | $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> |
| 100 | CFLAGS ${SANITIZER_CFLAGS}) |
Alexey Samsonov | 7bb2f9b | 2013-09-16 15:43:23 +0000 | [diff] [blame] | 101 | list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.${arch} |
| 102 | RTSanitizerCommonLibc.${arch}) |
Alexey Samsonov | 43b4b9c | 2013-01-18 16:51:07 +0000 | [diff] [blame] | 103 | endforeach() |
Alexey Samsonov | fe51abb | 2012-08-10 14:45:52 +0000 | [diff] [blame] | 104 | endif() |
Alexey Samsonov | 8fc90f6 | 2012-08-08 09:46:51 +0000 | [diff] [blame] | 105 | |
Alexey Samsonov | 3f3ca96 | 2012-09-11 10:50:32 +0000 | [diff] [blame] | 106 | # Unit tests for common sanitizer runtime. |
| 107 | if(LLVM_INCLUDE_TESTS) |
Alexey Samsonov | 3f3ca96 | 2012-09-11 10:50:32 +0000 | [diff] [blame] | 108 | add_subdirectory(tests) |
| 109 | endif() |