diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2020-09-12 05:16:21 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2020-09-17 22:25:37 +0000 |
commit | 9b8ac9db32f245a917c50103cc02154dac30ba70 (patch) | |
tree | b3ad935e7db1fc011658957b8350743f3839728b /test cases/common | |
parent | 946aeb6947cac6b88dd1ac1aafa32df158659143 (diff) | |
download | meson-9b8ac9db32f245a917c50103cc02154dac30ba70.zip meson-9b8ac9db32f245a917c50103cc02154dac30ba70.tar.gz meson-9b8ac9db32f245a917c50103cc02154dac30ba70.tar.bz2 |
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.
Diffstat (limited to 'test cases/common')
-rw-r--r-- | test cases/common/233 link depends indexed custom target/check_arch.py | 32 | ||||
-rw-r--r-- | test cases/common/233 link depends indexed custom target/meson.build | 6 |
2 files changed, 38 insertions, 0 deletions
diff --git a/test cases/common/233 link depends indexed custom target/check_arch.py b/test cases/common/233 link depends indexed custom target/check_arch.py new file mode 100644 index 0000000..2e09f35 --- /dev/null +++ b/test cases/common/233 link depends indexed custom target/check_arch.py @@ -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)) diff --git a/test cases/common/233 link depends indexed custom target/meson.build b/test cases/common/233 link depends indexed custom target/meson.build index 5c066e9..c41c4c1 100644 --- a/test cases/common/233 link depends indexed custom target/meson.build +++ b/test cases/common/233 link depends indexed custom target/meson.build @@ -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) |