xref: /llvm-project/compiler-rt/unittests/lit.common.unit.cfg.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
1# -*- Python -*-
2
3# Configuration file for 'lit' test runner.
4# This file contains common config setup rules for unit tests in various
5# compiler-rt testsuites.
6
7import os
8
9import lit.formats
10
11# Copied from libcxx's config.py
12def get_lit_conf(name, default=None):
13    # Allow overriding on the command line using --param=<name>=<val>
14    val = lit_config.params.get(name, None)
15    if val is None:
16        val = getattr(config, name, None)
17        if val is None:
18            val = default
19    return val
20
21
22emulator = get_lit_conf("emulator", None)
23
24# Setup test format
25llvm_build_mode = getattr(config, "llvm_build_mode", "Debug")
26config.test_format = lit.formats.GoogleTest(llvm_build_mode, "Test", emulator)
27
28# Setup test suffixes.
29config.suffixes = []
30
31# Tweak PATH to include llvm tools dir.
32llvm_tools_dir = config.llvm_tools_dir
33if (not llvm_tools_dir) or (not os.path.exists(llvm_tools_dir)):
34    lit_config.fatal("Invalid llvm_tools_dir config attribute: %r" % llvm_tools_dir)
35path = os.path.pathsep.join((llvm_tools_dir, config.environment["PATH"]))
36config.environment["PATH"] = path
37
38# Propagate the temp directory. Windows requires this because it uses \Windows\
39# if none of these are present.
40if "TMP" in os.environ:
41    config.environment["TMP"] = os.environ["TMP"]
42if "TEMP" in os.environ:
43    config.environment["TEMP"] = os.environ["TEMP"]
44
45if config.host_os == "Darwin":
46    # Only run up to 3 processes that require shadow memory simultaneously on
47    # 64-bit Darwin. Using more scales badly and hogs the system due to
48    # inefficient handling of large mmap'd regions (terabytes) by the kernel.
49    lit_config.parallelism_groups["shadow-memory"] = 3
50
51    # Disable libmalloc nano allocator due to crashes running on macOS 12.0.
52    # rdar://80086125
53    config.environment["MallocNanoZone"] = "0"
54
55    # We crash when we set DYLD_INSERT_LIBRARIES for unit tests, so interceptors
56    # don't work.
57    config.environment["ASAN_OPTIONS"] = "verify_interceptors=0"
58    config.environment["TSAN_OPTIONS"] = "verify_interceptors=0"
59