From 681453133d5d063669dce031a91e2436d93967b7 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 18 Aug 2022 14:59:32 +0200 Subject: [PATCH 1/2] identify windows on arm architecture (ARM64) --- tools/gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/gn b/tools/gn index 87c379fb6cf49..cded9aef0549f 100755 --- a/tools/gn +++ b/tools/gn @@ -165,7 +165,7 @@ def get_host_cpu(): if is_rosetta(): return 'arm64' machine = platform.machine() - if machine in ['aarch64', 'arm64']: + if machine in ['aarch64', 'arm64', 'ARM64']: return 'arm64' if machine in ['x86_64', 'AMD64', 'x64']: return 'x64' From 62568a8c39e1b88aa2ca0c01403256843afc3a97 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 18 Aug 2022 15:39:56 +0200 Subject: [PATCH 2/2] add windows arm64 to get_host_cpu and avoid cross compilation --- tools/gn | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/gn b/tools/gn index cded9aef0549f..a2b365c0970dc 100755 --- a/tools/gn +++ b/tools/gn @@ -177,6 +177,7 @@ def get_host_cpu(): # Returns the target CPU architecture. # # For macOS host builds where --mac-cpu is specified, returns that value. +# For windows host builds where --windows-cpu is specified, returns that value. # For all other host builds, assumes 'x64'. def get_target_cpu(args): if args.target_os == 'android': @@ -199,6 +200,9 @@ def get_target_cpu(args): # Host build. Default to x64 unless overridden. if get_host_os() == 'mac' and args.mac_cpu: return args.mac_cpu + if get_host_os() == 'win' and args.windows_cpu: + return args.windows_cpu + return 'x64' @@ -324,8 +328,12 @@ def to_gn_args(args): # No cross-compilation on Windows (for now). Use host toolchain that # matches the bit-width of the target architecture. if sys.platform.startswith(('cygwin', 'win')) and args.target_os != 'win': - gn_args['host_cpu'] = cpu_for_target_arch(gn_args['target_cpu']) - gn_args['target_cpu'] = cpu_for_target_arch(gn_args['target_cpu']) + cpu = cpu_for_target_arch(gn_args['target_cpu']) + # We explicitly allow arm64 native build. 'host_cpu' key may not exist. + if gn_args.get('host_cpu') == 'arm64' and gn_args['target_cpu'] == 'arm64': + cpu = 'arm64' + gn_args['host_cpu'] = cpu + gn_args['target_cpu'] = cpu # macOS host builds (whether x64 or arm64) must currently be built under # Rosetta on Apple Silicon Macs.