forked from OSchip/llvm-project
99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
# -*- Python -*-
|
|
|
|
import os
|
|
import re
|
|
import shutil
|
|
import site
|
|
import sys
|
|
|
|
import lit.formats
|
|
from lit.llvm import llvm_config
|
|
from lit.llvm.subst import FindTool
|
|
from lit.llvm.subst import ToolSubst
|
|
|
|
site.addsitedir(os.path.dirname(__file__))
|
|
from helper import toolchain
|
|
|
|
# name: The name of this test suite.
|
|
config.name = 'LLDB'
|
|
|
|
# testFormat: The test format to use to interpret tests.
|
|
config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
|
|
|
|
# suffixes: A list of file extensions to treat as test files. This is overriden
|
|
# by individual lit.local.cfg files in the test subdirectories.
|
|
config.suffixes = ['.test', '.cpp', '.s']
|
|
|
|
# excludes: A list of directories to exclude from the testsuite. The 'Inputs'
|
|
# subdirectories contain auxiliary inputs for various tests in their parent
|
|
# directories.
|
|
config.excludes = ['Inputs', 'CMakeLists.txt', 'README.txt', 'LICENSE.txt']
|
|
|
|
# test_source_root: The root path where tests are located.
|
|
config.test_source_root = os.path.dirname(__file__)
|
|
|
|
# test_exec_root: The root path where tests should be run.
|
|
config.test_exec_root = os.path.join(config.lldb_obj_root, 'lit')
|
|
|
|
|
|
llvm_config.use_default_substitutions()
|
|
|
|
toolchain.use_lldb_substitutions(config)
|
|
|
|
toolchain.use_support_substitutions(config)
|
|
|
|
|
|
if re.match(r'^arm(hf.*-linux)|(.*-linux-gnuabihf)', config.target_triple):
|
|
config.available_features.add("armhf-linux")
|
|
|
|
def calculate_arch_features(arch_string):
|
|
# This will add a feature such as x86, arm, mips, etc for each built
|
|
# target
|
|
features = []
|
|
for arch in arch_string.split():
|
|
features.append(arch.lower())
|
|
return features
|
|
|
|
# Run llvm-config and add automatically add features for whether we have
|
|
# assertions enabled, whether we are in debug mode, and what targets we
|
|
# are built for.
|
|
llvm_config.feature_config(
|
|
[('--assertion-mode', {'ON': 'asserts'}),
|
|
('--build-mode', {'DEBUG': 'debug'}),
|
|
('--targets-built', calculate_arch_features)
|
|
])
|
|
|
|
# Clean the module caches in the test build directory. This is
|
|
# necessary in an incremental build whenever clang changes underneath,
|
|
# so doing it once per lit.py invocation is close enough.
|
|
|
|
for i in ['module-cache-clang', 'module-cache-lldb']:
|
|
cachedir = os.path.join(config.lldb_libs_dir, '..',
|
|
'lldb-test-build.noindex', i)
|
|
if os.path.isdir(cachedir):
|
|
print("Deleting module cache at %s."%cachedir)
|
|
shutil.rmtree(cachedir)
|
|
|
|
# Set a default per-test timeout of 10 minutes. Setting a timeout per test
|
|
# requires the psutil module and lit complains if the value is set but the
|
|
# module can't be found.
|
|
try:
|
|
import psutil # noqa: F401
|
|
lit_config.maxIndividualTestTime = 600
|
|
except ImportError:
|
|
pass
|
|
|
|
# If running tests natively, check for CPU features needed for some tests.
|
|
|
|
if 'native' in config.available_features:
|
|
cpuid_exe = lit.util.which('lit-cpuid', config.lldb_tools_dir)
|
|
if cpuid_exe is None:
|
|
lit_config.warning("lit-cpuid not found, tests requiring CPU extensions will be skipped")
|
|
else:
|
|
out, err, exitcode = lit.util.executeCommand([cpuid_exe])
|
|
if exitcode == 0:
|
|
for x in out.split():
|
|
config.available_features.add('native-cpu-%s' % x)
|
|
else:
|
|
lit_config.warning("lit-cpuid failed: %s" % err)
|