include_directories(..) set(RTSAN_CXX_SOURCES rtsan.cpp rtsan_context.cpp rtsan_diagnostics.cpp rtsan_flags.cpp rtsan_interceptors_posix.cpp rtsan_stats.cpp rtsan_suppressions.cpp ) set(RTSAN_PREINIT_SOURCES rtsan_preinit.cpp) set(RTSAN_HEADERS rtsan.h rtsan_checks.inc rtsan_assertions.h rtsan_context.h rtsan_diagnostics.h rtsan_flags.h rtsan_flags.inc rtsan_stats.h rtsan_suppressions.h ) set(RTSAN_DEPS) set(RTSAN_CFLAGS ${COMPILER_RT_COMMON_CFLAGS} ${COMPILER_RT_CXX_CFLAGS} -DSANITIZER_COMMON_NO_REDEFINE_BUILTINS) set(RTSAN_LINK_FLAGS ${COMPILER_RT_COMMON_LINK_FLAGS}) set(RTSAN_DYNAMIC_LIBS ${COMPILER_RT_UNWINDER_LINK_LIBS} ${SANITIZER_CXX_ABI_LIBRARIES} ${SANITIZER_COMMON_LINK_LIBS}) append_rtti_flag(OFF RTSAN_CFLAGS) if(APPLE) add_compiler_rt_object_libraries(RTRtsan OS ${SANITIZER_COMMON_SUPPORTED_OS} ARCHS ${RTSAN_SUPPORTED_ARCH} SOURCES ${RTSAN_CXX_SOURCES} ADDITIONAL_HEADERS ${RTSAN_HEADERS} CFLAGS ${RTSAN_CFLAGS} DEPS ${RTSAN_DEPS}) else() add_compiler_rt_object_libraries(RTRtsan ARCHS ${RTSAN_SUPPORTED_ARCH} SOURCES ${RTSAN_CXX_SOURCES} ADDITIONAL_HEADERS ${RTSAN_HEADERS} CFLAGS ${RTSAN_CFLAGS} DEPS ${RTSAN_DEPS}) add_compiler_rt_object_libraries(RTRtsan_preinit ARCHS ${RTSAN_SUPPORTED_ARCH} SOURCES ${RTSAN_PREINIT_SOURCES} ADDITIONAL_HEADERS ${RTSAN_HEADERS} CFLAGS ${RTSAN_CFLAGS}) endif() set(RTSAN_COMMON_RUNTIME_OBJECT_LIBS RTInterception RTSanitizerCommon RTSanitizerCommonLibc RTSanitizerCommonCoverage RTSanitizerCommonSymbolizer) append_list_if(COMPILER_RT_HAS_LIBDL dl RTSAN_DYNAMIC_LIBS) append_list_if(COMPILER_RT_HAS_LIBRT rt RTSAN_DYNAMIC_LIBS) append_list_if(COMPILER_RT_HAS_LIBM m RTSAN_DYNAMIC_LIBS) append_list_if(COMPILER_RT_HAS_LIBPTHREAD pthread RTSAN_DYNAMIC_LIBS) append_list_if(COMPILER_RT_HAS_LIBLOG log RTSAN_DYNAMIC_LIBS) add_compiler_rt_component(rtsan) if (APPLE) add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS) set(RTSAN_LINK_FLAGS ${RTSAN_LINK_FLAGS} ${WEAK_SYMBOL_LINK_FLAGS}) add_compiler_rt_runtime(clang_rt.rtsan SHARED OS ${SANITIZER_COMMON_SUPPORTED_OS} ARCHS ${RTSAN_SUPPORTED_ARCH} OBJECT_LIBS RTRtsan ${RTSAN_COMMON_RUNTIME_OBJECT_LIBS} LINK_FLAGS ${RTSAN_LINK_FLAGS} LINK_LIBS ${RTSAN_DYNAMIC_LIBS} PARENT_TARGET rtsan) else() add_compiler_rt_runtime(clang_rt.rtsan STATIC ARCHS ${RTSAN_SUPPORTED_ARCH} OBJECT_LIBS RTRtsan_preinit RTRtsan ${RTSAN_COMMON_RUNTIME_OBJECT_LIBS} LINK_FLAGS ${RTSAN_LINK_FLAGS} CFLAGS ${RTSAN_CFLAGS} PARENT_TARGET rtsan) endif() if(COMPILER_RT_INCLUDE_TESTS) add_subdirectory(tests) endif()