diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2019-06-10 19:42:06 -0400 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2019-06-27 21:24:50 +0300 |
commit | 9149aaba9c87250a7fc92686c37057038f57ef99 (patch) | |
tree | 7662c962ef0afad871b14380e16ef192165bbb68 /mesonbuild/interpreter.py | |
parent | 6e4e0028a1f9f0035ad27e8dc7788bbe67c51053 (diff) | |
download | meson-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.py | 34 |
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(): |