aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2019-06-10 19:42:06 -0400
committerJussi Pakkanen <jpakkane@gmail.com>2019-06-27 21:24:50 +0300
commit9149aaba9c87250a7fc92686c37057038f57ef99 (patch)
tree7662c962ef0afad871b14380e16ef192165bbb68 /mesonbuild/interpreter.py
parent6e4e0028a1f9f0035ad27e8dc7788bbe67c51053 (diff)
downloadmeson-9149aaba9c87250a7fc92686c37057038f57ef99.zip
meson-9149aaba9c87250a7fc92686c37057038f57ef99.tar.gz
meson-9149aaba9c87250a7fc92686c37057038f57ef99.tar.bz2
`add_{global,project}_{,link_}arguments`: simply native flag behavior
This further simplifies behavior to match the "build vs host" decision we did with `c_args` vs `build_c_args`. The rules are now simply: - `native: true` affects `native: true` targets - `native: false` affects `native: false` targets - No native flag is the same as `native: false` I like this because you don't even have to know what "build" and "host" mean to understand how it works, and it doesn't depend on whether the overall build is cross or not. Fixes #4933
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py34
1 files changed, 8 insertions, 26 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 59a3642..f5bb4e5 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -3829,47 +3829,29 @@ different subdirectory.
env = self.unpack_env_kwarg(kwargs)
self.build.test_setups[setup_name] = build.TestSetup(exe_wrapper, gdb, timeout_multiplier, env)
- # TODO make cross agnostic, just taking into account for_machine
- # TODO PerMachine[T], Iterator[T]
- def get_argdict_on_crossness(self, dicts_per_machine: PerMachine, kwargs) -> Iterator:
- for_native = kwargs.get('native', not self.environment.is_cross_build())
- if not isinstance(for_native, bool):
- raise InterpreterException('Keyword native must be a boolean.')
- if self.environment.is_cross_build():
- if for_native:
- return iter([dicts_per_machine[MachineChoice.BUILD]])
- else:
- return iter([dicts_per_machine[MachineChoice.HOST]])
- else:
- if for_native:
- return iter([dicts_per_machine[MachineChoice.BUILD],
- dicts_per_machine[MachineChoice.HOST]])
- else:
- return iter([])
-
@permittedKwargs(permitted_kwargs['add_global_arguments'])
@stringArgs
def func_add_global_arguments(self, node, args, kwargs):
- for argdict in self.get_argdict_on_crossness(self.build.global_args, kwargs):
- self.add_global_arguments(node, argdict, args, kwargs)
+ for_machine = self.machine_from_native_kwarg(kwargs)
+ self.add_global_arguments(node, self.build.global_args[for_machine], args, kwargs)
@permittedKwargs(permitted_kwargs['add_global_link_arguments'])
@stringArgs
def func_add_global_link_arguments(self, node, args, kwargs):
- for argdict in self.get_argdict_on_crossness(self.build.global_link_args, kwargs):
- self.add_global_arguments(node, argdict, args, kwargs)
+ for_machine = self.machine_from_native_kwarg(kwargs)
+ self.add_global_arguments(node, self.build.global_link_args[for_machine], args, kwargs)
@permittedKwargs(permitted_kwargs['add_project_arguments'])
@stringArgs
def func_add_project_arguments(self, node, args, kwargs):
- for argdict in self.get_argdict_on_crossness(self.build.projects_args, kwargs):
- self.add_project_arguments(node, argdict, args, kwargs)
+ for_machine = self.machine_from_native_kwarg(kwargs)
+ self.add_project_arguments(node, self.build.projects_args[for_machine], args, kwargs)
@permittedKwargs(permitted_kwargs['add_project_link_arguments'])
@stringArgs
def func_add_project_link_arguments(self, node, args, kwargs):
- for argdict in self.get_argdict_on_crossness(self.build.projects_link_args, kwargs):
- self.add_project_arguments(node, argdict, args, kwargs)
+ for_machine = self.machine_from_native_kwarg(kwargs)
+ self.add_project_arguments(node, self.build.projects_link_args[for_machine], args, kwargs)
def add_global_arguments(self, node, argsdict, args, kwargs):
if self.is_subproject():