# -*- 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.
cxxflags = ['-D__STDC_LIMIT_MACROS',
            '-D__STDC_CONSTANT_MACROS',
            '-Wno-sign-compare',
            '-I%s/include' % root.llvm_src_root,
            '-I%s/include' % root.llvm_obj_root,
            '-I%s/tools/clang/include' % root.llvm_src_root,
            '-I%s/tools/clang/include' % root.llvm_obj_root]
config.test_format = \
  lit.formats.OneCommandPerFileTest(command=[root.clang,
                                             '-fsyntax-only'] + cxxflags,
                                    dir='%s/tools/clang/lib' % root.llvm_src_root,
                                    recursive=True,
                                    pattern='^(.*\\.cpp)$')
