backends: allow running host arch binaries on compatible build machines

Meson 0.48.0 some validation for using compiled binaries in custom
targets and generators, which is nice. It didn't take into account
though that as long as the OS is the same, some architectures support
running a related architecture natively (x86_64 can run x86 natively,
for example).

Fortunately we already have a method for covering this case available
through the Environment class.

Fixes #4254
pull/4203/head
Dylan Baker 7 years ago committed by Jussi Pakkanen
parent 88054c48a6
commit a0e4548c41
  1. 10
      mesonbuild/backend/backends.py

@ -13,6 +13,7 @@
# limitations under the License. # limitations under the License.
import os, pickle, re import os, pickle, re
import textwrap
from .. import build from .. import build
from .. import dependencies from .. import dependencies
from .. import mesonlib from .. import mesonlib
@ -729,10 +730,11 @@ class Backend:
def exe_object_to_cmd_array(self, exe): def exe_object_to_cmd_array(self, exe):
if self.environment.is_cross_build() and \ if self.environment.is_cross_build() and \
isinstance(exe, build.BuildTarget) and exe.is_cross: isinstance(exe, build.BuildTarget) and exe.is_cross:
if self.environment.exe_wrapper is None: if self.environment.exe_wrapper is None and self.environment.cross_info.need_exe_wrapper():
s = 'Can not use target %s as a generator because it is cross-built\n' s = textwrap.dedent('''
s += 'and no exe wrapper is defined. You might want to set it to native instead.' Can not use target {} as a generator because it is cross-built
s = s % exe.name and no exe wrapper is defined or needs_exe_wrapper is true.
You might want to set it to native instead.'''.format(exe.name))
raise MesonException(s) raise MesonException(s)
if isinstance(exe, build.BuildTarget): if isinstance(exe, build.BuildTarget):
exe_arr = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(exe))] exe_arr = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(exe))]

Loading…
Cancel
Save