mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Reland dart_aot_runner shims
This reverts commit c375655fe1042d1de9b79f348968d6e297a5c271.
This commit is contained in:
parent
c375655fe1
commit
2dd184d5d5
@ -20,6 +20,7 @@ if (using_fuchsia_sdk) {
|
||||
deps = [
|
||||
"dart:kernel_compiler",
|
||||
"dart_runner:$dart_runner_target",
|
||||
"dart_runner/embedder:dart_aot_product_snapshot_cc",
|
||||
"flutter:flutter_aot_${product_suffix}runner",
|
||||
"flutter:flutter_jit_${product_suffix}runner",
|
||||
"flutter:flutter_runner_tests",
|
||||
|
||||
@ -2,38 +2,100 @@
|
||||
# Use of this source code is governed by a BSD-style license that can be
|
||||
# found in the LICENSE file.
|
||||
|
||||
import("//build/dart/toolchain.gni")
|
||||
import("//topaz/runtime/dart/dart_component.gni")
|
||||
import("//topaz/runtime/dart/dart_kernel.gni")
|
||||
import("//build/compiled_action.gni")
|
||||
import("//third_party/dart/build/dart/dart_action.gni")
|
||||
import("$flutter_root/common/fuchsia_config.gni")
|
||||
import("$flutter_root/tools/fuchsia/dart.gni")
|
||||
|
||||
dart_kernel("shim") {
|
||||
platform_name = "dart_runner"
|
||||
platform_deps = [ "//topaz/runtime/dart_runner/kernel:kernel_platform_files" ]
|
||||
platform_path = "$root_out_dir/dart_runner_patched_sdk"
|
||||
template("dart_shim_kernel") {
|
||||
prebuilt_dart_action(target_name) {
|
||||
assert(defined(invoker.main_dart), "main_dart is a required parameter.")
|
||||
|
||||
disable_analysis = true
|
||||
main_dart = rebase_path(invoker.main_dart)
|
||||
|
||||
main_dart = "shim.dart"
|
||||
deps = [
|
||||
"../kernel:kernel_platform_files($host_toolchain)",
|
||||
]
|
||||
|
||||
aot = true
|
||||
product = false
|
||||
gen_kernel_script = "//third_party/dart/pkg/vm/bin/gen_kernel.dart"
|
||||
platform_dill = "$root_out_dir/dart_runner_patched_sdk/platform_strong.dill"
|
||||
|
||||
visibility = [ ":*" ]
|
||||
dot_packages = rebase_path("//third_party/dart/.packages")
|
||||
|
||||
inputs = [
|
||||
gen_kernel_script,
|
||||
main_dart,
|
||||
dot_packages,
|
||||
]
|
||||
|
||||
output = "$target_gen_dir/$target_name.dill"
|
||||
outputs = [
|
||||
output,
|
||||
]
|
||||
|
||||
depfile = "$output.d"
|
||||
abs_depfile = rebase_path(depfile)
|
||||
rebased_output = rebase_path(output, root_build_dir)
|
||||
vm_args = [
|
||||
"--depfile=$abs_depfile",
|
||||
"--depfile_output_filename=$rebased_output",
|
||||
]
|
||||
|
||||
script = gen_kernel_script
|
||||
|
||||
args = [
|
||||
"--packages=" + rebase_path(dot_packages),
|
||||
"--target=dart_runner",
|
||||
"--platform=" + rebase_path(platform_dill),
|
||||
"--no-link-platform",
|
||||
"--output=" + rebase_path(output),
|
||||
]
|
||||
|
||||
if (is_debug) {
|
||||
args += [ "--embed-sources" ]
|
||||
} else {
|
||||
args += [ "--no-embed-sources" ]
|
||||
}
|
||||
|
||||
if (defined(invoker.aot) && invoker.aot) {
|
||||
args += [
|
||||
"--aot",
|
||||
"--tfa",
|
||||
]
|
||||
}
|
||||
|
||||
if (defined(invoker.product) && invoker.product) {
|
||||
# Setting this flag in a non-product release build for AOT (a "profile"
|
||||
# build) causes the vm service isolate code to be tree-shaken from an app.
|
||||
# See the pragma on the entrypoint here:
|
||||
#
|
||||
# https://github.com/dart-lang/sdk/blob/master/runtime/bin/vmservice/vmservice_io.dart#L240
|
||||
#
|
||||
# Also, this define excludes debugging and profiling code from Flutter.
|
||||
args += [ "-Ddart.vm.product=true" ]
|
||||
} else {
|
||||
if (!is_debug) {
|
||||
# The following define excludes debugging code from Flutter.
|
||||
args += [ "-Ddart.vm.profile=true" ]
|
||||
}
|
||||
}
|
||||
|
||||
visibility = [ ":*" ]
|
||||
|
||||
args += [ rebase_path(main_dart) ]
|
||||
}
|
||||
}
|
||||
|
||||
dart_kernel("shim_product") {
|
||||
platform_name = "dart_runner"
|
||||
platform_deps = [ "//topaz/runtime/dart_runner/kernel:kernel_platform_files" ]
|
||||
platform_path = "$root_out_dir/dart_runner_patched_sdk"
|
||||
|
||||
disable_analysis = true
|
||||
|
||||
dart_shim_kernel("shim_kernel") {
|
||||
main_dart = "shim.dart"
|
||||
|
||||
product = false
|
||||
aot = true
|
||||
product = true
|
||||
}
|
||||
|
||||
visibility = [ ":*" ]
|
||||
dart_shim_kernel("shim_product_kernel") {
|
||||
main_dart = "shim.dart"
|
||||
product = true
|
||||
aot = true
|
||||
}
|
||||
|
||||
template("create_aot_snapshot") {
|
||||
@ -42,13 +104,13 @@ template("create_aot_snapshot") {
|
||||
if (invoker.product) {
|
||||
product_suffix = "_product"
|
||||
}
|
||||
action("${target_name}_assembly") {
|
||||
compiled_action("${target_name}_assembly") {
|
||||
snapshot_assembly = "$target_gen_dir/aot${product_suffix}_vm_snapshot.S"
|
||||
|
||||
# gen_snapshot only needs this to go through the motions of setting up an isolate.
|
||||
shim_target = ":shim${product_suffix}_kernel"
|
||||
shim_kernel = get_label_info(shim_target, "target_gen_dir") +
|
||||
"/shim${product_suffix}_kernel.dil"
|
||||
"/shim${product_suffix}_kernel.dill"
|
||||
|
||||
inputs = [
|
||||
shim_kernel,
|
||||
@ -57,11 +119,13 @@ template("create_aot_snapshot") {
|
||||
snapshot_assembly,
|
||||
]
|
||||
|
||||
deps = gen_snapshot_deps + [ shim_target ]
|
||||
deps = [
|
||||
shim_target,
|
||||
]
|
||||
if (invoker.product) {
|
||||
script = gen_snapshot_product
|
||||
tool = gen_snapshot_product
|
||||
} else {
|
||||
script = gen_snapshot
|
||||
tool = gen_snapshot
|
||||
}
|
||||
|
||||
args = [
|
||||
@ -74,7 +138,7 @@ template("create_aot_snapshot") {
|
||||
# No asserts in debug or release product.
|
||||
# No asserts in release with flutter_profile=true (non-product)
|
||||
# Yes asserts in non-product debug.
|
||||
if (!invoker.product && (!flutter_profile || is_debug)) {
|
||||
if (!invoker.product && (!(flutter_runtime_mode == "profile") || is_debug)) {
|
||||
args += [ "--enable_asserts" ]
|
||||
}
|
||||
args += [ rebase_path(shim_kernel) ]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user