84 lines · plain
1include_directories(..)2 3# Runtime library sources and build flags.4set(TYSAN_SOURCES5 tysan.cpp6 tysan_interceptors.cpp7 )8 9SET(TYSAN_HEADERS10 tysan.h11 tysan_flags.inc12 tysan_platform.h13 )14 15set(TYSAN_COMMON_CFLAGS ${SANITIZER_COMMON_CFLAGS})16append_rtti_flag(OFF TYSAN_COMMON_CFLAGS)17# Prevent clang from generating libc calls.18append_list_if(COMPILER_RT_HAS_FFREESTANDING_FLAG -ffreestanding TYSAN_COMMON_CFLAGS)19set(TYSAN_DYNAMIC_CFLAGS ${TYSAN_COMMON_CFLAGS})20 21set(TYSAN_COMMON_DEFINITIONS "")22set(TYSAN_DYNAMIC_DEFINITIONS ${TYSAN_COMMON_DEFINITIONS} TYSAN_DYNAMIC=1)23 24# Compile TYSan sources into an object library.25 26add_compiler_rt_object_libraries(RTTysan_dynamic27 OS ${SANITIZER_COMMON_SUPPORTED_OS}28 ARCHS ${TYSAN_SUPPORTED_ARCH}29 SOURCES ${TYSAN_SOURCES}30 ADDITIONAL_HEADERS ${TYSAN_HEADERS}31 CFLAGS ${TYSAN_DYNAMIC_CFLAGS}32 DEFS ${TYSAN_DYNAMIC_DEFINITIONS})33 34 35# Static runtime library.36add_compiler_rt_component(tysan)37 38 39if(APPLE)40 add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)41 42 add_compiler_rt_runtime(clang_rt.tysan43 SHARED44 OS ${SANITIZER_COMMON_SUPPORTED_OS}45 ARCHS ${TYSAN_SUPPORTED_ARCH}46 OBJECT_LIBS RTTysan_dynamic47 RTInterception48 RTSanitizerCommon49 RTSanitizerCommonCoverage50 RTSanitizerCommonLibc51 RTSanitizerCommonSymbolizer52 RTUbsan53 CFLAGS ${TYSAN_DYNAMIC_CFLAGS}54 LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}55 DEFS ${TYSAN_DYNAMIC_DEFINITIONS}56 PARENT_TARGET tysan)57 58 add_compiler_rt_runtime(clang_rt.tysan_static59 STATIC60 ARCHS ${TYSAN_SUPPORTED_ARCH}61 OBJECT_LIBS RTTysan_static62 CFLAGS ${TYSAN_CFLAGS}63 DEFS ${TYSAN_COMMON_DEFINITIONS}64 PARENT_TARGET tysan)65else()66 set(TYSAN_CFLAGS ${TYSAN_COMMON_CFLAGS})67 append_list_if(COMPILER_RT_HAS_FPIE_FLAG -fPIE TYSAN_CFLAGS)68 69 foreach(arch ${TYSAN_SUPPORTED_ARCH})70 add_compiler_rt_runtime(clang_rt.tysan71 STATIC72 ARCHS ${arch}73 SOURCES ${TYSAN_SOURCES}74 OBJECT_LIBS RTInterception75 RTSanitizerCommon76 RTSanitizerCommonCoverage77 RTSanitizerCommonLibc78 RTSanitizerCommonSymbolizer79 RTUbsan80 CFLAGS ${TYSAN_CFLAGS}81 PARENT_TARGET tysan)82 endforeach()83endif()84