diff options
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/dependencies/base.py | 12 | ||||
| -rw-r--r-- | mesonbuild/dependencies/cmake.py | 10 | ||||
| -rw-r--r-- | mesonbuild/dependencies/cuda.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/detect.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/dev.py | 9 | ||||
| -rw-r--r-- | mesonbuild/dependencies/hdf5.py | 5 | ||||
| -rw-r--r-- | mesonbuild/interpreter/dependencyfallbacks.py | 7 | ||||
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 3 | ||||
| -rw-r--r-- | mesonbuild/interpreter/kwargs.py | 1 | ||||
| -rw-r--r-- | mesonbuild/interpreter/type_checking.py | 1 | ||||
| -rw-r--r-- | mesonbuild/modules/gnome.py | 2 | ||||
| -rw-r--r-- | mesonbuild/modules/python.py | 2 |
12 files changed, 22 insertions, 35 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 425edd398..4705d699f 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -51,6 +51,7 @@ if T.TYPE_CHECKING: main: bool method: DependencyMethods modules: T.List[str] + native: MachineChoice _MissingCompilerBase = Compiler else: @@ -395,14 +396,7 @@ class InternalDependency(Dependency): new_dep.ext_deps = [dep.get_as_shared(True) for dep in self.ext_deps] return new_dep -class HasNativeKwarg: - def __init__(self, kwargs: DependencyObjectKWs): - self.for_machine = self.get_for_machine_from_kwargs(kwargs) - - def get_for_machine_from_kwargs(self, kwargs: DependencyObjectKWs) -> MachineChoice: - return MachineChoice.BUILD if kwargs.get('native', False) else MachineChoice.HOST - -class ExternalDependency(Dependency, HasNativeKwarg): +class ExternalDependency(Dependency): def __init__(self, type_name: DependencyTypeName, environment: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None): Dependency.__init__(self, type_name, kwargs) self.env = environment @@ -420,7 +414,7 @@ class ExternalDependency(Dependency, HasNativeKwarg): if not isinstance(self.static, bool): raise DependencyException('Static keyword must be boolean') # Is this dependency to be run on the build platform? - HasNativeKwarg.__init__(self, kwargs) + self.for_machine = kwargs.get('native', MachineChoice.HOST) self.clib_compiler = detect_compiler(self.name, environment, self.for_machine, self.language) def get_compiler(self) -> T.Union['MissingCompiler', 'Compiler']: diff --git a/mesonbuild/dependencies/cmake.py b/mesonbuild/dependencies/cmake.py index e1bd6861c..94a1b1d04 100644 --- a/mesonbuild/dependencies/cmake.py +++ b/mesonbuild/dependencies/cmake.py @@ -4,7 +4,7 @@ from __future__ import annotations from .base import ExternalDependency, DependencyException, DependencyTypeName -from ..mesonlib import is_windows, MesonException, PerMachine, stringlistify, extract_as_list +from ..mesonlib import is_windows, MesonException, PerMachine, stringlistify, extract_as_list, MachineChoice from ..cmake import CMakeExecutor, CMakeTraceParser, CMakeException, CMakeToolchain, CMakeExecScope, check_cmake_args, resolve_cmake_trace_targets, cmake_is_debug from .. import mlog import importlib.resources @@ -74,12 +74,8 @@ class CMakeDependency(ExternalDependency): # Gather a list of all languages to support self.language_list: T.List[str] = [] if language is None or force_use_global_compilers: - compilers = None - if kwargs.get('native', False): - compilers = environment.coredata.compilers.build - else: - compilers = environment.coredata.compilers.host - + for_machine = kwargs.get('native', MachineChoice.HOST) + compilers = environment.coredata.compilers[for_machine] candidates = ['c', 'cpp', 'fortran', 'objc', 'objcxx'] self.language_list += [x for x in candidates if x in compilers] else: diff --git a/mesonbuild/dependencies/cuda.py b/mesonbuild/dependencies/cuda.py index 317e1124d..ddfb2ea48 100644 --- a/mesonbuild/dependencies/cuda.py +++ b/mesonbuild/dependencies/cuda.py @@ -29,7 +29,7 @@ class CudaDependency(SystemDependency): targets_dir = 'targets' # Directory containing CUDA targets. def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - for_machine = self.get_for_machine_from_kwargs(kwargs) + for_machine = kwargs.get('native', mesonlib.MachineChoice.HOST) compilers = environment.coredata.compilers[for_machine] machine = environment.machines[for_machine] language = self._detect_language(compilers) diff --git a/mesonbuild/dependencies/detect.py b/mesonbuild/dependencies/detect.py index db5afeb82..1b5cf7996 100644 --- a/mesonbuild/dependencies/detect.py +++ b/mesonbuild/dependencies/detect.py @@ -103,8 +103,7 @@ def find_external_dependency(name: str, env: 'Environment', kwargs: DependencyOb # display the dependency name with correct casing display_name = display_name_map.get(lname, lname) - for_machine = MachineChoice.BUILD if kwargs.get('native', False) else MachineChoice.HOST - + for_machine = kwargs.get('native', MachineChoice.HOST) type_text = PerMachine('Build-time', 'Run-time')[for_machine] + ' dependency' # build a list of dependency methods to try diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py index bc692ef42..4dcd5eb70 100644 --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -197,7 +197,7 @@ class LLVMDependencyConfigTool(ConfigToolDependency): # of bits in the isa that llvm targets, for example, on x86_64 # and aarch64 the name will be llvm-config-64, on x86 and arm # it will be llvm-config-32. - if environment.machines[self.get_for_machine_from_kwargs(kwargs)].is_64_bit: + if environment.machines[kwargs.get('native', mesonlib.MachineChoice.HOST)].is_64_bit: self.tools.append('llvm-config-64') else: self.tools.append('llvm-config-32') @@ -389,11 +389,8 @@ class LLVMDependencyCMake(CMakeDependency): self.llvm_modules = kwargs.get('modules', []) self.llvm_opt_modules = stringlistify(extract_as_list(kwargs, 'optional_modules')) # type: ignore[arg-type] - compilers = None - if kwargs.get('native', False): - compilers = env.coredata.compilers.build - else: - compilers = env.coredata.compilers.host + for_machine = kwargs.get('native', mesonlib.MachineChoice.HOST) + compilers = env.coredata.compilers[for_machine] if not compilers or not {'c', 'cpp'}.issubset(compilers): # Initialize basic variables ExternalDependency.__init__(self, DependencyTypeName('cmake'), env, kwargs) diff --git a/mesonbuild/dependencies/hdf5.py b/mesonbuild/dependencies/hdf5.py index 3d868bf30..be58b6db8 100644 --- a/mesonbuild/dependencies/hdf5.py +++ b/mesonbuild/dependencies/hdf5.py @@ -9,7 +9,7 @@ import os import re from pathlib import Path -from ..mesonlib import OrderedSet, join_args +from ..mesonlib import OrderedSet, join_args, MachineChoice from .base import DependencyException, DependencyMethods from .configtool import ConfigToolDependency from .detect import packages @@ -20,7 +20,6 @@ import typing as T if T.TYPE_CHECKING: from .factory import DependencyGenerator from ..environment import Environment - from ..mesonlib import MachineChoice from .base import DependencyObjectKWs @@ -100,7 +99,7 @@ class HDF5ConfigToolDependency(ConfigToolDependency): raise DependencyException('How did you get here?') # We need this before we call super() - for_machine = self.get_for_machine_from_kwargs(kwargs) + for_machine = kwargs.get('native', MachineChoice.HOST) nkwargs = kwargs.copy() nkwargs['tools'] = tools # type: ignore[typeddict-unknown-key] diff --git a/mesonbuild/interpreter/dependencyfallbacks.py b/mesonbuild/interpreter/dependencyfallbacks.py index f980ef111..c9b762b0c 100644 --- a/mesonbuild/interpreter/dependencyfallbacks.py +++ b/mesonbuild/interpreter/dependencyfallbacks.py @@ -19,6 +19,7 @@ import typing as T if T.TYPE_CHECKING: from .interpreter import Interpreter from ..interpreterbase import TYPE_nkwargs, TYPE_nvar + from ..mesonlib import MachineChoice from .interpreterobjects import SubprojectHolder @@ -94,7 +95,7 @@ class DependencyFallbacksHolder(MesonInterpreterObject): self._handle_featurenew_dependencies(name) dep = dependencies.find_external_dependency(name, self.environment, kwargs) if dep.found(): - for_machine = self.interpreter.machine_from_native_kwarg(kwargs) + for_machine = T.cast('MachineChoice', kwargs['native']) identifier = dependencies.get_dep_identifier(name, kwargs) self.coredata.deps[for_machine].put(identifier, dep) return dep @@ -209,7 +210,7 @@ class DependencyFallbacksHolder(MesonInterpreterObject): # of None in the case the dependency is cached as not-found, or if cached # version does not match. In that case we don't want to continue with # other candidates. - for_machine = self.interpreter.machine_from_native_kwarg(kwargs) + for_machine = T.cast('MachineChoice', kwargs['native']) identifier = dependencies.get_dep_identifier(name, kwargs) wanted_vers = stringlistify(kwargs.get('version', [])) @@ -361,7 +362,7 @@ class DependencyFallbacksHolder(MesonInterpreterObject): # Override this dependency to have consistent results in subsequent # dependency lookups. for name in self.names: - for_machine = self.interpreter.machine_from_native_kwarg(kwargs) + for_machine = T.cast('MachineChoice', kwargs['native']) identifier = dependencies.get_dep_identifier(name, kwargs) if identifier not in self.build.dependency_overrides[for_machine]: self.build.dependency_overrides[for_machine][identifier] = \ diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 8d349a4ac..211af2b2e 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -592,8 +592,7 @@ class Interpreter(InterpreterBase, HoldableObject): continue if len(di) == 1: FeatureNew.single_use('stdlib without variable name', '0.56.0', self.subproject, location=self.current_node) - kwargs = {'native': for_machine is MachineChoice.BUILD, - } + kwargs: dependencies.base.DependencyObjectKWs = {'native': for_machine} name = l + '_stdlib' df = DependencyFallbacksHolder(self, [name]) df.set_fallback(di) diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index 5892a79b5..b82a3eec5 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -505,3 +505,4 @@ class FuncDependency(TypedDict): main: bool method: DependencyMethods modules: T.List[str] + native: MachineChoice diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index cba97e64c..8e20b7e4f 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -936,6 +936,7 @@ DEPENDENCY_KWS: T.List[KwargInfo] = [ DEFAULT_OPTIONS.evolve(since='0.38.0'), DEPENDENCY_METHOD_KW, INCLUDE_TYPE, + NATIVE_KW, KwargInfo('allow_fallback', (bool, NoneType), since='0.56.0'), KwargInfo('cmake_args', ContainerTypeInfo(list, str), listify=True, default=[], since='0.50.0'), KwargInfo('cmake_module_path', ContainerTypeInfo(list, str), listify=True, default=[], since='0.50.0'), diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index b1fe250da..fff859c0f 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -283,7 +283,7 @@ class GnomeModule(ExtensionModule): def _get_native_glib_version(self, state: 'ModuleState') -> str: if self.native_glib_version is None: glib_dep = PkgConfigDependency('glib-2.0', state.environment, - {'native': True, 'required': False}) # type: ignore[typeddict-unknown-key] + {'native': MachineChoice.BUILD, 'required': False}) # type: ignore[typeddict-unknown-key] if glib_dep.found(): self.native_glib_version = glib_dep.get_version() else: diff --git a/mesonbuild/modules/python.py b/mesonbuild/modules/python.py index 1bf02fe76..3cebdb33c 100644 --- a/mesonbuild/modules/python.py +++ b/mesonbuild/modules/python.py @@ -247,7 +247,7 @@ class PythonInstallation(_ExternalProgramHolder['PythonExternalProgram']): return '0x{:02x}{:02x}0000'.format(major, minor) def _dependency_method_impl(self, kwargs: DependencyObjectKWs) -> Dependency: - for_machine = self.interpreter.machine_from_native_kwarg(kwargs) + for_machine = kwargs.get('native', MachineChoice.HOST) identifier = get_dep_identifier(self._full_path(), kwargs) dep = self.interpreter.coredata.deps[for_machine].get(identifier) |
