mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
[lit] Fix testing of standalone clang and lld builds
In such cases, the executables are not in the llvm_tools_dir directory, so we need to look in the other search locations. Previously, they were found via the PATH, but this was disabled by default in commit rGa1e6565. Depends on D103154. Reviewed By: thopre Differential Revision: https://reviews.llvm.org/D103156
This commit is contained in:
parent
71fdc2f62c
commit
902f3f26fd
@ -402,7 +402,7 @@ class LLVMConfig(object):
|
||||
self.add_err_msg_substitutions()
|
||||
|
||||
def use_llvm_tool(self, name, search_env=None, required=False, quiet=False,
|
||||
use_installed=False):
|
||||
search_paths=None, use_installed=False):
|
||||
"""Find the executable program 'name', optionally using the specified
|
||||
environment variable as an override before searching the build directory
|
||||
and then optionally the configuration's PATH."""
|
||||
@ -413,8 +413,11 @@ class LLVMConfig(object):
|
||||
tool = self.config.environment.get(search_env)
|
||||
|
||||
if not tool:
|
||||
# Use the build directory version.
|
||||
tool = lit.util.which(name, self.config.llvm_tools_dir)
|
||||
if search_paths is None:
|
||||
search_paths = [self.config.llvm_tools_dir]
|
||||
# Use the specified search paths.
|
||||
path = os.pathsep.join(search_paths)
|
||||
tool = lit.util.which(name, path)
|
||||
|
||||
if not tool and use_installed:
|
||||
# Otherwise look in the path, if enabled.
|
||||
@ -488,10 +491,10 @@ class LLVMConfig(object):
|
||||
'llvm_shlib_dir',
|
||||
'llvm_libs_dir',
|
||||
]
|
||||
paths = [getattr(self.config, pp) for pp in lib_dir_props
|
||||
if getattr(self.config, pp, None)]
|
||||
lib_paths = [getattr(self.config, pp) for pp in lib_dir_props
|
||||
if getattr(self.config, pp, None)]
|
||||
|
||||
self.with_environment('LD_LIBRARY_PATH', paths, append_path=True)
|
||||
self.with_environment('LD_LIBRARY_PATH', lib_paths, append_path=True)
|
||||
|
||||
shl = getattr(self.config, 'llvm_shlib_dir', None)
|
||||
pext = getattr(self.config, 'llvm_plugin_ext', None)
|
||||
@ -503,7 +506,7 @@ class LLVMConfig(object):
|
||||
# Discover the 'clang' and 'clangcc' to use.
|
||||
self.config.clang = self.use_llvm_tool(
|
||||
'clang', search_env='CLANG', required=required,
|
||||
use_installed=use_installed)
|
||||
search_paths=paths, use_installed=use_installed)
|
||||
if self.config.clang:
|
||||
self.config.available_features.add('clang')
|
||||
builtin_include_dir = self.get_clang_builtin_include_dir(
|
||||
@ -595,20 +598,24 @@ class LLVMConfig(object):
|
||||
|
||||
lib_dir_props = [self.config.name.lower() + '_libs_dir',
|
||||
'lld_libs_dir', 'llvm_libs_dir']
|
||||
paths = [getattr(self.config, pp) for pp in lib_dir_props
|
||||
if getattr(self.config, pp, None)]
|
||||
lib_paths = [getattr(self.config, pp) for pp in lib_dir_props
|
||||
if getattr(self.config, pp, None)]
|
||||
|
||||
self.with_environment('LD_LIBRARY_PATH', paths, append_path=True)
|
||||
self.with_environment('LD_LIBRARY_PATH', lib_paths, append_path=True)
|
||||
|
||||
# Discover the LLD executables to use.
|
||||
|
||||
ld_lld = self.use_llvm_tool('ld.lld', required=required,
|
||||
search_paths=paths,
|
||||
use_installed=use_installed)
|
||||
lld_link = self.use_llvm_tool('lld-link', required=required,
|
||||
search_paths=paths,
|
||||
use_installed=use_installed)
|
||||
ld64_lld = self.use_llvm_tool('ld64.lld', required=required,
|
||||
search_paths=paths,
|
||||
use_installed=use_installed)
|
||||
wasm_ld = self.use_llvm_tool('wasm-ld', required=required,
|
||||
search_paths=paths,
|
||||
use_installed=use_installed)
|
||||
|
||||
was_found = ld_lld and lld_link and ld64_lld and wasm_ld
|
||||
|
0
utils/lit/tests/Inputs/use-llvm-tool/build/case10
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/build/case10
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/build/case9
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/build/case9
Normal file
@ -20,3 +20,6 @@ lit.llvm.llvm_config.use_llvm_tool('case5')
|
||||
lit.llvm.llvm_config.use_llvm_tool('case6', search_env='CASE6', use_installed=True)
|
||||
lit.llvm.llvm_config.use_llvm_tool('case7', use_installed=True)
|
||||
lit.llvm.llvm_config.use_llvm_tool('case8', use_installed=True)
|
||||
paths = [os.path.join(this_dir, 'search1'), os.path.join(this_dir, 'search2'), os.path.join(this_dir, 'search3')]
|
||||
lit.llvm.llvm_config.use_llvm_tool('case9', search_paths=paths)
|
||||
lit.llvm.llvm_config.use_llvm_tool('case10', search_paths=paths, use_installed=True)
|
||||
|
0
utils/lit/tests/Inputs/use-llvm-tool/path/case10
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/path/case10
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/search1/empty
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/search1/empty
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/search2/case9
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/search2/case9
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/search3/case9
Normal file
0
utils/lit/tests/Inputs/use-llvm-tool/search3/case9
Normal file
@ -17,6 +17,8 @@
|
||||
## 6 | / | / | / | <- Env is preferred over build, PATH
|
||||
## 7 | N/S | / | / | <- Build dir is preferred over PATH
|
||||
## 8 | X | X | X | <- Say nothing if cannot be found if not required
|
||||
## 9 | N/S | override | N/S | <- Use specified search directory, instead of default directory
|
||||
## 10 | N/S | override | / | <- Use PATH if not in search directory
|
||||
|
||||
## Check the exact path reported for the first case, but don't bother for the
|
||||
## others.
|
||||
@ -28,6 +30,8 @@
|
||||
# CHECK-NEXT: note: using case6: {{.*}}env-case6
|
||||
# CHECK-NEXT: note: using case7: {{.*}}build{{[\\/]}}case7
|
||||
# CHECK-NOT: case8
|
||||
# CHECK-NEXT: note: using case9: {{.*}}search2{{[\\/]}}case9
|
||||
# CHECK-NEXT: note: using case10: {{.*}}path{{[\\/]}}case10
|
||||
|
||||
## Test that if required is True, lit errors if the tool is not found.
|
||||
# RUN: not %{lit} %{inputs}/use-llvm-tool-required 2>&1 | \
|
||||
|
Loading…
Reference in New Issue
Block a user