CMakeLists.txt revision 3e587a4f631c1b7338d4f2a29df74b704b8bb1ca
1# 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 7 sanitizer_flags.cc 8 sanitizer_libc.cc 9 sanitizer_linux.cc 10 sanitizer_mac.cc 11 sanitizer_platform_limits_posix.cc 12 sanitizer_posix.cc 13 sanitizer_printf.cc 14 sanitizer_stackdepot.cc 15 sanitizer_stacktrace.cc 16 sanitizer_stoptheworld_linux.cc 17 sanitizer_symbolizer.cc 18 sanitizer_symbolizer_itanium.cc 19 sanitizer_symbolizer_linux.cc 20 sanitizer_symbolizer_mac.cc 21 sanitizer_symbolizer_win.cc 22 sanitizer_thread_registry.cc 23 sanitizer_win.cc 24 ) 25 26# Explicitly list all sanitizer_common headers. Not all of these are 27# included in sanitizer_common source files, but we need to depend on 28# headers when building our custom unit tests. 29set(SANITIZER_HEADERS 30 sanitizer_allocator.h 31 sanitizer_atomic_clang.h 32 sanitizer_atomic_msvc.h 33 sanitizer_atomic.h 34 sanitizer_common.h 35 sanitizer_common_interceptors.inc 36 sanitizer_common_interceptors_scanf.inc 37 sanitizer_flags.h 38 sanitizer_internal_defs.h 39 sanitizer_lfstack.h 40 sanitizer_libc.h 41 sanitizer_linux.h 42 sanitizer_list.h 43 sanitizer_mutex.h 44 sanitizer_placement_new.h 45 sanitizer_platform_interceptors.h 46 sanitizer_procmaps.h 47 sanitizer_quarantine.h 48 sanitizer_report_decorator.h 49 sanitizer_stackdepot.h 50 sanitizer_stacktrace.h 51 sanitizer_symbolizer.h 52 sanitizer_thread_registry.h 53 ) 54 55set(SANITIZER_CFLAGS 56 ${SANITIZER_COMMON_CFLAGS} 57 -fno-rtti) 58 59set(SANITIZER_RUNTIME_LIBRARIES) 60if(APPLE) 61 # Build universal binary on APPLE. 62 add_compiler_rt_osx_object_library(RTSanitizerCommon 63 ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH} 64 SOURCES ${SANITIZER_SOURCES} 65 CFLAGS ${SANITIZER_CFLAGS}) 66 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx) 67elseif(ANDROID) 68 add_library(RTSanitizerCommon.arm.android OBJECT ${SANITIZER_SOURCES}) 69 set_target_compile_flags(RTSanitizerCommon.arm.android 70 ${SANITIZER_CFLAGS}) 71 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android) 72else() 73 # Otherwise, build separate libraries for each target. 74 foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH}) 75 add_compiler_rt_object_library(RTSanitizerCommon ${arch} 76 SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) 77 add_compiler_rt_static_runtime(clang_rt.san-${arch} ${arch} 78 SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) 79 list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.${arch}) 80 endforeach() 81endif() 82 83# Unit tests for common sanitizer runtime. 84if(LLVM_INCLUDE_TESTS) 85 add_subdirectory(tests) 86endif() 87