import argparse
 import difflib
+import errno
+import os
 import pathlib
 import subprocess
+import sys
 import tempfile
 
+# The meson version handles windows paths better, but if it's not available
+# fall back to shlex
+try:
+    from meson.mesonlib import split_args
+except ImportError:
+    from shlex import split as split_args
+
 parser = argparse.ArgumentParser()
 parser.add_argument('--i965_asm',
                     help='path to i965_asm binary')
                     help='name of the folder for the generation')
 args = parser.parse_args()
 
+wrapper = os.environ.get('MESON_EXE_WRAPPER')
+if wrapper is not None:
+    i965_asm = split_args(wrapper) + [args.i965_asm]
+else:
+    i965_asm = [args.i965_asm]
+
 success = True
 
 for asm_file in args.gen_folder.glob('*.asm'):
     expected_path = args.gen_folder / expected_file
     out_path = tempfile.NamedTemporaryFile()
 
-    subprocess.run([args.i965_asm,
-                    '--type', 'hex',
-                    '--gen', args.gen_name,
-                    '--output', out_path.name,
-                    asm_file],
-                   stdout=subprocess.DEVNULL,
-                   stderr=subprocess.STDOUT)
+    try:
+        command = i965_asm + [
+            '--type', 'hex',
+            '--gen', args.gen_name,
+            '--output', out_path.name,
+            asm_file
+        ]
+        subprocess.run(command,
+                       stdout=subprocess.DEVNULL,
+                       stderr=subprocess.STDOUT)
+    except OSError as e:
+        if e.errno == errno.ENOEXEC:
+            print('Skipping due to inability to run host binaries.',
+                  file=sys.stderr)
+            exit(77)
+        raise
 
     with expected_path.open() as f:
         lines_before = f.readlines()