forked from OSchip/llvm-project
[libunwind] Allow specifying custom Lit config files
This is the libunwind counterpart of 0c66af970c
.
This commit is contained in:
parent
33c9c10d18
commit
c55051eea5
|
@ -154,6 +154,8 @@ set(LIBUNWIND_TEST_LINKER_FLAGS "" CACHE STRING
|
|||
"Additional linker flags for test programs.")
|
||||
set(LIBUNWIND_TEST_COMPILER_FLAGS "" CACHE STRING
|
||||
"Additional compiler flags for test programs.")
|
||||
set(LIBUNWIND_TEST_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/test/lit.site.cfg.in" CACHE STRING
|
||||
"The Lit testing configuration to use when running the tests.")
|
||||
|
||||
if (NOT LIBUNWIND_ENABLE_SHARED AND NOT LIBUNWIND_ENABLE_STATIC)
|
||||
message(FATAL_ERROR "libunwind must be built as either a shared or static library.")
|
||||
|
|
|
@ -25,12 +25,11 @@ set(LIBUNWIND_EXECUTOR "${Python3_EXECUTABLE} ${LIBUNWIND_LIBCXX_PATH}/utils/run
|
|||
"Executor to use when running tests.")
|
||||
|
||||
set(AUTO_GEN_COMMENT "## Autogenerated by libunwind configuration.\n# Do not edit!")
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
|
||||
configure_lit_site_cfg(
|
||||
"${LIBUNWIND_TEST_CONFIG}"
|
||||
${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg
|
||||
@ONLY)
|
||||
MAIN_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py")
|
||||
|
||||
add_lit_testsuite(check-unwind "Running libunwind tests"
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS ${LIBUNWIND_TEST_DEPS}
|
||||
)
|
||||
DEPENDS ${LIBUNWIND_TEST_DEPS})
|
||||
|
|
|
@ -1,73 +0,0 @@
|
|||
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
|
||||
|
||||
# Configuration file for the 'lit' test runner.
|
||||
|
||||
|
||||
import os
|
||||
import site
|
||||
|
||||
site.addsitedir(os.path.dirname(__file__))
|
||||
|
||||
|
||||
# Tell pylint that we know config and lit_config exist somewhere.
|
||||
if 'PYLINT_IMPORT' in os.environ:
|
||||
config = object()
|
||||
lit_config = object()
|
||||
|
||||
# name: The name of this test suite.
|
||||
config.name = 'libunwind'
|
||||
|
||||
# suffixes: A list of file extensions to treat as test files.
|
||||
config.suffixes = ['.cpp', '.s']
|
||||
|
||||
# test_source_root: The root path where tests are located.
|
||||
config.test_source_root = os.path.dirname(__file__)
|
||||
|
||||
# Infer the libcxx_test_source_root for configuration import.
|
||||
# If libcxx_source_root isn't specified in the config, assume that the libcxx
|
||||
# and libunwind source directories are sibling directories.
|
||||
libcxx_src_root = getattr(config, 'libcxx_src_root', None)
|
||||
if not libcxx_src_root:
|
||||
libcxx_src_root = os.path.join(config.test_source_root, '../../libcxx')
|
||||
libcxx_test_src_root = os.path.join(libcxx_src_root, 'utils')
|
||||
if os.path.isfile(os.path.join(libcxx_test_src_root, 'libcxx', '__init__.py')):
|
||||
site.addsitedir(libcxx_test_src_root)
|
||||
else:
|
||||
lit_config.fatal('Could not find libcxx test directory for test imports'
|
||||
' in: %s' % libcxx_test_src_root)
|
||||
|
||||
# Infer the test_exec_root from the libcxx_object root.
|
||||
obj_root = getattr(config, 'libunwind_obj_root', None)
|
||||
|
||||
# Check that the test exec root is known.
|
||||
if obj_root is None:
|
||||
import libcxx.test.config
|
||||
libcxx.test.config.loadSiteConfig(
|
||||
lit_config, config, 'libunwind_site_config', 'LIBUNWIND_SITE_CONFIG')
|
||||
obj_root = getattr(config, 'libunwind_obj_root', None)
|
||||
if obj_root is None:
|
||||
import tempfile
|
||||
obj_root = tempfile.mkdtemp(prefix='libunwind-testsuite-')
|
||||
lit_config.warning('Creating temporary directory for object root: %s' %
|
||||
obj_root)
|
||||
|
||||
config.test_exec_root = os.path.join(obj_root, 'test')
|
||||
|
||||
cfg_variant = getattr(config, 'configuration_variant', 'libunwind')
|
||||
if cfg_variant:
|
||||
lit_config.note('Using configuration variant: %s' % cfg_variant)
|
||||
|
||||
# Load the Configuration class from the module name <cfg_variant>.test.config.
|
||||
config_module_name = '.'.join([cfg_variant, 'test', 'config'])
|
||||
config_module = __import__(config_module_name, fromlist=['Configuration'])
|
||||
|
||||
configuration = config_module.Configuration(lit_config, config)
|
||||
configuration.configure()
|
||||
configuration.print_config_info()
|
||||
if lit_config.params.get('use_old_format', False):
|
||||
lit_config.note("Using the old libc++ testing format")
|
||||
config.test_format = configuration.get_test_format()
|
||||
else:
|
||||
lit_config.note("Using the new libc++ testing format")
|
||||
import libcxx.test.newformat
|
||||
config.test_format = libcxx.test.newformat.CxxStandardLibraryTest()
|
|
@ -0,0 +1,10 @@
|
|||
# All the Lit configuration is handled in the site configs -- this file is only
|
||||
# left as a canary to catch invocations of Lit that do not go through llvm-lit.
|
||||
#
|
||||
# Invocations that go through llvm-lit will automatically use the right Lit
|
||||
# site configuration inside the build directory.
|
||||
|
||||
lit_config.fatal(
|
||||
"You seem to be running Lit directly -- you should be running Lit through "
|
||||
"<build>/bin/llvm-lit, which will ensure that the right Lit configuration "
|
||||
"file is used.")
|
|
@ -1,4 +1,8 @@
|
|||
@AUTO_GEN_COMMENT@
|
||||
|
||||
import os
|
||||
import site
|
||||
|
||||
config.cxx_under_test = "@LIBUNWIND_COMPILER@"
|
||||
config.project_obj_root = "@CMAKE_BINARY_DIR@"
|
||||
config.libunwind_src_root = "@LIBUNWIND_SOURCE_DIR@"
|
||||
|
@ -26,5 +30,33 @@ config.sysroot = "@LIBUNWIND_SYSROOT@"
|
|||
config.gcc_toolchain = "@LIBUNWIND_GCC_TOOLCHAIN@"
|
||||
config.cxx_ext_threads = @LIBUNWIND_BUILD_EXTERNAL_THREAD_LIBRARY@
|
||||
|
||||
# Let the main config do the real work.
|
||||
lit_config.load_config(config, "@LIBUNWIND_SOURCE_DIR@/test/lit.cfg")
|
||||
site.addsitedir(os.path.join(config.libunwind_src_root, 'test'))
|
||||
site.addsitedir(os.path.join(config.libcxx_src_root, 'utils'))
|
||||
|
||||
# name: The name of this test suite.
|
||||
config.name = 'libunwind'
|
||||
|
||||
# suffixes: A list of file extensions to treat as test files.
|
||||
config.suffixes = ['.cpp', '.s']
|
||||
|
||||
# test_source_root: The root path where tests are located.
|
||||
config.test_source_root = os.path.join(config.libunwind_src_root, 'test')
|
||||
|
||||
# Allow expanding substitutions that are based on other substitutions
|
||||
config.recursiveExpansionLimit = 10
|
||||
|
||||
# Infer the test_exec_root from the build directory.
|
||||
config.test_exec_root = os.path.join(config.libunwind_obj_root, 'test')
|
||||
|
||||
lit_config.note('Using configuration variant: libunwind')
|
||||
import libunwind.test.config
|
||||
configuration = libunwind.test.config.Configuration(lit_config, config)
|
||||
configuration.configure()
|
||||
configuration.print_config_info()
|
||||
if lit_config.params.get('use_old_format', False):
|
||||
lit_config.note("Using the old libc++ testing format")
|
||||
config.test_format = configuration.get_test_format()
|
||||
else:
|
||||
lit_config.note("Using the new libc++ testing format")
|
||||
import libcxx.test.newformat
|
||||
config.test_format = libcxx.test.newformat.CxxStandardLibraryTest()
|
||||
|
|
Loading…
Reference in New Issue