# [PR18856] Depends to remove opened file. On win32, a file could be removed # only if all handles were closed. if platform.system() not in ['Windows']: config.available_features.add('can-remove-opened-file') def calculate_arch_features(arch_string): features = [] for arch in arch_string.split(): features.append(arch.lower() + '-registered-target') return features llvm_config.feature_config( [('--assertion-mode', {'ON': 'asserts'}), ('--cxxflags', {r'-D_GLIBCXX_DEBUG\b': 'libstdcxx-safe-mode'}), ('--targets-built', calculate_arch_features) ]) if lit.util.which('xmllint'): config.available_features.add('xmllint') if config.enable_backtrace: config.available_features.add('backtrace') # Check if we should allow outputs to console. run_console_tests = int(lit_config.params.get('enable_console', '0')) if run_console_tests != 0: config.available_features.add('console') lit.util.usePlatformSdkOnDarwin(config, lit_config)
# Running on ELF based *nix if platform.system() in ['FreeBSD', 'Linux']: config.available_features.add('system-linker-elf') # Set if host-cxxabi's demangler can handle target's symbols. if platform.system() not in ['Windows']: config.available_features.add('demangler') llvm_config.feature_config( [('--build-mode', {'DEBUG': 'debug'}), ('--assertion-mode', {'ON': 'asserts'}), ('--targets-built', {'AArch64': 'aarch64', 'AMDGPU': 'amdgpu', 'ARM': 'arm', 'AVR': 'avr', 'Mips': 'mips', 'PowerPC': 'ppc', 'Sparc': 'sparc', 'WebAssembly': 'wasm', 'X86': 'x86'}) ]) # Set a fake constant version so that we get consistent output. config.environment['LLD_VERSION'] = 'LLD 1.0' config.environment['LLD_IN_TEST'] = '1' # Indirectly check if the mt.exe Microsoft utility exists by searching for # cvtres, which always accompanies it. Alternatively, check if we can use # libxml2 to merge manifests. if (lit.util.which('cvtres', config.environment['PATH'])) or \
[config.ld64_executable, '-v'], stderr=subprocess.PIPE) ld_out = ld_cmd.stderr.read().decode() ld_cmd.wait() if 'ld64' not in ld_out or 'LTO' not in ld_out: return False return True if have_ld64_plugin_support(): config.available_features.add('ld64_plugin') # Ask llvm-config about asserts and global-isel. llvm_config.feature_config( [('--assertion-mode', {'ON': 'asserts'}), ('--has-global-isel', {'ON': 'global-isel'})]) if 'darwin' == sys.platform: try: sysctl_cmd = subprocess.Popen(['sysctl', 'hw.optional.fma'], stdout=subprocess.PIPE) except OSError: print('Could not exec sysctl') result = sysctl_cmd.stdout.read().decode('ascii') if -1 != result.find('hw.optional.fma: 1'): config.available_features.add('fma3') sysctl_cmd.wait() # .debug_frame is not emitted for targeting Windows x64. if not re.match(r'^x86_64.*-(windows-gnu|windows-msvc)', config.target_triple):
if re.match(r'^arm(hf.*-linux)|(.*-linux-gnuabihf)', config.target_triple): config.available_features.add("armhf-linux") def calculate_arch_features(arch_string): # This will add a feature such as x86, arm, mips, etc for each built # target features = [] for arch in arch_string.split(): features.append(arch.lower()) return features # Run llvm-config and add automatically add features for whether we have # assertions enabled, whether we are in debug mode, and what targets we # are built for. llvm_config.feature_config( [('--assertion-mode', {'ON': 'asserts'}), ('--build-mode', {'DEBUG': 'debug'}), ('--targets-built', calculate_arch_features) ]) # Clean the module caches in the test build directory. This is # necessary in an incremental build whenever clang changes underneath, # so doing it once per lit.py invocation is close enough. for i in ['module-cache-clang', 'module-cache-lldb']: cachedir = os.path.join(config.lldb_libs_dir, '..', 'lldb-test-build.noindex', i) if os.path.isdir(cachedir): print("Deleting module cache at %s."%cachedir) shutil.rmtree(cachedir)
llvm_config.with_environment('PATHTOCLANG', add_host_triple(llvm_config.config.clang)) llvm_config.with_environment( 'PATHTOCLANGPP', add_host_triple(llvm_config.use_llvm_tool('clang++'))) llvm_config.with_environment( 'PATHTOCLANGCL', add_host_triple(llvm_config.use_llvm_tool('clang-cl'))) else: print('Host triple {} not supported. Skipping dexter tests in the ' 'debuginfo-tests project.'.format(config.host_triple)) tool_dirs = [config.llvm_tools_dir] llvm_config.add_tool_substitutions(tools, tool_dirs) lit.util.usePlatformSdkOnDarwin(config, lit_config) if platform.system() == 'Darwin': xcode_lldb_vers = subprocess.check_output(['xcrun', 'lldb', '--version']).decode("utf-8") match = re.search('lldb-(\d+)', xcode_lldb_vers) if match: apple_lldb_vers = int(match.group(1)) if apple_lldb_vers < 1000: config.available_features.add('apple-lldb-pre-1000') llvm_config.feature_config([('--build-mode', { 'Debug|RelWithDebInfo': 'debug-info' })])
def calculate_arch_features(arch_string): # This will add a feature such as x86, arm, mips, etc for each built # target features = [] for arch in arch_string.split(): features.append(arch.lower()) return features # Run llvm-config and add automatically add features for whether we have # assertions enabled, whether we are in debug mode, and what targets we # are built for. llvm_config.feature_config([('--assertion-mode', { 'ON': 'asserts' }), ('--build-mode', { 'DEBUG': 'debug' }), ('--targets-built', calculate_arch_features)]) # Clean the module caches in the test build directory. This is necessary in an # incremental build whenever clang changes underneath, so doing it once per # lit.py invocation is close enough. for cachedir in [config.clang_module_cache, config.lldb_module_cache]: if os.path.isdir(cachedir): print("Deleting module cache at %s." % cachedir) shutil.rmtree(cachedir) # Set a default per-test timeout of 10 minutes. Setting a timeout per test # requires that killProcessAndChildren() is supported on the platform and # lit complains if the value is set but it is not supported. supported, errormsg = lit_config.maxIndividualTestTimeIsSupported
# Running on ELF based *nix if platform.system() in ['FreeBSD', 'NetBSD', 'Linux']: config.available_features.add('system-linker-elf') # Set if host-cxxabi's demangler can handle target's symbols. if platform.system() not in ['Windows']: config.available_features.add('demangler') llvm_config.feature_config( [('--targets-built', {'AArch64': 'aarch64', 'AMDGPU': 'amdgpu', 'ARM': 'arm', 'AVR': 'avr', 'Hexagon': 'hexagon', 'Mips': 'mips', 'MSP430': 'msp430', 'PowerPC': 'ppc', 'RISCV': 'riscv', 'Sparc': 'sparc', 'WebAssembly': 'wasm', 'X86': 'x86'}) ]) # Set a fake constant version so that we get consistent output. config.environment['LLD_VERSION'] = 'LLD 1.0' # LLD_IN_TEST determines how many times `main` is run inside each process, which # lets us test that it's cleaning up after itself and resetting global state # correctly (which is important for usage as a library). run_lld_main_twice = lit_config.params.get('RUN_LLD_MAIN_TWICE', False) if not run_lld_main_twice:
config.suffixes = ['.cl', '.ll', '.spt'] # excludes: A list of directories and fles to exclude from the testsuite. config.excludes = ['CMakeLists.txt'] if not config.spirv_skip_debug_info_tests: # Direct object generation. config.available_features.add('object-emission') # LLVM can be configured with an empty default triple. # Some tests are "generic" and require a valid default triple. if config.target_triple: config.available_features.add('default_triple') # Ask llvm-config about asserts. llvm_config.feature_config([('--assertion-mode', {'ON': 'asserts'})]) # 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. config.test_exec_root = os.path.join(config.test_run_dir, 'test_output') llvm_config.use_default_substitutions() llvm_config.use_clang() config.substitutions.append(('%PATH%', config.environment['PATH'])) tool_dirs = [config.llvm_tools_dir, config.llvm_spirv_dir]