def getRoot(config):
if not config.parent:
return config
return getRoot(config.parent)
root = getRoot(config)
if "libdispatch" in root.available_features:
additional_cflags = " -fblocks "
for index, (template, replacement) in enumerate(config.substitutions):
if template in ["%clang_tsan ", "%clangxx_tsan "]:
config.substitutions[index] = (template, replacement + additional_cflags)
else:
config.unsupported = True
if config.host_os == "Darwin":
config.environment["TSAN_OPTIONS"] += ":ignore_noninstrumented_modules=1"