@@ -79,35 +79,40 @@ set(TSAN_HEADERS
79
79
set (TSAN_RUNTIME_LIBRARIES)
80
80
add_custom_target (tsan)
81
81
# TSan is currently supported on 64-bit Linux only.
82
- if (CAN_TARGET_x86_64 AND UNIX AND NOT APPLE )
83
- set (TSAN_ASM_SOURCES rtl/tsan_rtl_amd64.S)
84
- # Pass ASM file directly to the C++ compiler.
85
- set_source_files_properties (${TSAN_ASM_SOURCES} PROPERTIES
86
- LANGUAGE C)
87
- set (arch "x86_64" )
88
- add_compiler_rt_runtime(clang_rt.tsan-${arch} ${arch} STATIC
89
- SOURCES ${TSAN_SOURCES} ${TSAN_ASM_SOURCES}
90
- $<TARGET_OBJECTS:RTInterception.${arch} >
91
- $<TARGET_OBJECTS:RTSanitizerCommon.${arch} >
92
- $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch} >
93
- CFLAGS ${TSAN_RTL_CFLAGS}
94
- DEFS ${TSAN_COMMON_DEFINITIONS} )
95
- list (APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-${arch} )
96
- add_sanitizer_rt_symbols(clang_rt.tsan-${arch} rtl/tsan.syms.extra)
97
- add_dependencies (tsan clang_rt.tsan-${arch}
98
- clang_rt.tsan-${arch} -symbols)
82
+ if (UNIX AND NOT APPLE )
83
+ foreach (arch ${TSAN_SUPPORTED_ARCH} )
84
+ if (arch STREQUAL "x86_64" )
85
+ set (TSAN_ASM_SOURCES rtl/tsan_rtl_amd64.S)
86
+ # Pass ASM file directly to the C++ compiler.
87
+ set_source_files_properties (${TSAN_ASM_SOURCES} PROPERTIES
88
+ LANGUAGE C)
89
+ # Sanity check for Go runtime.
90
+ set (BUILDGO_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR} /go/buildgo.sh)
91
+ add_custom_target (GotsanRuntimeCheck
92
+ COMMAND CC=${CMAKE_C_COMPILER} IN_TMPDIR=1 SILENT=1 ${BUILDGO_SCRIPT}
93
+ DEPENDS clang_rt.tsan-${arch} ${BUILDGO_SCRIPT}
94
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /go
95
+ COMMENT "Checking TSan Go runtime..."
96
+ VERBATIM )
97
+ else ()
98
+ set (TSAN_ASM_SOURCES)
99
+ endif ()
100
+ add_compiler_rt_runtime(clang_rt.tsan-${arch} ${arch} STATIC
101
+ SOURCES ${TSAN_SOURCES} ${TSAN_ASM_SOURCES}
102
+ $<TARGET_OBJECTS:RTInterception.${arch} >
103
+ $<TARGET_OBJECTS:RTSanitizerCommon.${arch} >
104
+ $<TARGET_OBJECTS:RTSanitizerCommonLibc.${arch} >
105
+ CFLAGS ${TSAN_RTL_CFLAGS}
106
+ DEFS ${TSAN_COMMON_DEFINITIONS} )
107
+ list (APPEND TSAN_RUNTIME_LIBRARIES clang_rt.tsan-${arch} )
108
+ add_sanitizer_rt_symbols(clang_rt.tsan-${arch} rtl/tsan.syms.extra)
109
+ add_dependencies (tsan clang_rt.tsan-${arch}
110
+ clang_rt.tsan-${arch} -symbols)
111
+ endforeach ()
99
112
endif ()
100
113
101
114
add_dependencies (compiler-rt tsan)
102
115
103
- # Sanity check for Go runtime.
104
- set (BUILDGO_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR} /go/buildgo.sh)
105
- add_custom_target (GotsanRuntimeCheck
106
- COMMAND CC=${CMAKE_C_COMPILER} IN_TMPDIR=1 SILENT=1 ${BUILDGO_SCRIPT}
107
- DEPENDS clang_rt.tsan-${arch} ${BUILDGO_SCRIPT}
108
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /go
109
- COMMENT "Checking TSan Go runtime..."
110
- VERBATIM )
111
116
112
117
# Build libcxx instrumented with TSan.
113
118
if (TSAN_SUPPORTED_ARCH AND
0 commit comments