Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 1 | # -*- Python -*- |
| 2 | |
| 3 | import os |
| 4 | import platform |
| 5 | import re |
| 6 | import subprocess |
Michael J. Spencer | a4f983e | 2014-03-26 00:53:48 +0000 | [diff] [blame] | 7 | import locale |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 8 | |
Daniel Dunbar | bc7bfb1 | 2013-08-09 18:51:17 +0000 | [diff] [blame] | 9 | import lit.formats |
| 10 | import lit.util |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 11 | |
Zachary Turner | d4401d3 | 2017-09-18 22:26:48 +0000 | [diff] [blame] | 12 | from lit.llvm import llvm_config |
| 13 | |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 14 | # Configuration file for the 'lit' test runner. |
| 15 | |
| 16 | # name: The name of this test suite. |
| 17 | config.name = 'lld' |
| 18 | |
| 19 | # testFormat: The test format to use to interpret tests. |
| 20 | # |
| 21 | # For now we require '&&' between commands, until they get globally killed and |
| 22 | # the test runner updated. |
Zachary Turner | d4401d3 | 2017-09-18 22:26:48 +0000 | [diff] [blame] | 23 | config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell) |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 24 | |
| 25 | # suffixes: A list of file extensions to treat as test files. |
Reid Kleckner | 892d2a5 | 2017-06-26 16:42:44 +0000 | [diff] [blame] | 26 | config.suffixes = ['.ll', '.s', '.test', '.yaml', '.objtxt'] |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 27 | |
Rafael Espindola | c08ab8e | 2015-04-24 15:51:45 +0000 | [diff] [blame] | 28 | # excludes: A list of directories to exclude from the testsuite. The 'Inputs' |
| 29 | # subdirectories contain auxiliary inputs for various tests in their parent |
| 30 | # directories. |
| 31 | config.excludes = ['Inputs'] |
| 32 | |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 33 | # test_source_root: The root path where tests are located. |
| 34 | config.test_source_root = os.path.dirname(__file__) |
| 35 | |
Zachary Turner | ce92db1 | 2017-09-15 22:10:46 +0000 | [diff] [blame] | 36 | config.test_exec_root = os.path.join(config.lld_obj_root, 'test') |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 37 | |
Zachary Turner | 96b04b6 | 2017-10-06 17:54:46 +0000 | [diff] [blame] | 38 | llvm_config.use_default_substitutions() |
Zachary Turner | ad5997e | 2017-10-12 21:56:05 +0000 | [diff] [blame^] | 39 | llvm_config.use_lld() |
Pete Cooper | 80c9b94 | 2015-12-10 19:17:35 +0000 | [diff] [blame] | 40 | |
Zachary Turner | 0aa02c0 | 2017-09-21 22:16:40 +0000 | [diff] [blame] | 41 | tool_patterns = [ |
Zachary Turner | ad5997e | 2017-10-12 21:56:05 +0000 | [diff] [blame^] | 42 | 'llvm-as', 'llvm-mc', 'llvm-nm', |
| 43 | 'llvm-objdump', 'llvm-pdbutil', 'llvm-readobj', 'obj2yaml', 'yaml2obj'] |
Pete Cooper | 80c9b94 | 2015-12-10 19:17:35 +0000 | [diff] [blame] | 44 | |
Zachary Turner | ad5997e | 2017-10-12 21:56:05 +0000 | [diff] [blame^] | 45 | llvm_config.add_tool_substitutions(tool_patterns) |
Pete Cooper | 80c9b94 | 2015-12-10 19:17:35 +0000 | [diff] [blame] | 46 | |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 47 | # When running under valgrind, we mangle '-vg' onto the end of the triple so we |
| 48 | # can check it with XFAIL and XTARGET. |
Daniel Dunbar | bc7bfb1 | 2013-08-09 18:51:17 +0000 | [diff] [blame] | 49 | if lit_config.useValgrind: |
Michael J. Spencer | 773a8fb | 2011-12-18 08:27:59 +0000 | [diff] [blame] | 50 | config.target_triple += '-vg' |
| 51 | |
Nick Kledzik | 50bda29 | 2014-09-11 00:52:05 +0000 | [diff] [blame] | 52 | # Running on ELF based *nix |
Ed Maste | 933daef | 2014-09-12 13:16:30 +0000 | [diff] [blame] | 53 | if platform.system() in ['FreeBSD', 'Linux']: |
Nick Kledzik | 50bda29 | 2014-09-11 00:52:05 +0000 | [diff] [blame] | 54 | config.available_features.add('system-linker-elf') |
| 55 | |
NAKAMURA Takumi | c96ae0c | 2016-02-09 07:30:11 +0000 | [diff] [blame] | 56 | # Set if host-cxxabi's demangler can handle target's symbols. |
| 57 | if platform.system() not in ['Windows']: |
| 58 | config.available_features.add('demangler') |
| 59 | |
Zachary Turner | d4401d3 | 2017-09-18 22:26:48 +0000 | [diff] [blame] | 60 | llvm_config.feature_config( |
Zachary Turner | c981448 | 2017-10-06 17:54:27 +0000 | [diff] [blame] | 61 | [('--build-mode', {'DEBUG': 'debug'}), |
| 62 | ('--assertion-mode', {'ON': 'asserts'}), |
| 63 | ('--targets-built', {'AArch64': 'aarch64', |
| 64 | 'AMDGPU': 'amdgpu', |
| 65 | 'ARM': 'arm', |
| 66 | 'AVR': 'avr', |
| 67 | 'Mips': 'mips', |
| 68 | 'PowerPC': 'ppc', |
| 69 | 'Sparc': 'sparc', |
| 70 | 'X86': 'x86'}) |
| 71 | ]) |
Rui Ueyama | f23b27a | 2013-11-04 05:17:54 +0000 | [diff] [blame] | 72 | |
Rui Ueyama | 3da3f06 | 2016-11-10 20:20:37 +0000 | [diff] [blame] | 73 | # Set a fake constant version so that we get consitent output. |
| 74 | config.environment['LLD_VERSION'] = 'LLD 1.0' |
| 75 | |
Eric Beckmann | c8dba24 | 2017-07-08 03:06:10 +0000 | [diff] [blame] | 76 | # Indirectly check if the mt.exe Microsoft utility exists by searching for |
Eric Beckmann | 87c6acf | 2017-08-22 03:15:28 +0000 | [diff] [blame] | 77 | # cvtres, which always accompanies it. Alternatively, check if we can use |
| 78 | # libxml2 to merge manifests. |
| 79 | if (lit.util.which('cvtres', config.environment['PATH'])) or \ |
Zachary Turner | c981448 | 2017-10-06 17:54:27 +0000 | [diff] [blame] | 80 | (config.llvm_libxml2_enabled == '1'): |
Eric Beckmann | 87c6acf | 2017-08-22 03:15:28 +0000 | [diff] [blame] | 81 | config.available_features.add('manifest_tool') |
Eric Beckmann | 0aa4b7d | 2017-09-06 01:50:36 +0000 | [diff] [blame] | 82 | |
Zachary Turner | c981448 | 2017-10-06 17:54:27 +0000 | [diff] [blame] | 83 | if (config.llvm_libxml2_enabled == '1'): |
Eric Beckmann | 0aa4b7d | 2017-09-06 01:50:36 +0000 | [diff] [blame] | 84 | config.available_features.add('libxml2') |