blob: 75c59c756877b7576c2f567228cd6ade0440b772 [file] [log] [blame]
# -*- Python -*-
import platform
import os
import lit.formats
# Configuration file for the 'lit' test runner.
###
# Retrieve expected values from lit.site.cfg
llbuild_src_root = getattr(config, 'llbuild_src_root', None)
if llbuild_src_root is None:
lit_config.fatal("missing 'llbuild_src_root' key in site specific config")
llbuild_obj_root = getattr(config, 'llbuild_obj_root', None)
if llbuild_obj_root is None:
lit_config.fatal("missing 'llbuild_obj_root' key in site specific config")
llbuild_tools_dir = getattr(config, 'llbuild_tools_dir', None)
if llbuild_tools_dir is None:
lit_config.fatal("missing 'llbuild_tools_dir' key in site specific config")
llbuild_lib_dir = getattr(config, 'llbuild_lib_dir', None)
if llbuild_lib_dir is None:
lit_config.fatal("missing 'llbuild_lib_dir' key in site specific config")
llbuild_src_root = os.path.normpath(llbuild_src_root)
llbuild_obj_root = os.path.normpath(llbuild_obj_root)
llbuild_tools_dir = os.path.normpath(llbuild_tools_dir)
llbuild_lib_dir = os.path.normpath(llbuild_lib_dir)
###
# Basic Configuration Parameters
# name: The name of this test suite.
config.name = 'llbuild'
# testFormat: The test format to use to interpret tests.
config.test_format = lit.formats.ShTest(execute_external = False)
# suffixes: A list of file extensions to treat as test files.
#
# We override this in specific subdirectories to change what we test.
config.suffixes = []
# 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']
# test_source_root: The root path where tests are located.
config.test_source_root = os.path.join(llbuild_src_root, 'tests')
# test_source_root: The root path where tests are executing.
config.test_exec_root = os.path.join(llbuild_obj_root, 'tests')
# We don't make use of this yet.
#
# FIXME: This is pretty compiler specific and probably should just be ripped out
# of lit.
config.target_triple = ""
###
# Add a platform feature.
config.available_features.add("platform="+platform.system())
if platform.system() == 'Linux':
with open('/proc/version') as version:
if 'Microsoft' in version.read():
config.available_features.add('windows_subsystem_linux')
# Add swiftc feature.
config.available_features.add("has-swift="+config.swiftc_found)
###
# Define our supported substitutions.
config.substitutions.append( ('%{llbuild}', "%r" % (
os.path.join(llbuild_tools_dir, 'llbuild'),)) )
config.substitutions.append( ('%{swift-build-tool}', "%r" % (
os.path.join(llbuild_tools_dir, 'swift-build-tool'),)) )
config.substitutions.append( ('%{FileCheck}', config.filecheck_path) )
config.substitutions.append( ('%{swiftc}', config.swiftc_path) )
config.substitutions.append( ('%{llbuild-lib-dir}', llbuild_lib_dir) )
config.substitutions.append( ('%{srcroot}', llbuild_src_root) )
config.substitutions.append( ('%{swiftc-platform-flags}', "" if not config.osx_sysroot else "-sdk " + config.osx_sysroot) )
config.substitutions.append( ('%{build-dir}', llbuild_obj_root) )
###
# Always propagate HOME.
config.environment["HOME"] = os.environ.get("HOME", "")
# Propagate LLVM_PROFILE_FILE if used.
llvm_profile_file = os.environ.get("LLVM_PROFILE_FILE")
if llvm_profile_file:
config.environment["LLVM_PROFILE_FILE"] = llvm_profile_file
# Protected against unquoted use of substitutions.
for name in ('llbuild', 'FileCheck'):
config.substitutions.append((' {0} '.format(name),
' unquoted-command-name-{0} '.format(name)))