CMakeLists.txt revision 7a3d5fe086a6458be7c4810397363b67b022a138
10ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Build system for the common Sanitizer runtime support library components. 20ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# These components are shared between AddressSanitizer and ThreadSanitizer. 30ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 40ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongset(SANITIZER_SOURCES 50ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_allocator.cc 60ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common.cc 70ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_flags.cc 80ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_libc.cc 90ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_linux.cc 100ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_mac.cc 110ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_platform_limits_linux.cc 120ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_platform_limits_posix.cc 130ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_posix.cc 140ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_printf.cc 150ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_stackdepot.cc 160ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_stacktrace.cc 170ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_suppressions.cc 180ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_symbolizer_win.cc 190ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_thread_registry.cc 200ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_win.cc) 210ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 220ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongset(SANITIZER_LIBCDEP_SOURCES 230ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common_libcdep.cc 240ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_linux_libcdep.cc 250ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_posix_libcdep.cc 260ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_stoptheworld_linux_libcdep.cc 270ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_symbolizer_posix_libcdep.cc) 280ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 290ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Explicitly list all sanitizer_common headers. Not all of these are 300ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# included in sanitizer_common source files, but we need to depend on 310ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# headers when building our custom unit tests. 320ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongset(SANITIZER_HEADERS 330ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_allocator.h 340ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_allocator_internal.h 350ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_atomic_clang.h 360ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_atomic_msvc.h 370ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_atomic.h 380ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common.h 390ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common_interceptors.inc 400ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common_interceptors_ioctl.inc 410ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common_interceptors_scanf.inc 420ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_common_syscalls.inc 430ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_flags.h 440ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_internal_defs.h 450ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_lfstack.h 4679397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez sanitizer_libc.h 4779397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez sanitizer_linux.h 4879397c21138f54fcff6ec067b44b847f1f7e0e98Carlos Hernandez sanitizer_list.h 490ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_mutex.h 500ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_placement_new.h 510ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_platform_interceptors.h 520ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_procmaps.h 530ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_quarantine.h 540ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_report_decorator.h 550ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_stackdepot.h 560ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_stacktrace.h 570ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_symbolizer.h 580ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong sanitizer_thread_registry.h) 590ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 600ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif (NOT MSVC) 610ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong set(SANITIZER_CFLAGS 620ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong ${SANITIZER_COMMON_CFLAGS} 630ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong -fno-rtti) 640ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongelse() 650ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong set(SANITIZER_CFLAGS 660ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong ${SANITIZER_COMMON_CFLAGS} 670ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong /GR-) 680ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongendif() 690ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 700ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif(SUPPORTS_GLOBAL_CONSTRUCTORS_FLAG) 710ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong list(APPEND SANITIZER_CFLAGS -Wglobal-constructors) 720ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongendif() 730ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 740ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongset(SANITIZER_RUNTIME_LIBRARIES) 750ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif(APPLE) 760ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong # Build universal binary on APPLE. 770ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong add_compiler_rt_osx_object_library(RTSanitizerCommon 780ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong ARCH ${SANITIZER_COMMON_SUPPORTED_ARCH} 790ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong SOURCES ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES} 801d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling CFLAGS ${SANITIZER_CFLAGS}) 810ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.osx) 820ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongelseif(ANDROID) 831d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling add_library(RTSanitizerCommon.arm.android OBJECT 840ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong ${SANITIZER_SOURCES} ${SANITIZER_LIBCDEP_SOURCES}) 850ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong set_target_compile_flags(RTSanitizerCommon.arm.android 861d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling ${SANITIZER_CFLAGS}) 870ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.arm.android) 880ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongelse() 890ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong # Otherwise, build separate libraries for each target. 900ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong foreach(arch ${SANITIZER_COMMON_SUPPORTED_ARCH}) 910ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong add_compiler_rt_object_library(RTSanitizerCommon ${arch} 920ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong SOURCES ${SANITIZER_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) 930ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong add_compiler_rt_object_library(RTSanitizerCommonLibc ${arch} 940ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong SOURCES ${SANITIZER_LIBCDEP_SOURCES} CFLAGS ${SANITIZER_CFLAGS}) 950ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong add_compiler_rt_static_runtime(clang_rt.san-${arch} ${arch} 961d2624a10e2c559f8ba9ef89eaa30832c0a83a96Sascha Haeberling SOURCES $<TARGET_OBJECTS:RTSanitizerCommon.${arch}> 970ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch}> 980ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong CFLAGS ${SANITIZER_CFLAGS}) 990ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong list(APPEND SANITIZER_RUNTIME_LIBRARIES RTSanitizerCommon.${arch}) 1000ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong endforeach() 1010ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongendif() 1020ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong 1030ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong# Unit tests for common sanitizer runtime. 1040ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongif(LLVM_INCLUDE_TESTS) 1050ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong add_subdirectory(tests) 1060ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kongendif() 1070ae28bd5885b5daa526898fcf7c323dc2c3e1963Angus Kong