blob: 27f4666a4a42a7081f29f2aa5150d669f2dffe6f [file] [log] [blame] [edit]
# -*- Python -*-
import shlex
import lit.util
from lit.llvm import llvm_config
from lit.llvm.subst import ToolSubst, FindTool
def shjoin(args, sep=" "):
return sep.join([shlex.quote(arg) for arg in args])
# Configuration file for the 'lit' test runner.
# name: The name of this test suite.
config.name = "flang-rt"
# testFormat: The test format to use to interpret tests.
#
# For now we require '&&' between commands, until they get globally killed and
# the test runner updated.
config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
# suffixes: A list of file extensions to treat as test files.
config.suffixes = [
".c",
".cpp",
".f",
".F",
".ff",
".FOR",
".for",
".f77",
".f90",
".F90",
".ff90",
".f95",
".F95",
".ff95",
".fpp",
".FPP",
".cuf",
".CUF",
".f18",
".F18",
".f03",
".F03",
".f08",
".F08",
".ll",
".fir",
".mlir",
]
llvm_config.use_default_substitutions()
# 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.
# lit writes a '.lit_test_times.txt' file into this directory.
config.test_exec_root = config.flang_rt_binary_test_dir
# On MacOS, some tests need -isysroot to build binaries.
isysroot_flag = []
if config.osx_sysroot:
isysroot_flag = ["-isysroot", config.osx_sysroot]
config.substitutions.append(("%isysroot", " ".join(isysroot_flag)))
tools = [
ToolSubst(
"%flang",
command=config.flang,
unresolved="fatal",
),
ToolSubst(
"%clang",
command=FindTool("clang"),
unresolved="fatal",
),
ToolSubst("%cc", command=config.cc, unresolved="fatal"),
]
llvm_config.add_tool_substitutions(tools)
# Let tests find LLVM's standard tools (FileCheck, split-file, not, ...)
llvm_config.with_environment("PATH", config.llvm_tools_dir, append_path=True)
# Include path for C headers that define Flang's Fortran ABI.
config.substitutions.append(
("%include", os.path.join(config.flang_source_dir, "include"))
)
# Library path of libflang_rt.runtime.a/.so (for lib search path when using non-Flang driver for linking and LD_LIBRARY_PATH)
config.substitutions.append(("%libdir", config.flang_rt_output_resource_lib_dir))
# For CUDA offloading, additional steps (device linking) and libraries (cudart) are needed.
if config.flang_rt_experimental_offload_support == "CUDA":
config.available_features.add("offload-cuda")