[macOS] Deduplicate gen_snapshot creation targets (flutter/engine#36455)

Cleans up the logic for building gen_snapshot for macOS hosts. Also adds
a bit more documentation to the snapshot-related build targets.

Previously:
* gen_snapshot targeting macOS (on both x64, and arm64) were generated
  via the `create_macos_gen_snapshots` target.
* gen_snapshot arm/arm64 builds (on a macOS host) were generated via the
  `create_arm_gen_snapshot` target. The reason why this covers only
  arm/arm64 is simply that those are the only platforms we generate
  iOS/Android AOT builds for. x64 iOS implies a simulator build, but we
  only support debug builds for the iOS simulator, which aren't AOT
  builds, and thus don't require gen_snapshot.

These two conditions overlap in the case of arm64 (but not x64) target
builds. This separates the two cases cleanly. A later patch will merge
the two cases to use a single tool.

Note that NEITHER of these two scenarios mentions builds for macOS hosts
targeting Fuchsia. That's because this target is never invoked during
Fuchsia target builds. See:
75d2baf5fe/BUILD.gn (L93-L95)

Issue: https://github.com/flutter/flutter/issues/103386
Issue: https://github.com/flutter/flutter/issues/101138
This commit is contained in:
Chris Bracken 2022-09-28 00:08:09 +01:00 committed by GitHub
parent 4f0aa64e91
commit ae41d5b3f7

View File

@ -9,28 +9,48 @@ import("//flutter/lib/ui/dart_ui.gni")
import("//flutter/sky/tools/macos_snapshots.gni")
import("//third_party/dart/utils/compile_platform.gni")
# Generates the Dart/Flutter core platform files and tools.
#
# This target generates the platform-specific snapshots and snapshot-related
# tooling for a given target CPU.
#
# Outputs:
# * Core platform compiled to kernel bytecode
# * Core platform compiled to target_cpu-specific binary snapshot
# * target_cpu-specific gen_snapshot
# * target_cpu-specific analyze_snapshot
group("generate_snapshot_bins") {
deps = [
":generate_snapshot_bin",
":kernel_platform_files",
]
if (host_os == "mac" && (target_cpu == "arm" || target_cpu == "arm64")) {
deps += [ ":create_arm_gen_snapshot" ]
}
# Build gen_snapshot for the currently specified target_cpu.
#
# For macOS target builds: needed for both target CPUs (arm64, x64).
# For iOS, Android target builds: all AOT target CPUs are arm/arm64.
if (host_os == "mac" && target_os == "mac") {
deps += [ ":create_macos_gen_snapshots" ]
} else if (host_os == "mac" &&
(target_cpu == "arm" || target_cpu == "arm64")) {
deps += [ ":create_arm_gen_snapshot" ]
}
# Build analyze_snapshot for for 64-bit target CPUs.
if (target_cpu == "x64" || target_cpu == "arm64") {
deps +=
[ "//third_party/dart/runtime/bin:analyze_snapshot($host_toolchain)" ]
}
}
# Uses gen_snapshot to compile a Dart core platform snapshot.
# Compiles a binary snapshot of the core Dart/Flutter platform.
#
# Inputs:
# * platform_strong.dill
#
# Tools:
# * gen_snapshot
#
# Outputs:
# * vm_snapshot_data.bin
# * vm_snapshot_instructions.bin