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.target_os == "Darwin":
    config.environment["TSAN_OPTIONS"] += ":ignore_noninstrumented_modules=1"
