forked from OSchip/llvm-project
78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
# -*- Python -*-
|
|
|
|
# Configuration file for the 'lit' test runner.
|
|
|
|
import os
|
|
import platform
|
|
import shlex
|
|
|
|
import lit.formats
|
|
|
|
# name: The name of this test suite.
|
|
config.name = 'lldb-Suite'
|
|
|
|
# suffixes: A list of file extensions to treat as test files.
|
|
config.suffixes = ['.py']
|
|
|
|
# test_source_root: The root path where tests are located.
|
|
# test_exec_root: The root path where tests should be run.
|
|
config.test_source_root = os.path.join(config.lldb_src_root, 'packages',
|
|
'Python', 'lldbsuite', 'test')
|
|
config.test_exec_root = config.test_source_root
|
|
|
|
# macOS flags needed for LLDB built with address sanitizer.
|
|
if 'Address' in config.llvm_use_sanitizer and \
|
|
'Darwin' in config.host_os and \
|
|
'x86' in config.host_triple:
|
|
import subprocess
|
|
resource_dir = subprocess.check_output(
|
|
config.cmake_cxx_compiler +' -print-resource-dir', shell=True).strip()
|
|
runtime = os.path.join(resource_dir, 'lib', 'darwin',
|
|
'libclang_rt.asan_osx_dynamic.dylib')
|
|
config.environment['ASAN_OPTIONS'] = \
|
|
'detect_stack_use_after_return=1'
|
|
config.environment['DYLD_INSERT_LIBRARIES'] = runtime
|
|
|
|
# Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent.
|
|
def find_shlibpath_var():
|
|
if platform.system() in ['Linux', 'FreeBSD', 'NetBSD', 'SunOS']:
|
|
yield 'LD_LIBRARY_PATH'
|
|
elif platform.system() == 'Darwin':
|
|
yield 'DYLD_LIBRARY_PATH'
|
|
elif platform.system() == 'Windows':
|
|
yield 'PATH'
|
|
|
|
for shlibpath_var in find_shlibpath_var():
|
|
# In stand-alone build llvm_shlib_dir specifies LLDB's lib directory
|
|
# while llvm_libs_dir specifies LLVM's lib directory.
|
|
shlibpath = os.path.pathsep.join(
|
|
(config.llvm_shlib_dir,
|
|
config.llvm_libs_dir,
|
|
config.environment.get(shlibpath_var, '')))
|
|
config.environment[shlibpath_var] = shlibpath
|
|
break
|
|
else:
|
|
lit_config.warning("unable to inject shared library path on '{}'"
|
|
.format(platform.system()))
|
|
|
|
# Build dotest command.
|
|
dotest_cmd = [config.dotest_path, '-q']
|
|
dotest_cmd.extend(config.dotest_args_str.split(';'))
|
|
|
|
# We don't want to force users passing arguments to lit to use `;` as a
|
|
# separator. We use Python's simple lexical analyzer to turn the args into a
|
|
# list.
|
|
if config.dotest_lit_args_str:
|
|
dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
|
|
|
|
# Library path may be needed to locate just-built clang.
|
|
if config.llvm_libs_dir:
|
|
dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir]
|
|
|
|
# Load LLDB test format.
|
|
sys.path.append(os.path.join(config.lldb_src_root, "lit", "Suite"))
|
|
import lldbtest
|
|
|
|
# testFormat: The test format to use to interpret tests.
|
|
config.test_format = lldbtest.LLDBTest(dotest_cmd)
|