set(TSAN_SOURCES tsan_clock.cc tsan_flags.cc tsan_fd.cc tsan_interceptors.cc tsan_interface_ann.cc tsan_interface_atomic.cc tsan_interface.cc tsan_interface_java.cc tsan_md5.cc tsan_mman.cc tsan_mutex.cc tsan_mutexset.cc tsan_report.cc tsan_rtl.cc tsan_rtl_mutex.cc tsan_rtl_report.cc tsan_rtl_thread.cc tsan_stat.cc tsan_suppressions.cc tsan_symbolize.cc tsan_sync.cc ) if(APPLE) list(APPEND TSAN_SOURCES tsan_platform_mac.cc) elseif(UNIX) # Assume Linux list(APPEND TSAN_SOURCES tsan_platform_linux.cc tsan_symbolize_addr2line_linux.cc) endif() set(TSAN_RUNTIME_LIBRARIES) # TSan is currently supported on 64-bit Linux only. if(CAN_TARGET_x86_64 AND UNIX AND NOT APPLE) set(TSAN_ASM_SOURCES tsan_rtl_amd64.S) # Pass ASM file directly to the C++ compiler. set_source_files_properties(${TSAN_ASM_SOURCES} PROPERTIES LANGUAGE C ) add_library(clang_rt.tsan-x86_64 STATIC ${TSAN_SOURCES} ${TSAN_ASM_SOURCES} $ $ ) set_target_compile_flags(clang_rt.tsan-x86_64 ${TSAN_CFLAGS} ${TARGET_x86_64_CFLAGS} ) list(APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-x86_64) endif() if(TSAN_RUNTIME_LIBRARIES) set_property(TARGET ${TSAN_RUNTIME_LIBRARIES} APPEND PROPERTY COMPILE_DEFINITIONS ${TSAN_COMMON_DEFINITIONS}) add_clang_compiler_rt_libraries(${TSAN_RUNTIME_LIBRARIES}) endif()