From 222e2a7620e6520ffaf4fc4e69d79c18da31542e Mon Sep 17 00:00:00 2001 From: "Zancanaro; Carlo" Date: Mon, 24 Sep 2012 09:58:17 +1000 Subject: Add the clang library to the repo (with some of my changes, too). --- .../C++Tests/Clang-Code-Compile/lit.local.cfg | 26 +++++++++++ .../utils/C++Tests/Clang-Code-Syntax/lit.local.cfg | 25 ++++++++++ clang/utils/C++Tests/Clang-Syntax/lit.local.cfg | 24 ++++++++++ .../utils/C++Tests/LLVM-Code-Compile/lit.local.cfg | 48 +++++++++++++++++++ .../utils/C++Tests/LLVM-Code-Symbols/check-symbols | 54 ++++++++++++++++++++++ .../utils/C++Tests/LLVM-Code-Symbols/lit.local.cfg | 48 +++++++++++++++++++ .../utils/C++Tests/LLVM-Code-Syntax/lit.local.cfg | 46 ++++++++++++++++++ clang/utils/C++Tests/LLVM-Syntax/lit.local.cfg | 24 ++++++++++ clang/utils/C++Tests/lit.cfg | 27 +++++++++++ clang/utils/C++Tests/stdc++-Syntax/lit.local.cfg | 17 +++++++ 10 files changed, 339 insertions(+) create mode 100644 clang/utils/C++Tests/Clang-Code-Compile/lit.local.cfg create mode 100644 clang/utils/C++Tests/Clang-Code-Syntax/lit.local.cfg create mode 100644 clang/utils/C++Tests/Clang-Syntax/lit.local.cfg create mode 100644 clang/utils/C++Tests/LLVM-Code-Compile/lit.local.cfg create mode 100755 clang/utils/C++Tests/LLVM-Code-Symbols/check-symbols create mode 100644 clang/utils/C++Tests/LLVM-Code-Symbols/lit.local.cfg create mode 100644 clang/utils/C++Tests/LLVM-Code-Syntax/lit.local.cfg create mode 100644 clang/utils/C++Tests/LLVM-Syntax/lit.local.cfg create mode 100644 clang/utils/C++Tests/lit.cfg create mode 100644 clang/utils/C++Tests/stdc++-Syntax/lit.local.cfg (limited to 'clang/utils/C++Tests') diff --git a/clang/utils/C++Tests/Clang-Code-Compile/lit.local.cfg b/clang/utils/C++Tests/Clang-Code-Compile/lit.local.cfg new file mode 100644 index 0000000..59d3466 --- /dev/null +++ b/clang/utils/C++Tests/Clang-Code-Compile/lit.local.cfg @@ -0,0 +1,26 @@ +# -*- 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, '-emit-llvm', '-c', + '-o', '/dev/null'] + cxxflags, + dir='%s/tools/clang/lib' % root.llvm_src_root, + recursive=True, + pattern='^(.*\\.cpp)$') + diff --git a/clang/utils/C++Tests/Clang-Code-Syntax/lit.local.cfg b/clang/utils/C++Tests/Clang-Code-Syntax/lit.local.cfg new file mode 100644 index 0000000..8f00c8d --- /dev/null +++ b/clang/utils/C++Tests/Clang-Code-Syntax/lit.local.cfg @@ -0,0 +1,25 @@ +# -*- 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)$') diff --git a/clang/utils/C++Tests/Clang-Syntax/lit.local.cfg b/clang/utils/C++Tests/Clang-Syntax/lit.local.cfg new file mode 100644 index 0000000..89fdd8e --- /dev/null +++ b/clang/utils/C++Tests/Clang-Syntax/lit.local.cfg @@ -0,0 +1,24 @@ +# -*- 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/tools/clang/include/clang' % root.llvm_src_root, + recursive=True, + pattern='^(.*\\.h)$', + extra_cxx_args=['-D__STDC_LIMIT_MACROS', + '-D__STDC_CONSTANT_MACROS', + '-Wno-sign-compare', + '-Werror', + '-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]) diff --git a/clang/utils/C++Tests/LLVM-Code-Compile/lit.local.cfg b/clang/utils/C++Tests/LLVM-Code-Compile/lit.local.cfg new file mode 100644 index 0000000..c1ac6a9 --- /dev/null +++ b/clang/utils/C++Tests/LLVM-Code-Compile/lit.local.cfg @@ -0,0 +1,48 @@ +# -*- 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. +target_obj_root = root.llvm_obj_root +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/lib/Target/ARM' % root.llvm_src_root, + '-I%s/lib/Target/CellSPU' % root.llvm_src_root, + '-I%s/lib/Target/CppBackend' % root.llvm_src_root, + '-I%s/lib/Target/Mips' % root.llvm_src_root, + '-I%s/lib/Target/MSIL' % root.llvm_src_root, + '-I%s/lib/Target/MSP430' % root.llvm_src_root, + '-I%s/lib/Target/PIC16' % root.llvm_src_root, + '-I%s/lib/Target/PowerPC' % root.llvm_src_root, + '-I%s/lib/Target/Sparc' % root.llvm_src_root, + '-I%s/lib/Target/X86' % root.llvm_src_root, + '-I%s/lib/Target/XCore' % root.llvm_src_root, + '-I%s/lib/Target/ARM' % target_obj_root, + '-I%s/lib/Target/CellSPU' % target_obj_root, + '-I%s/lib/Target/CppBackend' % target_obj_root, + '-I%s/lib/Target/Mips' % target_obj_root, + '-I%s/lib/Target/MSIL' % target_obj_root, + '-I%s/lib/Target/MSP430' % target_obj_root, + '-I%s/lib/Target/PIC16' % target_obj_root, + '-I%s/lib/Target/PowerPC' % target_obj_root, + '-I%s/lib/Target/Sparc' % target_obj_root, + '-I%s/lib/Target/X86' % target_obj_root, + '-I%s/lib/Target/XCore' % target_obj_root]; + +config.test_format = \ + lit.formats.OneCommandPerFileTest(command=[root.clang, '-emit-llvm', '-c', + '-o', '/dev/null'] + cxxflags, + dir='%s/lib' % root.llvm_src_root, + recursive=True, + pattern='^(.*\\.cpp)$') + diff --git a/clang/utils/C++Tests/LLVM-Code-Symbols/check-symbols b/clang/utils/C++Tests/LLVM-Code-Symbols/check-symbols new file mode 100755 index 0000000..cd54eed --- /dev/null +++ b/clang/utils/C++Tests/LLVM-Code-Symbols/check-symbols @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +import subprocess +import difflib + +def capture_2(args0, args1): + import subprocess + p0 = subprocess.Popen(args0, stdin=None, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + p1 = subprocess.Popen(args1, stdin=p0.stdout, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + out,_ = p1.communicate() + return out + +def normalize_nm(data): + lines = data.split('\n') + lines.sort() + + # FIXME: Ignore common symbols for now. + lines = [ln for ln in lines + if not ln.startswith(' C')] + + return lines + +def main(): + import sys + clang = sys.argv[1] + flags = sys.argv[2:] + + # FIXME: Relax to include undefined symbols. + nm_args = ["llvm-nm", "-extern-only", "-defined-only"] + + llvmgcc_args = ["llvm-gcc"] + flags + ["-emit-llvm","-c","-o","-"] + clang_args = [clang] + flags + ["-emit-llvm","-c","-o","-"] + + llvmgcc_nm = capture_2(llvmgcc_args, nm_args) + clang_nm = capture_2(clang_args, nm_args) + + llvmgcc_nm = normalize_nm(llvmgcc_nm) + clang_nm = normalize_nm(clang_nm) + + if llvmgcc_nm == clang_nm: + sys.exit(0) + + print ' '.join(llvmgcc_args), '|', ' '.join(nm_args) + print ' '.join(clang_args), '|', ' '.join(nm_args) + for line in difflib.unified_diff(llvmgcc_nm, clang_nm, + fromfile="llvm-gcc symbols", + tofile="clang symbols"): + print line + sys.exit(1) + +if __name__ == '__main__': + main() diff --git a/clang/utils/C++Tests/LLVM-Code-Symbols/lit.local.cfg b/clang/utils/C++Tests/LLVM-Code-Symbols/lit.local.cfg new file mode 100644 index 0000000..7882813 --- /dev/null +++ b/clang/utils/C++Tests/LLVM-Code-Symbols/lit.local.cfg @@ -0,0 +1,48 @@ +# -*- 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. +target_obj_root = root.llvm_obj_root +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/lib/Target/ARM' % root.llvm_src_root, + '-I%s/lib/Target/CellSPU' % root.llvm_src_root, + '-I%s/lib/Target/CppBackend' % root.llvm_src_root, + '-I%s/lib/Target/Mips' % root.llvm_src_root, + '-I%s/lib/Target/MSIL' % root.llvm_src_root, + '-I%s/lib/Target/MSP430' % root.llvm_src_root, + '-I%s/lib/Target/PIC16' % root.llvm_src_root, + '-I%s/lib/Target/PowerPC' % root.llvm_src_root, + '-I%s/lib/Target/Sparc' % root.llvm_src_root, + '-I%s/lib/Target/X86' % root.llvm_src_root, + '-I%s/lib/Target/XCore' % root.llvm_src_root, + '-I%s/lib/Target/ARM' % target_obj_root, + '-I%s/lib/Target/CellSPU' % target_obj_root, + '-I%s/lib/Target/CppBackend' % target_obj_root, + '-I%s/lib/Target/Mips' % target_obj_root, + '-I%s/lib/Target/MSIL' % target_obj_root, + '-I%s/lib/Target/MSP430' % target_obj_root, + '-I%s/lib/Target/PIC16' % target_obj_root, + '-I%s/lib/Target/PowerPC' % target_obj_root, + '-I%s/lib/Target/Sparc' % target_obj_root, + '-I%s/lib/Target/X86' % target_obj_root, + '-I%s/lib/Target/XCore' % target_obj_root]; + +kScript = os.path.join(os.path.dirname(__file__), "check-symbols") +config.test_format = \ + lit.formats.OneCommandPerFileTest(command=[kScript, root.clang] + cxxflags, + dir='%s/lib' % root.llvm_src_root, + recursive=True, + pattern='^(.*\\.cpp)$') + diff --git a/clang/utils/C++Tests/LLVM-Code-Syntax/lit.local.cfg b/clang/utils/C++Tests/LLVM-Code-Syntax/lit.local.cfg new file mode 100644 index 0000000..42bec2d --- /dev/null +++ b/clang/utils/C++Tests/LLVM-Code-Syntax/lit.local.cfg @@ -0,0 +1,46 @@ +# -*- 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. +target_obj_root = root.llvm_obj_root +cxxflags = ['-D__STDC_LIMIT_MACROS', + '-D__STDC_CONSTANT_MACROS', + '-I%s/include' % root.llvm_src_root, + '-I%s/include' % root.llvm_obj_root, + '-I%s/lib/Target/ARM' % root.llvm_src_root, + '-I%s/lib/Target/CellSPU' % root.llvm_src_root, + '-I%s/lib/Target/CppBackend' % root.llvm_src_root, + '-I%s/lib/Target/Mips' % root.llvm_src_root, + '-I%s/lib/Target/MSIL' % root.llvm_src_root, + '-I%s/lib/Target/MSP430' % root.llvm_src_root, + '-I%s/lib/Target/PIC16' % root.llvm_src_root, + '-I%s/lib/Target/PowerPC' % root.llvm_src_root, + '-I%s/lib/Target/Sparc' % root.llvm_src_root, + '-I%s/lib/Target/X86' % root.llvm_src_root, + '-I%s/lib/Target/XCore' % root.llvm_src_root, + '-I%s/lib/Target/ARM' % target_obj_root, + '-I%s/lib/Target/CellSPU' % target_obj_root, + '-I%s/lib/Target/CppBackend' % target_obj_root, + '-I%s/lib/Target/Mips' % target_obj_root, + '-I%s/lib/Target/MSIL' % target_obj_root, + '-I%s/lib/Target/MSP430' % target_obj_root, + '-I%s/lib/Target/PIC16' % target_obj_root, + '-I%s/lib/Target/PowerPC' % target_obj_root, + '-I%s/lib/Target/Sparc' % target_obj_root, + '-I%s/lib/Target/X86' % target_obj_root, + '-I%s/lib/Target/XCore' % target_obj_root]; + +config.test_format = \ + lit.formats.OneCommandPerFileTest(command=[root.clang, + '-fsyntax-only'] + cxxflags, + dir='%s/lib' % root.llvm_src_root, + recursive=True, + pattern='^(.*\\.cpp)$') diff --git a/clang/utils/C++Tests/LLVM-Syntax/lit.local.cfg b/clang/utils/C++Tests/LLVM-Syntax/lit.local.cfg new file mode 100644 index 0000000..cb0e566 --- /dev/null +++ b/clang/utils/C++Tests/LLVM-Syntax/lit.local.cfg @@ -0,0 +1,24 @@ +# -*- 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'] diff --git a/clang/utils/C++Tests/lit.cfg b/clang/utils/C++Tests/lit.cfg new file mode 100644 index 0000000..274ca10 --- /dev/null +++ b/clang/utils/C++Tests/lit.cfg @@ -0,0 +1,27 @@ +# -*- Python -*- + +# Configuration file for the 'lit' test runner. + +# Load the main clang test config so we can leech its clang finding logic. +lit.load_config(config, os.path.join(os.path.dirname(__file__), + '..', '..', 'test', 'lit.cfg')) +assert config.clang, "Failed to set clang!?" + +# name: The name of this test suite. +config.name = 'Clang++' + +# suffixes: A list of file extensions to treat as test files, this is actually +# set by on_clone(). +config.suffixes = [] + +# Reset these from the Clang config. +config.test_source_root = config.test_exec_root = None + +# Don't run Clang and LLVM code checks by default. +config.excludes = [] +if not lit.params.get('run_clang_all'): + config.excludes.append('Clang-Code-Syntax') + config.excludes.append('Clang-Code-Compile') + config.excludes.append('LLVM-Code-Syntax') + config.excludes.append('LLVM-Code-Compile') + config.excludes.append('LLVM-Code-Symbols') diff --git a/clang/utils/C++Tests/stdc++-Syntax/lit.local.cfg b/clang/utils/C++Tests/stdc++-Syntax/lit.local.cfg new file mode 100644 index 0000000..eb04866 --- /dev/null +++ b/clang/utils/C++Tests/stdc++-Syntax/lit.local.cfg @@ -0,0 +1,17 @@ +# -*- 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='/usr/include/c++/4.2.1', + recursive=False, + pattern='^(.*\\.h|[^.]*)$') + -- cgit v1.2.3