提交 009d470d 编写于 作者: A Alexander Aprelev 提交者: GitHub

Generate flutter-flavoured dart patched sdk and platform.dill (#3814)

* Build Flutter patched-sdk with kernel artifacts

* Switch to new dart_host_toolchain argument mechanism to let dart patch_sdk know of host_toolchain.

* Update dart dependency

* Updated licenses

* Rename dart dependencies tag so they have just 'dart_'-prefixed dart's names.

* Fix indentation and line breaks for newly added deps.

* Add toolchain for windows host

* Update dart revision

* Licenses

* Update licenses

* Revert changes to licenses_third_party
上级 38b3e89e
......@@ -7,6 +7,7 @@ group("flutter") {
deps = [
"//flutter/lib/snapshot:generate_snapshot_bin",
"//flutter/lib/snapshot:patched_sdk",
"//flutter/sky",
]
......
......@@ -27,16 +27,37 @@ vars = {
# When updating the Dart revision, ensure that all entries that are
# dependencies of Dart are also updated to match the entries in the
# Dart SDK's DEPS file for that revision of Dart. The DEPS file for
# Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS
# Dart is: https://github.com/dart-lang/sdk/blob/master/DEPS.
# You can use //dart/tools/create_updated_fluter_deps.py to produce
# updated revision list of existing dependencies.
'dart_revision': '3c543bb210711dd6761d592a863fd6f32e1f1279',
# Dart calls the next one "boringssl_gen_rev"
'dart_boringssl_gen_revision': '753224969dbe43dad29343146529727b5066c0f3',
# Dart calls the next one "boringssl_rev"
'dart_boringssl_revision': 'd519bf6be0b447fb80fbc539d4bff4479b5482a2',
# Dart calls the next one "observatory_pub_packages_rev"
'dart_observatory_packages_revision': '26aad88f1c1915d39bbcbff3cad589e2402fdcf1',
# Dart calls the next one "root_certificates_rev"
'dart_root_certificates_revision': 'a4c7c6f23a664a37bc1b6f15a819e3f2a292791a',
'dart_args_tag': '0.13.7',
'dart_async_tag': 'daf66909019d2aaec1721fc39d94ea648a9fdc1d',
'dart_boringssl_gen_rev': '753224969dbe43dad29343146529727b5066c0f3',
'dart_boringssl_rev': 'd519bf6be0b447fb80fbc539d4bff4479b5482a2',
'dart_charcode_tag': 'v1.1.1',
'dart_collection_tag': '1.13.0',
'dart_convert_tag': '2.0.1',
'dart_crypto_tag': '2.0.1',
'dart_csslib_tag': '0.13.3+1',
'dart_dart2js_info_tag': '0.5.4+2',
'dart_glob_tag': '1.1.3',
'dart_html_tag': '0.13.1',
'dart_isolate_tag': '1.0.0',
'dart_logging_tag': '0.11.3+1',
'dart_observatory_pub_packages_rev': '26aad88f1c1915d39bbcbff3cad589e2402fdcf1',
'dart_package_config_tag': '1.0.0',
'dart_path_tag': '1.4.1',
'dart_plugin_tag': '0.2.0',
'dart_pub_semver_tag': '1.3.2',
'dart_root_certificates_rev': 'a4c7c6f23a664a37bc1b6f15a819e3f2a292791a',
'dart_source_span_tag': '1.4.0',
'dart_string_scanner_tag': '1.0.1',
'dart_typed_data_tag': '1.1.3',
'dart_utf_tag': '0.9.0+3',
'dart_watcher_tag': '0.9.7+3',
'dart_yaml_tag': '2.1.12',
# Build bot tooling for iOS
'ios_tools_revision': '69b7c1b160e7107a6a98d948363772dc9caea46f',
......@@ -85,30 +106,92 @@ deps = {
'src/buildtools':
Var('fuchsia_git') + '/buildtools' + '@' + Var('buildtools_revision'),
'src/ios_tools':
'src/ios_tools':
Var('chromium_git') + '/chromium/src/ios.git' + '@' + Var('ios_tools_revision'),
'src/third_party/icu':
Var('chromium_git') + '/chromium/deps/icu.git' + '@' + 'c3f79166089e5360c09e3053fce50e6e296c3204',
'src/dart':
Var('chromium_git') + '/external/github.com/dart-lang/sdk.git' + '@' + Var('dart_revision'),
Var('chromium_git') + '/external/github.com/dart-lang/sdk.git' + '@' + Var('dart_revision'),
'src/third_party/boringssl':
Var('github_git') + '/dart-lang/boringssl_gen.git' + '@' + Var('dart_boringssl_gen_revision'),
Var('github_git') + '/dart-lang/boringssl_gen.git' + '@' + Var('dart_boringssl_gen_rev'),
'src/third_party/boringssl/src':
'https://boringssl.googlesource.com/boringssl.git' + '@' + Var('dart_boringssl_revision'),
'https://boringssl.googlesource.com/boringssl.git' + '@' + Var('dart_boringssl_rev'),
'src/dart/third_party/observatory_pub_packages':
Var('chromium_git') +
'/external/github.com/dart-lang/observatory_pub_packages' + '@' +
Var('dart_observatory_packages_revision'),
Var('chromium_git') + '/external/github.com/dart-lang/observatory_pub_packages' + '@' + Var('dart_observatory_pub_packages_rev'),
'src/dart/third_party/pkg/args':
Var('chromium_git') + '/external/github.com/dart-lang/args' + '@' + Var('dart_args_tag'),
'src/dart/third_party/pkg/async':
Var('chromium_git') + '/external/github.com/dart-lang/async' + '@' + Var('dart_async_tag'),
'src/dart/third_party/pkg/charcode':
Var('chromium_git') + '/external/github.com/dart-lang/charcode' + '@' + Var('dart_charcode_tag'),
'src/dart/third_party/pkg/collection':
Var('chromium_git') + '/external/github.com/dart-lang/collection' + '@' + Var('dart_collection_tag'),
'src/dart/third_party/pkg/convert':
Var('chromium_git') + '/external/github.com/dart-lang/convert' + '@' + Var('dart_convert_tag'),
'src/dart/third_party/pkg/crypto':
Var('chromium_git') + '/external/github.com/dart-lang/crypto' + '@' + Var('dart_crypto_tag'),
'src/dart/third_party/pkg/csslib':
Var('chromium_git') + '/external/github.com/dart-lang/csslib' + '@' + Var('dart_csslib_tag'),
'src/dart/third_party/pkg/dart2js_info':
Var('chromium_git') + '/external/github.com/dart-lang/dart2js_info' + '@' + Var('dart_dart2js_info_tag'),
'src/dart/third_party/pkg/isolate':
Var('chromium_git') + '/external/github.com/dart-lang/isolate' + '@' + Var('dart_isolate_tag'),
'src/dart/third_party/pkg/glob':
Var('chromium_git') + '/external/github.com/dart-lang/glob' + '@' + Var('dart_glob_tag'),
'src/dart/third_party/pkg/html':
Var('chromium_git') + '/external/github.com/dart-lang/html' + '@' + Var('dart_html_tag'),
'src/dart/third_party/pkg/logging':
Var('chromium_git') + '/external/github.com/dart-lang/logging' + '@' + Var('dart_logging_tag'),
'src/dart/third_party/pkg_tested/package_config':
Var('chromium_git') + '/external/github.com/dart-lang/package_config' + '@' + Var('dart_package_config_tag'),
'src/dart/third_party/pkg/path':
Var('chromium_git') + '/external/github.com/dart-lang/path' + '@' + Var('dart_path_tag'),
'src/dart/third_party/pkg/plugin':
Var('chromium_git') + '/external/github.com/dart-lang/plugin' + '@' + Var('dart_plugin_tag'),
'src/dart/third_party/pkg/pub_semver':
Var('chromium_git') + '/external/github.com/dart-lang/pub_semver' + '@' + Var('dart_pub_semver_tag'),
'src/dart/third_party/pkg/source_span':
Var('chromium_git') + '/external/github.com/dart-lang/source_span' + '@' + Var('dart_source_span_tag'),
'src/dart/third_party/pkg/string_scanner':
Var('chromium_git') + '/external/github.com/dart-lang/string_scanner' + '@' + Var('dart_string_scanner_tag'),
'src/dart/third_party/pkg/typed_data':
Var('chromium_git') + '/external/github.com/dart-lang/typed_data' + '@' + Var('dart_typed_data_tag'),
'src/dart/third_party/pkg/utf':
Var('chromium_git') + '/external/github.com/dart-lang/utf' + '@' + Var('dart_utf_tag'),
'src/dart/third_party/pkg/watcher':
Var('chromium_git') + '/external/github.com/dart-lang/watcher' + '@' + Var('dart_watcher_tag'),
'src/dart/third_party/pkg/yaml':
Var('chromium_git') + '/external/github.com/dart-lang/yaml' + '@' + Var('dart_yaml_tag'),
'src/third_party/root_certificates':
Var('chromium_git') +
'/external/github.com/dart-lang/root_certificates' + '@' +
Var('dart_root_certificates_revision'),
Var('chromium_git') + '/external/github.com/dart-lang/root_certificates' + '@' + Var('dart_root_certificates_rev'),
'src/third_party/skia':
Var('skia_git') + '/skia.git' + '@' + Var('skia_revision'),
......
......@@ -2,9 +2,11 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//flutter/lib/snapshot/toolchain.gni")
import("//flutter/lib/ui/dart_ui.gni")
import("//dart/runtime/vm/gypi_contents.gni")
import("//dart/utils/generate_patch_sdk.gni")
if (is_fuchsia) {
import("//apps/mozart/lib/flutter/sdk_ext/sdk_ext.gni")
import("//lib/fidl/dart/sdk_ext/sdk_ext.gni")
......@@ -245,3 +247,123 @@ source_set("snapshot") {
"$target_gen_dir/vm_snapshot_instructions.S",
]
}
# Generate flutter_patched_sdk
template("process_library_source") {
assert(defined(invoker.libsources), "Need libsources in $target_name")
assert(defined(invoker.output), "Need output in $target_name")
action(target_name) {
deps = [
":generate_dart_ui",
]
visibility = [ ":*" ] # Only targets in this file can see this.
libsources = invoker.libsources
script = invoker.script
inputs = invoker.inputs + libsources
outputs = [
invoker.output,
]
args = invoker.args + rebase_path(libsources, root_build_dir)
}
}
template("concatenate_patch") {
assert(defined(invoker.libsources), "Need a sources in $target_name")
assert(defined(invoker.output), "Need an output in $target_name")
process_library_source(target_name) {
libsources = invoker.libsources
inputs = []
output = invoker.output
script = "//dart/runtime/tools/concatenate_patches.py"
args = [
"--output",
rebase_path(output, root_build_dir),
]
}
}
template("generate_vm_patched_sdk") {
assert(defined(invoker.libraries), "Need libraries in $target_name")
concatenation_target_names = []
# Concatenate vm library patches.
foreach(library, invoker.libraries) {
name = library[0]
target_output = "$target_gen_dir/patches/${name}_patch.dart"
concatenate_patch("concatenate_${name}_patch") {
libsources = rebase_path(library[1], ".", library[2])
output = target_output
}
concatenation_target_names += [ ":concatenate_${name}_patch" ]
}
# Build the patched sdk out of the concatenated patches and the special
# libraries.
generate_patched_sdk(target_name) {
mode = "flutter"
deps = concatenation_target_names + ["//dart/runtime/vm:patched_sdk"]
input_patches_dir = "$target_gen_dir/patches"
patched_sdk_dir = "flutter_patched_sdk"
}
}
generate_vm_patched_sdk("patched_sdk") {
libraries = [
[
"async",
processed_gypis.async_runtime_sources,
"//dart/runtime/lib",
],
[
"collection",
processed_gypis.collection_runtime_sources,
"//dart/runtime/lib",
],
[
"convert",
processed_gypis.convert_runtime_sources,
"//dart/runtime/lib",
],
[
"core",
processed_gypis.core_runtime_sources,
"//dart/runtime/lib",
],
[
"developer",
processed_gypis.developer_runtime_sources,
"//dart/runtime/lib",
],
[
"internal",
processed_gypis.internal_runtime_sources,
"//dart/runtime/lib",
],
[
"io",
processed_gypis.bin_io_sources,
"//dart/runtime/bin",
],
[
"isolate",
processed_gypis.isolate_runtime_sources,
"//dart/runtime/lib",
],
[
"math",
processed_gypis.math_runtime_sources,
"//dart/runtime/lib",
],
[
"typed_data",
processed_gypis.typed_data_runtime_sources,
"//dart/runtime/lib",
],
]
}
# Copyright 2015 The Chromium 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("//flutter/common/config.gni") # for flutter_aot
if (target_os == "ios") {
import("//build/config/ios/ios_sdk.gni") # For use_ios_simulator
}
dart_host_toolchain = host_toolchain
# During precompilation, a 64 bit Dart VM cannot generate code for a 32 bit
# architecture (and vice-versa). The snapshotter that is running on the host
# needs to know about the target architecture and built accordingly.
if (target_os == "ios" && !use_ios_simulator) {
if (target_cpu == "arm") {
dart_host_toolchain = "//build/toolchain/mac:clang_i386"
} else if (target_cpu == "arm64") {
dart_host_toolchain = "//build/toolchain/mac:clang_x64"
} else {
assert(false, "Unknown active architecture on iOS")
}
}
if (target_os == "android" && flutter_aot) {
if (target_cpu == "arm") {
if (host_os == "linux") {
dart_host_toolchain = "//build/toolchain/linux:clang_x86"
}
if (host_os == "mac") {
dart_host_toolchain = "//build/toolchain/mac:clang_i386"
}
}
}
......@@ -2,8 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//flutter/lib/snapshot/toolchain.gni")
group("sky") {
testonly = true
......
......@@ -113,6 +113,20 @@ def to_gn_args(args):
if use_dbc:
gn_args['dart_target_arch'] = 'dbc'
# Modify host_toolchain into dart_host_toolchain so it matches word size of target_cpu
if args.target_os == 'android' and aot and gn_args['target_cpu'] == 'arm':
if sys.platform.startswith('linux'):
gn_args['dart_host_toolchain'] = "//build/toolchain/linux:clang_x86"
elif sys.platform.startswith('darwin'):
gn_args['dart_host_toolchain'] = "//build/toolchain/mac:clang_i386"
elif sys.platform.startswith('win'):
gn_args['dart_host_toolchain'] = "//build/toolchain/win:x86"
elif args.target_os == "ios" and not args.simulator:
if gn_args['target_cpu'] == 'arm':
gn_args['dart_host_toolchain'] = '//build/toolchain/mac:clang_i386'
elif gn_args['target_cpu'] == 'arm64':
gn_args['dart_host_toolchain'] = '//build/toolchain/mac:clang_x64'
gn_args['flutter_runtime_mode'] = args.runtime_mode
if args.target_sysroot:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册