aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2020-09-12 05:16:21 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2020-09-17 22:25:37 +0000
commit9b8ac9db32f245a917c50103cc02154dac30ba70 (patch)
treeb3ad935e7db1fc011658957b8350743f3839728b
parent946aeb6947cac6b88dd1ac1aafa32df158659143 (diff)
downloadmeson-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.
-rw-r--r--test cases/common/233 link depends indexed custom target/check_arch.py32
-rw-r--r--test cases/common/233 link depends indexed custom target/meson.build6
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)