diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2020-08-18 22:59:33 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2020-08-31 23:01:05 +0300 |
commit | 71d33a5721dcec74a2c43ffd4ea968cacd0b379a (patch) | |
tree | 4240e8a20c4ebd30b03102eed72d1987cb3ab26e | |
parent | f4bac06bd9e96f0d662396e38777bad3469420f4 (diff) | |
download | meson-71d33a5721dcec74a2c43ffd4ea968cacd0b379a.zip meson-71d33a5721dcec74a2c43ffd4ea968cacd0b379a.tar.gz meson-71d33a5721dcec74a2c43ffd4ea968cacd0b379a.tar.bz2 |
backends: do not look for extra paths unnecessarily
extra_paths only matter for the host machine if using an exe_wrapper.
However, because CustomTarget.for_machine is always MachineChoice.HOST,
they were computed unnecessarily in as_meson_exe_cmdline.
Defer computation of extra_paths until after we have found out if the
custom target executable is really for the host or the build machine,
so that we can use exe_for_machine; for_machine then becomes unused
and can be removed.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | mesonbuild/backend/backends.py | 13 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 1 |
2 files changed, 6 insertions, 8 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index c6a48d3..7bdccbf 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -351,18 +351,11 @@ class Backend: return obj_list def as_meson_exe_cmdline(self, tname, exe, cmd_args, workdir=None, - for_machine=MachineChoice.BUILD, extra_bdeps=None, capture=None, force_serialize=False): ''' Serialize an executable for running with a generator or a custom target ''' import hashlib - machine = self.environment.machines[for_machine] - if machine.is_windows() or machine.is_cygwin(): - extra_paths = self.determine_windows_extra_paths(exe, extra_bdeps or []) - else: - extra_paths = [] - if isinstance(exe, dependencies.ExternalProgram): exe_cmd = exe.get_command() exe_for_machine = exe.for_machine @@ -373,6 +366,12 @@ class Backend: exe_cmd = [exe] exe_for_machine = MachineChoice.BUILD + machine = self.environment.machines[exe_for_machine] + if machine.is_windows() or machine.is_cygwin(): + extra_paths = self.determine_windows_extra_paths(exe, extra_bdeps or []) + else: + extra_paths = [] + is_cross_built = not self.environment.machines.matches_build_machine(exe_for_machine) if is_cross_built and self.environment.need_exe_wrapper(): exe_wrapper = self.environment.get_exe_wrapper() diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 24cfe26..ec4d66b 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -880,7 +880,6 @@ int dummy; elem.add_dep(os.path.join(self.get_target_dir(d), output)) meson_exe_cmd = self.as_meson_exe_cmdline(target.name, target.command[0], cmd[1:], - for_machine=target.for_machine, extra_bdeps=target.get_transitive_build_target_deps(), capture=ofilenames[0] if target.capture else None) if meson_exe_cmd: |