aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/base.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2020-05-07 16:58:22 -0400
committerXavier Claessens <xclaesse@gmail.com>2020-05-11 18:02:37 -0400
commit245d659522fd73857bf7f4e83bd572d9cdcd7469 (patch)
tree2b745c9ff1f4665a0fe22271fbb8ef54f084e1c0 /mesonbuild/dependencies/base.py
parent630a00374600bffedbabb8ef623e16bed52f21c4 (diff)
downloadmeson-245d659522fd73857bf7f4e83bd572d9cdcd7469.zip
meson-245d659522fd73857bf7f4e83bd572d9cdcd7469.tar.gz
meson-245d659522fd73857bf7f4e83bd572d9cdcd7469.tar.bz2
ConfigToolDependency: Don't fallback to system tool when cross compiling
The system tool is always the wrong thing to use and cause hard to debug issues when trying to link system libraries with cross built binaries. The ExternalDependency base class already had a method to deal with this, used by PkgConfigDependency and QtBaseDependency, so it should make things more consistent.
Diffstat (limited to 'mesonbuild/dependencies/base.py')
-rw-r--r--mesonbuild/dependencies/base.py25
1 files changed, 4 insertions, 21 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 95a3956..bcb1531 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -437,28 +437,11 @@ class ConfigToolDependency(ExternalDependency):
"""
if not isinstance(versions, list) and versions is not None:
versions = listify(versions)
-
- tool = self.env.lookup_binary_entry(self.for_machine, self.tool_name)
- if tool is not None:
- tools = [tool]
- else:
- if not self.env.machines.matches_build_machine(self.for_machine):
- mlog.deprecation('No entry for {0} specified in your cross file. '
- 'Falling back to searching PATH. This may find a '
- 'native version of {0}! This will become a hard '
- 'error in a future version of meson'.format(self.tool_name))
- tools = [[t] for t in self.tools]
-
best_match = (None, None)
- for tool in tools:
- if len(tool) == 1:
- # In some situations the command can't be directly executed.
- # For example Shell scripts need to be called through sh on
- # Windows (see issue #1423).
- potential_bin = ExternalProgram(tool[0], silent=True)
- if not potential_bin.found():
- continue
- tool = potential_bin.get_command()
+ for potential_bin in self.search_tool(self.tool_name, self.tool_name, self.tools):
+ if not potential_bin.found():
+ continue
+ tool = potential_bin.get_command()
try:
p, out = Popen_safe(tool + [self.version_arg])[:2]
except (FileNotFoundError, PermissionError):