@@ -291,7 +291,13 @@ def build(self, host_target):
291
291
llvm_cmake_options .define ('LLVM_INCLUDE_DOCS:BOOL' , 'TRUE' )
292
292
llvm_cmake_options .define ('LLVM_ENABLE_LTO:STRING' , self .args .lto_type )
293
293
llvm_cmake_options .define ('COMPILER_RT_INTERCEPT_LIBDISPATCH' , 'ON' )
294
- llvm_cmake_options .define ('RUNTIMES_CMAKE_ARGS' , '-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR:BOOL=OFF' )
294
+ llvm_cmake_options .define (
295
+ 'RUNTIMES_CMAKE_ARGS' ,
296
+ '-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR:BOOL=OFF;'
297
+ # This preserves the behaviour we had when using LLVM_BUILD_EXTERNAL COMPILER_RT --
298
+ # that is, not requiring the linker to complaining if symbols used by TSan are
299
+ # undefined (namely the ones for Blocks Runtime)
300
+ '-DSANITIZER_COMMON_LINK_FLAGS:STRING=-Wl,-z,undefs' )
295
301
296
302
if self .args .build_embedded_stdlib and system () == "Darwin" :
297
303
# Ask for Mach-O cross-compilation builtins (for Embedded Swift)
@@ -306,8 +312,6 @@ def build(self, host_target):
306
312
not self .is_cross_compile_target (host_target ):
307
313
llvm_enable_runtimes .append ('compiler-rt' )
308
314
build_targets .append ("runtimes" )
309
- # This is needed to build correctly TSan under Linux
310
- llvm_cmake_options .define ('COMPILER_RT_USE_BUILTINS_LIBRARY' , 'ON' )
311
315
312
316
if self .args .build_clang_tools_extra :
313
317
llvm_enable_projects .append ('clang-tools-extra' )
0 commit comments