1def getRoot(config): 2 if not config.parent: 3 return config 4 return getRoot(config.parent) 5 6 7root = getRoot(config) 8 9if "libdispatch" in root.available_features: 10 additional_cflags = " -fblocks " 11 for index, (template, replacement) in enumerate(config.substitutions): 12 if template in ["%clang_tsan ", "%clangxx_tsan "]: 13 config.substitutions[index] = (template, replacement + additional_cflags) 14else: 15 config.unsupported = True 16 17if config.host_os == "Darwin": 18 config.environment["TSAN_OPTIONS"] += ":ignore_noninstrumented_modules=1" 19