Jeffrey Yasskin | c7da993 | 2011-02-03 04:51:52 +0000 | [diff] [blame] | 1 | # -*- Python -*- |
| 2 | |
| 3 | # Configuration file for the 'lit' test runner. |
| 4 | |
| 5 | import os |
Dmitri Gribenko | 1bf8d91 | 2014-02-18 15:20:02 +0000 | [diff] [blame] | 6 | import platform |
David L. Jones | d4053fb | 2017-07-06 21:46:47 +0000 | [diff] [blame] | 7 | import subprocess |
Jeffrey Yasskin | c7da993 | 2011-02-03 04:51:52 +0000 | [diff] [blame] | 8 | |
Daniel Dunbar | 94ec6cc | 2013-08-09 14:43:04 +0000 | [diff] [blame] | 9 | import lit.formats |
| 10 | import lit.util |
| 11 | |
Jeffrey Yasskin | c7da993 | 2011-02-03 04:51:52 +0000 | [diff] [blame] | 12 | # name: The name of this test suite. |
| 13 | config.name = 'Clang-Unit' |
| 14 | |
| 15 | # suffixes: A list of file extensions to treat as test files. |
| 16 | config.suffixes = [] |
| 17 | |
| 18 | # test_source_root: The root path where tests are located. |
| 19 | # test_exec_root: The root path where tests should be run. |
Zachary Turner | ce92db1 | 2017-09-15 22:10:46 +0000 | [diff] [blame] | 20 | config.test_exec_root = os.path.join(config.clang_obj_root, 'unittests') |
| 21 | config.test_source_root = config.test_exec_root |
Jeffrey Yasskin | c7da993 | 2011-02-03 04:51:52 +0000 | [diff] [blame] | 22 | |
| 23 | # testFormat: The test format to use to interpret tests. |
Zachary Turner | ce92db1 | 2017-09-15 22:10:46 +0000 | [diff] [blame] | 24 | config.test_format = lit.formats.GoogleTest(config.llvm_build_mode, 'Tests') |
Jeffrey Yasskin | c7da993 | 2011-02-03 04:51:52 +0000 | [diff] [blame] | 25 | |
| 26 | # Propagate the temp directory. Windows requires this because it uses \Windows\ |
| 27 | # if none of these are present. |
| 28 | if 'TMP' in os.environ: |
| 29 | config.environment['TMP'] = os.environ['TMP'] |
| 30 | if 'TEMP' in os.environ: |
| 31 | config.environment['TEMP'] = os.environ['TEMP'] |
| 32 | |
Alexey Samsonov | c01f4f0 | 2013-04-04 07:41:20 +0000 | [diff] [blame] | 33 | # Propagate path to symbolizer for ASan/MSan. |
| 34 | for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']: |
| 35 | if symbolizer in os.environ: |
| 36 | config.environment[symbolizer] = os.environ[symbolizer] |
| 37 | |
Tim Shen | cc5bf00 | 2017-10-24 03:11:02 +0000 | [diff] [blame] | 38 | def find_shlibpath_var(): |
Fedor Sergeev | 2dfdfa2 | 2017-11-27 13:33:19 +0000 | [diff] [blame] | 39 | if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']: |
Tim Shen | cc5bf00 | 2017-10-24 03:11:02 +0000 | [diff] [blame] | 40 | yield 'LD_LIBRARY_PATH' |
| 41 | elif platform.system() == 'Darwin': |
| 42 | yield 'DYLD_LIBRARY_PATH' |
| 43 | elif platform.system() == 'Windows': |
| 44 | yield 'PATH' |
Hubert Tong | 5dc6a73 | 2019-03-29 23:33:04 +0000 | [diff] [blame] | 45 | elif platform.system() == 'AIX': |
| 46 | yield 'LIBPATH' |
Dmitri Gribenko | 1bf8d91 | 2014-02-18 15:20:02 +0000 | [diff] [blame] | 47 | |
Tim Shen | cc5bf00 | 2017-10-24 03:11:02 +0000 | [diff] [blame] | 48 | for shlibpath_var in find_shlibpath_var(): |
| 49 | # in stand-alone builds, shlibdir is clang's build tree |
| 50 | # while llvm_libs_dir is installed LLVM (and possibly older clang) |
| 51 | shlibpath = os.path.pathsep.join( |
| 52 | (config.shlibdir, |
| 53 | config.llvm_libs_dir, |
| 54 | config.environment.get(shlibpath_var, ''))) |
| 55 | config.environment[shlibpath_var] = shlibpath |
| 56 | break |
| 57 | else: |
| 58 | lit_config.warning("unable to inject shared library path on '{}'" |
| 59 | .format(platform.system())) |