project tests: Verify that UWP cross binaries use the right arch

This is a test for https://github.com/mesonbuild/meson/pull/7021, to
verify that `link.exe` uses the correct architecture when targeting
ARM64. Can be extended to other cross targets later.
pull/7723/head
Nirbheek Chauhan 4 years ago committed by Nirbheek Chauhan
parent 946aeb6947
commit 9b8ac9db32
  1. 32
      test cases/common/233 link depends indexed custom target/check_arch.py
  2. 6
      test cases/common/233 link depends indexed custom target/meson.build

@ -0,0 +1,32 @@
#!/usr/bin/env python3
import re
import sys
import shutil
import subprocess
exepath = sys.argv[1]
want_arch = sys.argv[2]
dummy_output = sys.argv[3]
with open(dummy_output, 'w') as f:
f.write('')
if not shutil.which('dumpbin'):
print('dumpbin not found, skipping')
sys.exit(0)
out = subprocess.check_output(['dumpbin', '/HEADERS', exepath],
universal_newlines=True)
for line in out.split('\n'):
m = re.match(r'.* machine \(([A-Za-z0-9]+)\)$', line)
if m:
arch = m.groups()[0].lower()
if arch == 'arm64':
arch = 'aarch64'
elif arch == 'x64':
arch = 'x86_64'
if arch != want_arch:
raise RuntimeError('Wanted arch {} but exe uses {}'.format(want_arch, arch))

@ -15,5 +15,11 @@ exe = executable('foo', 'foo.c',
link_depends: dep_files[1],
c_args: ['-DDEPFILE="' + dep_files[0].full_path()+ '"'])
check_arch = find_program('check_arch.py')
custom_target('check-arch',
command: [check_arch, exe, host_machine.cpu_family(), '@OUTPUT@'],
build_by_default: true,
output: 'dummy.txt')
# check that dep_file1 exists, which means that link_depends target ran
test('runtest', exe)

Loading…
Cancel
Save