llvm-project

Форк
0
/
lit.cfg.py 
173 строки · 5.0 Кб
1
# -*- Python -*-
2

3
import os
4
import platform
5
import re
6
import subprocess
7
import locale
8

9
import lit.formats
10
import lit.util
11

12
from lit.llvm import llvm_config
13

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 the test runner updated.
22
config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
23

24
# suffixes: A list of file extensions to treat as test files.
25
config.suffixes = [".ll", ".s", ".test", ".yaml", ".objtxt"]
26

27
# excludes: A list of directories to exclude from the testsuite. The 'Inputs'
28
# subdirectories contain auxiliary inputs for various tests in their parent
29
# directories.
30
config.excludes = ["Inputs"]
31

32
# test_source_root: The root path where tests are located.
33
config.test_source_root = os.path.dirname(__file__)
34

35
config.test_exec_root = os.path.join(config.lld_obj_root, "test")
36

37
llvm_config.use_default_substitutions()
38
llvm_config.use_lld()
39

40
tool_patterns = [
41
    "llc",
42
    "llvm-as",
43
    "llvm-mc",
44
    "llvm-nm",
45
    "llvm-objdump",
46
    "llvm-otool",
47
    "llvm-pdbutil",
48
    "llvm-profdata",
49
    "llvm-dwarfdump",
50
    "llvm-readelf",
51
    "llvm-readobj",
52
    "obj2yaml",
53
    "yaml2obj",
54
    "opt",
55
    "llvm-dis",
56
]
57

58
llvm_config.add_tool_substitutions(tool_patterns)
59

60
# LLD tests tend to be flaky on NetBSD, so add some retries.
61
# We don't do this on other platforms because it's slower.
62
if platform.system() in ["NetBSD"]:
63
    config.test_retry_attempts = 2
64

65
# When running under valgrind, we mangle '-vg' onto the end of the triple so we
66
# can check it with XFAIL and XTARGET.
67
if lit_config.useValgrind:
68
    config.target_triple += "-vg"
69

70
llvm_config.feature_config(
71
    [
72
        (
73
            "--targets-built",
74
            {
75
                "AArch64": "aarch64",
76
                "AMDGPU": "amdgpu",
77
                "ARM": "arm",
78
                "AVR": "avr",
79
                "Hexagon": "hexagon",
80
                "LoongArch": "loongarch",
81
                "Mips": "mips",
82
                "MSP430": "msp430",
83
                "PowerPC": "ppc",
84
                "RISCV": "riscv",
85
                "Sparc": "sparc",
86
                "SystemZ": "systemz",
87
                "WebAssembly": "wasm",
88
                "X86": "x86",
89
            },
90
        ),
91
        ("--assertion-mode", {"ON": "asserts"}),
92
    ]
93
)
94

95
# Set a fake constant version so that we get consistent output.
96
config.environment["LLD_VERSION"] = "LLD 1.0"
97

98
# LLD_IN_TEST determines how many times `main` is run inside each process, which
99
# lets us test that it's cleaning up after itself and resetting global state
100
# correctly (which is important for usage as a library).
101
run_lld_main_twice = lit_config.params.get("RUN_LLD_MAIN_TWICE", False)
102
if not run_lld_main_twice:
103
    config.environment["LLD_IN_TEST"] = "1"
104
else:
105
    config.environment["LLD_IN_TEST"] = "2"
106
    # Many ELF tests fail in this mode.
107
    config.excludes.append("ELF")
108
    # Some old Mach-O backend tests fail, and it's due for removal anyway.
109
    config.excludes.append("mach-o")
110
    # Some new Mach-O backend tests fail; give them a way to mark themselves
111
    # unsupported in this mode.
112
    config.available_features.add("main-run-twice")
113

114
# Indirectly check if the mt.exe Microsoft utility exists by searching for
115
# cvtres, which always accompanies it.  Alternatively, check if we can use
116
# libxml2 to merge manifests.
117
if lit.util.which("cvtres", config.environment["PATH"]) or config.have_libxml2:
118
    config.available_features.add("manifest_tool")
119

120
if config.enable_backtrace:
121
    config.available_features.add("backtrace")
122

123
if config.have_libxml2:
124
    config.available_features.add("libxml2")
125

126
if config.have_dia_sdk:
127
    config.available_features.add("diasdk")
128

129
if config.sizeof_void_p == 8:
130
    config.available_features.add("llvm-64-bits")
131

132
if config.has_plugins:
133
    config.available_features.add("plugins")
134

135
if config.build_examples:
136
    config.available_features.add("examples")
137

138
if config.linked_bye_extension:
139
    config.substitutions.append(("%loadbye", ""))
140
    config.substitutions.append(("%loadnewpmbye", ""))
141
else:
142
    config.substitutions.append(
143
        (
144
            "%loadbye",
145
            "-load={}/Bye{}".format(config.llvm_shlib_dir, config.llvm_shlib_ext),
146
        )
147
    )
148
    config.substitutions.append(
149
        (
150
            "%loadnewpmbye",
151
            "-load-pass-plugin={}/Bye{}".format(
152
                config.llvm_shlib_dir, config.llvm_shlib_ext
153
            ),
154
        )
155
    )
156

157
tar_executable = lit.util.which("tar", config.environment["PATH"])
158
if tar_executable:
159
    env = os.environ
160
    env["LANG"] = "C"
161
    tar_version = subprocess.Popen(
162
        [tar_executable, "--version"],
163
        stdout=subprocess.PIPE,
164
        stderr=subprocess.PIPE,
165
        env=env,
166
    )
167
    sout, _ = tar_version.communicate()
168
    if "GNU tar" in sout.decode():
169
        config.available_features.add("gnutar")
170

171
# ELF tests expect the default target for ld.lld to be ELF.
172
if config.ld_lld_default_mingw:
173
    config.excludes.append("ELF")
174

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.