# Build for the XRay runtime support library. # Core XRay runtime library implementation files. set(XRAY_SOURCES xray_init.cc xray_interface.cc xray_flags.cc xray_inmemory_log.cc) # XRay flight data recorder (FDR) implementation files. set(XRAY_FDR_SOURCES xray_buffer_queue.cc) set(x86_64_SOURCES xray_x86_64.cc xray_trampoline_x86_64.S ${XRAY_SOURCES}) set(arm_SOURCES xray_arm.cc xray_trampoline_arm.S ${XRAY_SOURCES}) set(armhf_SOURCES ${arm_SOURCES}) set(aarch64_SOURCES xray_AArch64.cc xray_trampoline_AArch64.S ${XRAY_SOURCES}) include_directories(..) include_directories(../../include) set(XRAY_CFLAGS ${SANITIZER_COMMON_CFLAGS}) set(XRAY_COMMON_DEFINITIONS XRAY_HAS_EXCEPTIONS=1) append_list_if( COMPILER_RT_HAS_XRAY_COMPILER_FLAG XRAY_SUPPORTED=1 XRAY_COMMON_DEFINITIONS) add_compiler_rt_object_libraries(RTXray ARCHS ${XRAY_SUPPORTED_ARCH} SOURCES ${XRAY_SOURCES} CFLAGS ${XRAY_CFLAGS} DEFS ${XRAY_COMMON_DEFINITIONS}) add_compiler_rt_object_libraries(RTXrayFDR ARCHS ${XRAY_SUPPORTED_ARCH} SOURCES ${XRAY_FDR_SOURCES} CFLAGS ${XRAY_CFLAGS} DEFS ${XRAY_COMMON_DEFINITIONS}) add_compiler_rt_component(xray) add_compiler_rt_component(xray-fdr) set(XRAY_COMMON_RUNTIME_OBJECT_LIBS RTSanitizerCommon RTSanitizerCommonLibc) foreach(arch ${XRAY_SUPPORTED_ARCH}) if(CAN_TARGET_${arch}) add_compiler_rt_runtime(clang_rt.xray STATIC ARCHS ${arch} SOURCES ${${arch}_SOURCES} CFLAGS ${XRAY_CFLAGS} DEFS ${XRAY_COMMON_DEFINITIONS} OBJECT_LIBS ${XRAY_COMMON_RUNTIME_OBJECT_LIBS} PARENT_TARGET xray) add_compiler_rt_runtime(clang_rt.xray-fdr STATIC ARCHS ${arch} SOURCES ${XRAY_FDR_SOURCES} CFLAGS ${XRAY_CFLAGS} DEFS ${XRAY_COMMON_DEFINITIONS} OBJECT_LIBS ${XRAY_COMMON_RUNTIME_OBJECT_LIBS} PARENT_TARGET xray-fdr) endif() endforeach() if(COMPILER_RT_INCLUDE_TESTS) add_subdirectory(tests) endif()