未验证 提交 3e3efe4c 编写于 作者: K Kaushik Iska 提交者: GitHub

[dart_runner] dart jit runner and dart jit product runner (#10179)

We now build dart runner as well
上级 4b587a6c
# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("config.gni")
if (is_fuchsia && using_fuchsia_sdk) {
dart_tools_root = "//flutter/tools/fuchsia/dart"
fuchsia_base = "//flutter/shell/platform/fuchsia"
flutter_runner_base = "$fuchsia_base/flutter/"
dart_runner_base = "$fuchsia_base/dart_runner/"
}
......@@ -13,10 +13,11 @@ if (using_fuchsia_sdk) {
}
flutter_runner_target = "flutter_jit_${product_suffix}runner"
dart_runner_target = "dart_jit_${product_suffix}runner"
group("fuchsia") {
deps = [
# "dart",
"dart_runner:$dart_runner_target",
"flutter:$flutter_runner_target",
]
}
......
......@@ -5,25 +5,22 @@
assert(is_fuchsia)
import("//build/fuchsia/sdk.gni")
import("$flutter_root/common/fuchsia_config.gni")
import("$flutter_root/tools/fuchsia/common_libs.gni")
import("$flutter_root/tools/fuchsia/dart.gni")
import("$flutter_root/tools/fuchsia/package_dir.gni")
if (using_fuchsia_sdk) {
import("//flutter/common/config.gni")
template("runner") {
assert(defined(invoker.product), "The parameter 'product' must be defined")
assert(defined(invoker.output_name),
"The parameter 'output_name' must be defined")
group("dart_io_api") {
visibility = [ ":*" ]
public_deps = []
invoker_output_name = invoker.output_name
extra_defines = invoker.extra_defines
extra_deps = invoker.extra_deps
if (flutter_runtime_mode == "debug") {
public_deps += [ "//third_party/dart/runtime/bin:dart_io_api" ]
} else {
public_deps += [ "//third_party/dart/runtime/bin:dart_io_api_product" ]
}
}
executable("dart") {
output_name = "dart_runner"
public = []
executable(target_name) {
output_name = invoker_output_name
sources = [
"builtin_libraries.cc",
......@@ -40,22 +37,128 @@ if (using_fuchsia_sdk) {
"service_isolate.h",
]
defines = extra_defines
dart_deps = []
if (!invoker.product) {
dart_deps += [ "//third_party/dart/runtime/bin:dart_io_api" ]
} else {
dart_deps += [ "//third_party/dart/runtime/bin:dart_io_api_product" ]
}
deps = [
"$flutter_root/common",
"$flutter_root/fml",
"$flutter_root/runtime:libdart",
"$flutter_root/shell/platform/fuchsia/dart-pkg/fuchsia",
"$flutter_root/shell/platform/fuchsia/dart-pkg/zircon",
"$flutter_root/shell/platform/fuchsia/runtime/dart/utils",
"$fuchsia_sdk_root/pkg:async-cpp",
"$fuchsia_sdk_root/pkg:async-loop",
"$fuchsia_sdk_root/pkg:async-loop-cpp",
"$fuchsia_sdk_root/pkg:fidl_cpp",
"$fuchsia_sdk_root/pkg:syslog",
"$fuchsia_sdk_root/pkg/lib/sys/cpp",
"$fuchsia_sdk_root/pkg/lib/vfs/cpp",
"//third_party/tonic",
] + dart_deps + extra_deps
}
}
runner("dart_jit_runner_bin") {
output_name = "dart_jit_runner"
product = false
extra_defines = []
if (flutter_runtime_mode == "profile") {
extra_defines += [ "FLUTTER_PROFILE" ]
}
extra_deps = [
"//third_party/dart/runtime:libdart_jit",
"//third_party/dart/runtime/platform:libdart_platform_jit",
]
}
runner("dart_jit_product_runner_bin") {
output_name = "dart_jit_product_runner"
product = true
extra_defines = [ "DART_PRODUCT" ]
extra_deps = [
"//third_party/dart/runtime:libdart_jit_product",
"//third_party/dart/runtime/platform:libdart_platform_jit_product",
]
}
template("jit_runner_package") {
assert(defined(invoker.product), "The parameter 'product' must be defined")
product_suffix = ""
if (invoker.product) {
product_suffix = "_product"
}
package_dir(target_name) {
deps = [
":dart_io_api",
"$flutter_root/common",
"$flutter_root/fml",
"$flutter_root/runtime:libdart",
"$flutter_root/shell/platform/fuchsia/dart-pkg/fuchsia",
"$flutter_root/shell/platform/fuchsia/dart-pkg/zircon",
"$flutter_root/shell/platform/fuchsia/runtime/dart/utils",
"$fuchsia_sdk_root/pkg:async-cpp",
"$fuchsia_sdk_root/pkg:async-loop",
"$fuchsia_sdk_root/pkg:async-loop-cpp",
"$fuchsia_sdk_root/pkg:fidl_cpp",
"$fuchsia_sdk_root/pkg:syslog",
"$fuchsia_sdk_root/pkg/lib/sys/cpp",
"$fuchsia_sdk_root/pkg/lib/vfs/cpp",
"//third_party/tonic",
":dart_jit${product_suffix}_runner_bin",
"$flutter_runner_base/kernel:kernel_core_snapshot${product_suffix}",
]
if (!invoker.product) {
deps += [ observatory_target ]
}
binary = "dart_jit${product_suffix}_runner"
meta_dir = "$flutter_root/shell/platform/fuchsia/dart_runner/meta"
snapshot_gen_dir =
"$root_build_dir/gen/flutter/shell/platform/fuchsia/flutter/kernel"
libraries = common_libs
resources = [
{
path = rebase_path(
"$snapshot_gen_dir/vm_isolate_snapshot${product_suffix}.bin")
dest = "vm_snapshot_data.bin"
},
{
path = rebase_path(
"$snapshot_gen_dir/vm_snapshot_instructions${product_suffix}.bin")
dest = "vm_snapshot_instructions.bin"
},
{
path = rebase_path(
"$snapshot_gen_dir/isolate_snapshot${product_suffix}.bin")
dest = "isolate_core_snapshot_data.bin"
},
{
path = rebase_path(
"$snapshot_gen_dir/isolate_snapshot_instructions${product_suffix}.bin")
dest = "isolate_core_snapshot_instructions.bin"
},
]
if (!invoker.product) {
resources += [
{
path = rebase_path(observatory_archive_file)
dest = "observatory.tar"
},
]
}
meta = [
{
path = rebase_path("meta/dart_jit${product_suffix}_runner.cmx")
dest = "dart_jit${product_suffix}_runner.cmx"
},
]
}
}
jit_runner_package("dart_jit_runner") {
product = false
}
jit_runner_package("dart_jit_product_runner") {
product = true
}
......@@ -8,6 +8,7 @@ import("//build/fuchsia/sdk.gni")
import("$flutter_root/common/config.gni")
import("$flutter_root/shell/gpu/gpu.gni")
import("$flutter_root/tools/fuchsia/common_libs.gni")
import("$flutter_root/tools/fuchsia/dart.gni")
import("$flutter_root/tools/fuchsia/package_dir.gni")
shell_gpu_configuration("fuchsia_gpu_configuration") {
......@@ -195,13 +196,6 @@ flutter_runner("aot_product") {
]
}
observatory_target =
"//third_party/dart/runtime/observatory:observatory_archive"
observatory_archive_dir = get_label_info(observatory_target, "target_gen_dir")
observatory_archive_name = get_label_info(observatory_target, "name")
observatory_archive_file =
"${observatory_archive_dir}/${observatory_archive_name}.tar"
template("jit_runner") {
product = defined(invoker.product) && invoker.product
......@@ -226,6 +220,8 @@ template("jit_runner") {
binary = "flutter_jit${product_suffix}_runner"
meta_dir = "$flutter_root/shell/platform/fuchsia/flutter/meta"
resources = [
{
path = rebase_path("//third_party/icu/common/icudtl.dat")
......@@ -292,6 +288,8 @@ template("aot_runner") {
deps += [ observatory_target ]
}
meta_dir = "$flutter_root/shell/platform/fuchsia/flutter/meta"
binary = "flutter_aot${product_suffix}_runner"
resources = [
......
......@@ -85,10 +85,10 @@ def CopyFiles(source, destination):
raise
def CopyToBucketWithMode(source, destination, aot, product):
def CopyToBucketWithMode(source, destination, aot, product, runner_type):
mode = 'aot' if aot else 'jit'
product_suff = '_product' if product else ''
runner_name = 'flutter_%s%s_runner' % (mode, product_suff)
runner_name = '%s_%s%s_runner' % (runner_type, mode, product_suff)
far_dir = '%s_far' % runner_name
source_root = os.path.join(_out_dir, source)
source = os.path.join(source_root, far_dir)
......@@ -104,9 +104,10 @@ def CopyToBucketWithMode(source, destination, aot, product):
CopyPath(patched_sdk_dir, dest_sdk_path)
def CopyToBucket(src, dst, product = False):
CopyToBucketWithMode(src, dst, False, product)
CopyToBucketWithMode(src, dst, True, product)
def CopyToBucket(src, dst, product=False):
CopyToBucketWithMode(src, dst, False, product, 'flutter')
CopyToBucketWithMode(src, dst, True, product, 'flutter')
CopyToBucketWithMode(src, dst, False, product, 'dart')
def BuildBucket():
......@@ -138,9 +139,12 @@ def ProcessCIPDPakcage(upload, engine_version):
subprocess.check_call(command, cwd=_bucket_directory)
def GetRunnerTarget(product, aot):
base = 'flutter/shell/platform/fuchsia/flutter:'
target = 'flutter_'
def GetRunnerTarget(runner_type, product, aot):
base = 'flutter/shell/platform/fuchsia/%s:' % runner_type
if 'dart' in runner_type:
target = 'dart_'
else:
target = 'flutter_'
if aot:
target += 'aot_'
else:
......@@ -154,10 +158,10 @@ def GetRunnerTarget(product, aot):
def GetTargetsToBuild(product=False):
targets_to_build = [
# The Flutter Runner.
GetRunnerTarget(product, False),
GetRunnerTarget(product, True),
GetRunnerTarget('flutter', product, False),
GetRunnerTarget('flutter', product, True),
# The Dart Runner.
# 'flutter/shell/platform/fuchsia/dart:dart',
GetRunnerTarget('dart_runner', product, False),
]
return targets_to_build
......@@ -196,7 +200,7 @@ def main():
BuildBucket()
ProcessCIPDPakcage(args.upload, args.engine_version)
# ProcessCIPDPakcage(args.upload, args.engine_version)
if __name__ == '__main__':
......
......@@ -4,3 +4,10 @@
gen_snapshot = "//third_party/dart/runtime/bin:gen_snapshot"
gen_snapshot_product = "//third_party/dart/runtime/bin:gen_snapshot_product"
observatory_target =
"//third_party/dart/runtime/observatory:observatory_archive"
observatory_archive_dir = get_label_info(observatory_target, "target_gen_dir")
observatory_archive_name = get_label_info(observatory_target, "name")
observatory_archive_file =
"${observatory_archive_dir}/${observatory_archive_name}.tar"
......@@ -7,6 +7,7 @@
# This currently ignores the CMX files and does minimal validation.
template("package_dir") {
assert(defined(invoker.binary), "package must define binary")
assert(defined(invoker.meta_dir), "package must define meta_dir")
pkg_target_name = target_name
pkg = {
......@@ -18,6 +19,7 @@ template("package_dir") {
"meta",
"resources",
"libraries",
"meta_dir",
])
if (!defined(package_name)) {
package_name = pkg_target_name
......@@ -51,13 +53,13 @@ template("package_dir") {
copy_outputs += [ "$far_base_dir/lib/${lib.name}" ]
}
flutter_meta_dir = "$flutter_root/shell/platform/fuchsia/flutter/meta"
meta_dir = pkg.meta_dir
cmx_target = "$pkg_target_name.copy_cmx"
copy("$cmx_target") {
sources = [
"${flutter_meta_dir}/${pkg_target_name}.cmx",
"${meta_dir}/${pkg_target_name}.cmx",
]
outputs = [
"$far_base_dir/meta/{{source_file_part}}",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册