From a95ebf10776757664e1c1ad91f662374a31e0133 Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Wed, 3 May 2023 17:50:40 -0400 Subject: dependencies: allow config-tool to fallback to default program names If the dependency permits it, we can just do a PATH search instead of mandating that it be listed in the cross file. This is useful for the limited case where a specific dependency is known to be compatible with any machine choice. Mark the pybind11 dependency as supporting this. It's a valid choice because pybind11 is a header-only C++ library. --- mesonbuild/dependencies/configtool.py | 3 ++- mesonbuild/dependencies/python.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mesonbuild/dependencies/configtool.py b/mesonbuild/dependencies/configtool.py index 1f16a4316..87cf73875 100644 --- a/mesonbuild/dependencies/configtool.py +++ b/mesonbuild/dependencies/configtool.py @@ -43,6 +43,7 @@ class ConfigToolDependency(ExternalDependency): tool_name: T.Optional[str] = None version_arg = '--version' skip_version: T.Optional[str] = None + allow_default_for_cross = False __strip_version = re.compile(r'^[0-9][0-9.]+') def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any], language: T.Optional[str] = None): @@ -85,7 +86,7 @@ class ConfigToolDependency(ExternalDependency): best_match: T.Tuple[T.Optional[T.List[str]], T.Optional[str]] = (None, None) for potential_bin in find_external_program( self.env, self.for_machine, self.tool_name, - self.tool_name, self.tools, allow_default_for_cross=False): + self.tool_name, self.tools, allow_default_for_cross=self.allow_default_for_cross): if not potential_bin.found(): continue tool = potential_bin.get_command() diff --git a/mesonbuild/dependencies/python.py b/mesonbuild/dependencies/python.py index b9fbbbbdc..65fef7f81 100644 --- a/mesonbuild/dependencies/python.py +++ b/mesonbuild/dependencies/python.py @@ -55,6 +55,9 @@ class Pybind11ConfigToolDependency(ConfigToolDependency): tools = ['pybind11-config'] + # any version of the tool is valid, since this is header-only + allow_default_for_cross = True + # pybind11 in 2.10.4 added --version, sanity-check another flag unique to it # in the meantime skip_version = '--pkgconfigdir' -- cgit v1.2.1