diff --git a/tests/standalone/gn_py_test.dart b/tests/standalone/gn_py_test.dart deleted file mode 100644 index fc0c3fc70e0..00000000000 --- a/tests/standalone/gn_py_test.dart +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import "dart:io"; -import "package:path/path.dart"; - -main() { - var result = Process.runSync("python3", [join("tools", "gn.py"), "--test"]); - print(result.stdout); - print(result.stderr); - if (result.exitCode != 0) { - throw "tools/gn.py --test failed with ${result.exitCode}"; - } -} diff --git a/tools/gn.py b/tools/gn.py index f99210f33f9..783ffa90a50 100755 --- a/tools/gn.py +++ b/tools/gn.py @@ -67,9 +67,14 @@ def ToCommandLine(gn_args): return [merge(x, y) for x, y in gn_args.items()] -# The C compiler's target under the host toolchain (DART_HOST_ARCH_***). +# The C compiler's host. def HostCpuForArch(arch): - arch = arch.split("_")[-1] + if arch.endswith('_x64'): + return 'x64' + if arch.endswith('_arm64'): + return 'arm64' + if arch.endswith('_riscv64'): + return 'riscv64' # For each target architecture, we prefer in descending order # - using the same architecture for the host (supports all architectures) @@ -100,28 +105,32 @@ def HostCpuForArch(arch): % (arch, candidates, available)) -# The C compiler's target under the target toolchain (DART_HOST_ARCH_***). -def TargetCpuForArch(arch): - arch = arch.split("_")[-1] - - # Non-simulator or explicit target architecture. +# The C compiler's target. +def TargetCpuForArch(arch, target_os): + # Real target architectures if arch in ['ia32']: return 'x86' elif arch in ['x64', 'x64c']: return 'x64' - elif arch in ['arm']: + elif arch in ['arm', 'arm_x64', 'arm_arm64', 'arm_riscv64']: return 'arm' elif arch in ['arm64', 'arm64c']: return 'arm64' - elif arch in ['riscv32']: + elif arch in ['riscv32', 'riscv32_x64', 'riscv32_arm64', 'riscv32_riscv64']: return 'riscv32' elif arch in ['riscv64']: return 'riscv64' - # Simulators with implicit target architecture. - if arch in ['simarm', 'simriscv32']: + # Simulators + if arch in ['simarm_x64', 'simriscv32_x64']: + return 'x64' + elif arch in ['simarm_arm64', 'simriscv32_arm64', 'simx64', 'simx64c']: + return 'arm64' + elif arch in ['simarm_riscv64', 'simriscv32_riscv64']: + return 'riscv64' + elif arch in ['simarm', 'simriscv32']: candidates = ['arm', 'riscv32', 'x86'] - elif arch in ['simx64', 'simx64c', 'simarm64', 'simarm64c', 'simriscv64']: + elif arch in ['simarm64', 'simarm64c', 'simriscv64']: candidates = ['arm64', 'riscv64', 'x64'] else: raise Exception("Unknown Dart architecture: %s" % arch) @@ -136,18 +145,28 @@ def TargetCpuForArch(arch): % (arch, candidates, available)) -# The Dart compiler's target (DART_TARGET_ARCH_***) +# The Dart compiler's target. def DartTargetCpuForArch(arch): - arch = arch.split("_")[0] - if arch.startswith("sim"): - arch = arch[3:] - if arch.endswith("c"): - arch = arch[:-1] + if arch in ['ia32']: + return 'ia32' + if arch in ['x64', 'x64c', 'simx64', 'simx64c']: + return 'x64' + if arch in [ + 'arm', 'simarm', 'simarm_x64', 'arm_x64', 'simarm_arm64', + 'arm_arm64' + ]: + return 'arm' + if arch in ['arm64', 'simarm64', 'arm64c', 'simarm64c']: + return 'arm64' + if arch in ['riscv32', 'simriscv32']: + return 'riscv32' + if arch in ['riscv64', 'simriscv64']: + return 'riscv64' return arch def IsCompressedPointerArch(arch): - return "64c" in arch + return arch in ['x64c', 'arm64c', 'simarm64c'] def HostOsForGn(host_os): @@ -198,7 +217,7 @@ def ToGnArgs(args, mode, arch, target_os, sanitizer, verify_sdk_hash): gn_args['target_os'] = target_os gn_args['host_cpu'] = HostCpuForArch(arch) - gn_args['target_cpu'] = TargetCpuForArch(arch) + gn_args['target_cpu'] = TargetCpuForArch(arch, target_os) gn_args['dart_target_arch'] = DartTargetCpuForArch(arch) gn_args['dart_use_compressed_pointers'] = IsCompressedPointerArch(arch) @@ -363,7 +382,14 @@ def ProcessOptions(args): print("Unknown mode %s" % mode) return False for i, arch in enumerate(args.arch): - args.arch[i] = arch.lower() + if not arch in AVAILABLE_ARCHS: + # Normalise to lower case form to make it less case-picky. + arch_lower = arch.lower() + if arch_lower in AVAILABLE_ARCHS: + args.arch[i] = arch_lower + continue + print("Unknown arch %s" % arch) + return False oses = [ProcessOsOption(os_name) for os_name in args.os] for os_name in oses: if not os_name in [ @@ -546,10 +572,6 @@ def AddOtherArgs(parser): help='Verbose output.', default=False, action="store_true") - parser.add_argument("--test", - help='Test this script.', - default=False, - action="store_true") def parse_args(args): @@ -636,68 +658,6 @@ def RunGnOnConfiguredConfigurations(args): return 0 -def ExpectEquals(actual, expected): - if actual != expected: - raise Exception(f"Actual: {actual} Expected: {expected}") - - -def RunTests(): - host_arch = utils.HostArchitectures()[0] - host_arch_or_x64 = host_arch - if 'x64' in utils.HostArchitectures(): - # Rosetta means 'x64' may be built directly. - host_arch_or_x64 = 'x64' - - ExpectEquals(HostCpuForArch("arm64"), host_arch) - ExpectEquals(HostCpuForArch("arm64c"), host_arch) - ExpectEquals(HostCpuForArch("simarm64"), host_arch) - ExpectEquals(HostCpuForArch("simarm64_x64"), host_arch_or_x64) - ExpectEquals(HostCpuForArch("simarm64_arm64"), host_arch) - ExpectEquals(HostCpuForArch("simarm64_riscv64"), host_arch) - ExpectEquals(HostCpuForArch("x64"), host_arch_or_x64) - ExpectEquals(HostCpuForArch("simx64"), host_arch_or_x64) - ExpectEquals(HostCpuForArch("simx64_x64"), host_arch_or_x64) - ExpectEquals(HostCpuForArch("simx64_arm64"), host_arch) - ExpectEquals(HostCpuForArch("simx64_riscv64"), host_arch) - - ExpectEquals(TargetCpuForArch("arm64"), "arm64") - ExpectEquals(TargetCpuForArch("arm64c"), "arm64") - ExpectEquals(TargetCpuForArch("simarm64"), host_arch) - ExpectEquals(TargetCpuForArch("simarm64_x64"), "x64") - ExpectEquals(TargetCpuForArch("simarm64_arm64"), "arm64") - ExpectEquals(TargetCpuForArch("simarm64_riscv64"), "riscv64") - ExpectEquals(TargetCpuForArch("x64"), "x64") - ExpectEquals(TargetCpuForArch("simx64"), host_arch) - ExpectEquals(TargetCpuForArch("simx64_x64"), "x64") - ExpectEquals(TargetCpuForArch("simx64_arm64"), "arm64") - ExpectEquals(TargetCpuForArch("simx64_riscv64"), "riscv64") - - ExpectEquals(DartTargetCpuForArch("arm64"), "arm64") - ExpectEquals(DartTargetCpuForArch("arm64c"), "arm64") - ExpectEquals(DartTargetCpuForArch("simarm64"), "arm64") - ExpectEquals(DartTargetCpuForArch("simarm64_x64"), "arm64") - ExpectEquals(DartTargetCpuForArch("simarm64_arm64"), "arm64") - ExpectEquals(DartTargetCpuForArch("simarm64_riscv64"), "arm64") - ExpectEquals(DartTargetCpuForArch("x64"), "x64") - ExpectEquals(DartTargetCpuForArch("simx64"), "x64") - ExpectEquals(DartTargetCpuForArch("simx64_x64"), "x64") - ExpectEquals(DartTargetCpuForArch("simx64_arm64"), "x64") - ExpectEquals(DartTargetCpuForArch("simx64_riscv64"), "x64") - - ExpectEquals(IsCompressedPointerArch("arm64c"), True) - ExpectEquals(IsCompressedPointerArch("simarm64c"), True) - ExpectEquals(IsCompressedPointerArch("simarm64c_x64"), True) - ExpectEquals(IsCompressedPointerArch("x64c"), True) - ExpectEquals(IsCompressedPointerArch("simx64c"), True) - ExpectEquals(IsCompressedPointerArch("simx64c_x64"), True) - ExpectEquals(IsCompressedPointerArch("arm64"), False) - ExpectEquals(IsCompressedPointerArch("simarm64"), False) - ExpectEquals(IsCompressedPointerArch("simarm64_x64"), False) - ExpectEquals(IsCompressedPointerArch("x64"), False) - ExpectEquals(IsCompressedPointerArch("simx64"), False) - ExpectEquals(IsCompressedPointerArch("simx64_x64"), False) - - def Main(argv): starttime = time.time() @@ -705,11 +665,6 @@ def Main(argv): if args is None: return 1 - if args.test: - RunTests() - print("Tests passed.") - return 0 - result = RunGnOnConfiguredConfigurations(args) if args.verbose: