未验证 提交 0fd9b168 编写于 作者: K Kaushik Iska 提交者: GitHub

Reland dart_aot_runner shims

This reverts commit f20c773c.
上级 f20c773c
......@@ -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")
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"
inputs = [
gen_kernel_script,
main_dart,
dot_packages,
]
disable_analysis = true
output = "$target_gen_dir/$target_name.dill"
outputs = [
output,
]
main_dart = "shim.dart"
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_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) ]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册