1include_directories(..) 2 3set(RTSAN_CXX_SOURCES 4 rtsan.cpp 5 rtsan_context.cpp 6 rtsan_diagnostics.cpp 7 rtsan_flags.cpp 8 rtsan_interceptors_posix.cpp 9 rtsan_stats.cpp 10 rtsan_suppressions.cpp 11 ) 12 13set(RTSAN_PREINIT_SOURCES 14 rtsan_preinit.cpp) 15 16set(RTSAN_HEADERS 17 rtsan.h 18 rtsan_checks.inc 19 rtsan_assertions.h 20 rtsan_context.h 21 rtsan_diagnostics.h 22 rtsan_flags.h 23 rtsan_flags.inc 24 rtsan_stats.h 25 rtsan_suppressions.h 26 ) 27 28set(RTSAN_DEPS) 29 30set(RTSAN_CFLAGS 31 ${COMPILER_RT_COMMON_CFLAGS} 32 ${COMPILER_RT_CXX_CFLAGS} 33 -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS) 34set(RTSAN_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS}) 35set(RTSAN_DYNAMIC_LIBS 36 ${COMPILER_RT_UNWINDER_LINK_LIBS} 37 ${SANITIZER_CXX_ABI_LIBRARIES} 38 ${SANITIZER_COMMON_LINK_LIBS}) 39 40append_rtti_flag(OFF RTSAN_CFLAGS) 41 42if(APPLE) 43 add_compiler_rt_object_libraries(RTRtsan 44 OS ${SANITIZER_COMMON_SUPPORTED_OS} 45 ARCHS ${RTSAN_SUPPORTED_ARCH} 46 SOURCES ${RTSAN_CXX_SOURCES} 47 ADDITIONAL_HEADERS ${RTSAN_HEADERS} 48 CFLAGS ${RTSAN_CFLAGS} 49 DEPS ${RTSAN_DEPS}) 50else() 51 add_compiler_rt_object_libraries(RTRtsan 52 ARCHS ${RTSAN_SUPPORTED_ARCH} 53 SOURCES ${RTSAN_CXX_SOURCES} 54 ADDITIONAL_HEADERS ${RTSAN_HEADERS} 55 CFLAGS ${RTSAN_CFLAGS} 56 DEPS ${RTSAN_DEPS}) 57 add_compiler_rt_object_libraries(RTRtsan_preinit 58 ARCHS ${RTSAN_SUPPORTED_ARCH} 59 SOURCES ${RTSAN_PREINIT_SOURCES} 60 ADDITIONAL_HEADERS ${RTSAN_HEADERS} 61 CFLAGS ${RTSAN_CFLAGS}) 62endif() 63 64set(RTSAN_COMMON_RUNTIME_OBJECT_LIBS 65 RTInterception 66 RTSanitizerCommon 67 RTSanitizerCommonLibc 68 RTSanitizerCommonCoverage 69 RTSanitizerCommonSymbolizer) 70 71append_list_if(COMPILER_RT_HAS_LIBDL dl RTSAN_DYNAMIC_LIBS) 72append_list_if(COMPILER_RT_HAS_LIBRT rt RTSAN_DYNAMIC_LIBS) 73append_list_if(COMPILER_RT_HAS_LIBM m RTSAN_DYNAMIC_LIBS) 74append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread RTSAN_DYNAMIC_LIBS) 75append_list_if(COMPILER_RT_HAS_LIBLOG log RTSAN_DYNAMIC_LIBS) 76 77add_compiler_rt_component(rtsan) 78 79if (APPLE) 80 add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS) 81 set(RTSAN_LINK_FLAGS ${RTSAN_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}) 82 83 add_compiler_rt_runtime(clang_rt.rtsan 84 SHARED 85 OS ${SANITIZER_COMMON_SUPPORTED_OS} 86 ARCHS ${RTSAN_SUPPORTED_ARCH} 87 OBJECT_LIBS RTRtsan 88 ${RTSAN_COMMON_RUNTIME_OBJECT_LIBS} 89 LINK_FLAGS ${RTSAN_LINK_FLAGS} 90 LINK_LIBS ${RTSAN_DYNAMIC_LIBS} 91 PARENT_TARGET rtsan) 92else() 93 add_compiler_rt_runtime(clang_rt.rtsan 94 STATIC 95 ARCHS ${RTSAN_SUPPORTED_ARCH} 96 OBJECT_LIBS RTRtsan_preinit 97 RTRtsan 98 ${RTSAN_COMMON_RUNTIME_OBJECT_LIBS} 99 LINK_FLAGS ${RTSAN_LINK_FLAGS} 100 CFLAGS ${RTSAN_CFLAGS} 101 PARENT_TARGET rtsan) 102endif() 103 104if(COMPILER_RT_INCLUDE_TESTS) 105 add_subdirectory(tests) 106endif() 107