config.suffixes = ['.ll', '.c', '.cpp']

def getRoot(config):
    if not config.parent:
        return config
    return getRoot(config.parent)

root = getRoot(config)

targets = set(root.targets_to_build.split())
if ('X86' in targets) | ('AArch64' in targets) | ('ARM' in targets) | \
   ('Mips' in targets) | ('PowerPC' in targets) | ('SystemZ' in targets):
    config.unsupported = False
else:
    config.unsupported = True

if root.host_arch not in ['i386', 'x86', 'x86_64',
                          'AArch64', 'ARM', 'Mips', 'PowerPC', 'SystemZ']:
    config.unsupported = True

if 'i386-apple-darwin'  in root.target_triple:
    config.unsupported = True

if 'powerpc' in root.target_triple and not 'powerpc64' in root.target_triple:
    config.unsupported = True
