# -*- Python -*-

# Configuration file for the 'lit' test runner.

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

root = getRoot(config)

# testFormat: The test format to use to interpret tests.
config.test_format = lit.formats.SyntaxCheckTest(compiler=root.clang,
                                                 dir='%s/include/llvm' % root.llvm_src_root,
                                                 recursive=True,
                                                 pattern='^(.*\\.h|[^.]*)$',
                                                 extra_cxx_args=['-D__STDC_LIMIT_MACROS',
                                                                 '-D__STDC_CONSTANT_MACROS',
                                                                 '-Werror',
                                                                 '-I%s/include' % root.llvm_src_root,
                                                                 '-I%s/include' % root.llvm_obj_root])

config.excludes = ['AbstractTypeUser.h', 'DAGISelHeader.h',
                   'AIXDataTypesFix.h', 'Solaris.h']
