brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · e7a6e71 Raw
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