CMakeLists.txt revision 38a61aa7d3fc1deeb612e02863f0fbb417cda612
1d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis# Build system for the common Sanitizer runtime support library components. 264924859b6b09d1cfb62fecf5954ec6c27cb58feTed Kremenek# These components are shared between AddressSanitizer and ThreadSanitizer. 34af84313df0d2710fd57af89132e680294225cadTed Kremenek 4d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenekset(SANITIZER_SOURCES 5d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_allocator.cc 6d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_common.cc 7d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_flags.cc 8d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_libc.cc 9d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_linux.cc 1077349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek sanitizer_mac.cc 1177349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek sanitizer_platform_limits_posix.cc 1277349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek sanitizer_posix.cc 13d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_printf.cc 14d27f8169f4b68337a489547a41ac45bf7a5d1ddfTed Kremenek sanitizer_stackdepot.cc 15a7af5ea88a6c5bdf87497cca6c20831e8c546751Argyrios Kyrtzidis sanitizer_stacktrace.cc 16c2994283aa7538b7420c8e398cde7afa328d7042Anna Zaks sanitizer_suppressions.cc 17c2994283aa7538b7420c8e398cde7afa328d7042Anna Zaks sanitizer_symbolizer_itanium.cc 1843dee220252ef0b42c5f8a3bb1eca97f84f2565fArgyrios Kyrtzidis sanitizer_symbolizer_linux.cc 199b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek sanitizer_symbolizer_mac.cc 209b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek sanitizer_symbolizer_win.cc 21f540c54701e3eeb34cb619a3a4eb18f1ac70ef2dJordan Rose sanitizer_thread_registry.cc 229b663716449b618ba0390b1dbebc54fa8e971124Ted Kremenek sanitizer_win.cc) 23199c3d6cd16aebbb9c7f0d42af9d922c9628bf70Ken Dyck 2416f0049415ec596504891259e2a83e19871c0d52Chris Lattnerset(SANITIZER_LIBCDEP_SOURCES 2516f0049415ec596504891259e2a83e19871c0d52Chris Lattner sanitizer_common_libcdep.cc 26337e4dbc6859589b8878146a88bebf754e916702Ted Kremenek sanitizer_linux_libcdep.cc 271b63e4f732dbc73d90abf886b4d21f8e3a165f6dChris Lattner sanitizer_posix_libcdep.cc 2816f0049415ec596504891259e2a83e19871c0d52Chris Lattner sanitizer_stoptheworld_linux_libcdep.cc 290bed8a12f2878d3cd94fb8bdba55b593d92dd11aTed Kremenek sanitizer_symbolizer_libcdep.cc 30a95d3750441ac8ad03e36af8e6e74039c9a3109dTed Kremenek sanitizer_symbolizer_linux_libcdep.cc 316cb7c1a43b0c8f739d1f54b7fdae5ede86033496Benjamin Kramer sanitizer_symbolizer_posix_libcdep.cc) 32c2994283aa7538b7420c8e398cde7afa328d7042Anna Zaks 334323a57627e796dcfdfdb7d47672dc09ed308edaTed Kremenek# Explicitly list all sanitizer_common headers. Not all of these are 340f5f0595d6a038843a7051c5a65fca7bce2915a0Ted Kremenek# included in sanitizer_common source files, but we need to depend on 350f5f0595d6a038843a7051c5a65fca7bce2915a0Ted Kremenek# headers when building our custom unit tests. 360f5f0595d6a038843a7051c5a65fca7bce2915a0Ted Kremenekset(SANITIZER_HEADERS 370f5f0595d6a038843a7051c5a65fca7bce2915a0Ted Kremenek sanitizer_allocator.h 38b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek sanitizer_allocator_internal.h 399ef6537a894c33003359b1f9b9676e9178e028b7Ted Kremenek sanitizer_atomic_clang.h 40b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek sanitizer_atomic_msvc.h 41ab2b8c54bca82866876f91e756788916d3fa20c3Ted Kremenek sanitizer_atomic.h 42c2994283aa7538b7420c8e398cde7afa328d7042Anna Zaks sanitizer_common.h 43c2994283aa7538b7420c8e398cde7afa328d7042Anna Zaks sanitizer_common_interceptors.inc 44749bbe6f5f23676244f12a0d41511c8e73516febAnna Zaks sanitizer_common_interceptors_ioctl.inc 45749bbe6f5f23676244f12a0d41511c8e73516febAnna Zaks sanitizer_common_interceptors_scanf.inc 46749bbe6f5f23676244f12a0d41511c8e73516febAnna Zaks sanitizer_common_syscalls.inc 47749bbe6f5f23676244f12a0d41511c8e73516febAnna Zaks sanitizer_flags.h 48749bbe6f5f23676244f12a0d41511c8e73516febAnna Zaks sanitizer_internal_defs.h 49749bbe6f5f23676244f12a0d41511c8e73516febAnna Zaks sanitizer_lfstack.h 505903a373db3d27794c90b25687e0dd6adb0e497dAnna Zaks sanitizer_libc.h 515903a373db3d27794c90b25687e0dd6adb0e497dAnna Zaks sanitizer_linux.h 525903a373db3d27794c90b25687e0dd6adb0e497dAnna Zaks sanitizer_list.h 53e695e1cd7d8a579455e8969be36cbaf10a316a64Ted Kremenek sanitizer_mutex.h 54bdb435ddaafd5069becd543d638112f68825b89dTed Kremenek sanitizer_placement_new.h 55bdb435ddaafd5069becd543d638112f68825b89dTed Kremenek sanitizer_platform_interceptors.h 56bdb435ddaafd5069becd543d638112f68825b89dTed Kremenek sanitizer_procmaps.h 573fd5f370a28552976c52e76c3035d79012d78ddaAnna Zaks sanitizer_quarantine.h 58fbcb3f11fc90e9f00e6074e9b118b8dc11ca604cAnna Zaks sanitizer_report_decorator.h 593bbd8cd831788c506f2980293eb3c7e1b3ca2501Anna Zaks sanitizer_stackdepot.h 6025e695b2d574d919cc1bbddf3a2efe073d449b1cZhongxing Xu sanitizer_stacktrace.h 611d26f48dc2eea1c07431ca1519d7034a21b9bcffTed Kremenek sanitizer_symbolizer.h 62fbcb3f11fc90e9f00e6074e9b118b8dc11ca604cAnna Zaks sanitizer_thread_registry.h) 63d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis 64c77a55126fcad66fb086f8e100a494caa2496a2dZhongxing Xuif (NOT MSVC) 6532a58084a4c53e6938dd81bfce224db25a5976d1Ted Kremenek set(SANITIZER_CFLAGS 66ca5d78d0bc3010164f2f9682967d64d7e305a167Jordan Rose ${SANITIZER_COMMON_CFLAGS} 6750a6d0ce344c02782e0207574005c3b2aaa5077cTed Kremenek -fno-rtti) 68c8413fd03f73084a5c93028f8b4db619fc388087Ted Kremenekelse() 698ad8c546372fe602708cb7ceeaf0ebbb866735c6Anna Zaks set(SANITIZER_CFLAGS 7066c486f275531df6362b3511fc3af6563561801bTed Kremenek ${SANITIZER_COMMON_CFLAGS} 714ef19205b6912316296db74a9073ad6fa60e4ccaTed Kremenek /GR-) 72fbcb3f11fc90e9f00e6074e9b118b8dc11ca604cAnna Zaksendif() 73fbcb3f11fc90e9f00e6074e9b118b8dc11ca604cAnna Zaks 74255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenekset(SANITIZER_RUNTIME_LIBRARIES) 75255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenekif(APPLE) 76255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek # Build universal binary on APPLE. 77255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek add_compiler_rt_osx_object_library(RTSanitizerCommon 78255d4d4226b24036ceb11228fbb74286e58620f7Ted Kremenek ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH} 79c80135ba857da48173578b9c528fce6777e18168Ted Kremenek SOURCES ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES} 8050a6d0ce344c02782e0207574005c3b2aaa5077cTed Kremenek CFLAGS ${SANITIZER_CFLAGS}) 81d2592a34a059e7cbb2b11dc53649ac4912422909Argyrios Kyrtzidis list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx) 82cf118d41f7930a18dce97416ef7834a62642f587Ted Kremenekelseif(ANDROID) 8350a6d0ce344c02782e0207574005c3b2aaa5077cTed Kremenek add_library(RTSanitizerCommon.arm.android OBJECT 8450a6d0ce344c02782e0207574005c3b2aaa5077cTed Kremenek ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES}) 85e695e1cd7d8a579455e8969be36cbaf10a316a64Ted Kremenek set_target_compile_flags(RTSanitizerCommon.arm.android 86e695e1cd7d8a579455e8969be36cbaf10a316a64Ted Kremenek ${SANITIZER_CFLAGS}) 87e695e1cd7d8a579455e8969be36cbaf10a316a64Ted Kremenek list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android) 88e695e1cd7d8a579455e8969be36cbaf10a316a64Ted Kremenekelse() 898bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek # Otherwise, build separate libraries for each target. 908bef8238181a30e52dea380789a7e2d760eac532Ted Kremenek foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH}) 91a078ecf3484d62b01d9f8c01e0fecffd65c583e1Ted Kremenek add_compiler_rt_object_library(RTSanitizerCommon ${arch} 921eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) 93cfcd7fd0de701c5ce05e96de1ed2d0bf8c7035d9Ted Kremenek add_compiler_rt_object_library(RTSanitizerCommonLibc ${arch} 9452e5602056e4cade24cbcca57767e94e1d430b03Ted Kremenek SOURCES ${SANITIZER_LIBCDEP_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) 9552e5602056e4cade24cbcca57767e94e1d430b03Ted Kremenek add_compiler_rt_static_runtime(clang_rt.san-${arch} ${arch} 965974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek SOURCES $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 97a078ecf3484d62b01d9f8c01e0fecffd65c583e1Ted Kremenek $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 985974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek CFLAGS ${SANITIZER_CFLAGS}) 995974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.${arch}) 1005974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek endforeach() 1015974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenekendif() 1025974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek 1035974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek# Unit tests for common sanitizer runtime. 1045974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenekif(LLVM_INCLUDE_TESTS) 1055974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek add_subdirectory(tests) 1065974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenekendif() 1075974ec518289a719fdd18122060bbcfe49d439e3Ted Kremenek