mirror of
https://github.com/dart-lang/sdk
synced 2024-09-18 20:01:19 +00:00
3e304def65
The flutter engine needs to switch to the full SDK to include web support. As written, the dartdevc rules do not work outside of the sdk repo Bug: https://github.com/dart-lang/sdk/issues/35834 Change-Id: I3b7711cf1920d86b82ddc4f0959b447207f54751 Reviewed-on: https://dart-review.googlesource.com/c/93760 Reviewed-by: Vijay Menon <vsm@google.com> Reviewed-by: Jenny Messerly <jmesserly@google.com> Reviewed-by: Zach Anderson <zra@google.com> Commit-Queue: Vijay Menon <vsm@google.com>
352 lines
10 KiB
Plaintext
352 lines
10 KiB
Plaintext
# Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
import("../../build/dart/dart_action.gni")
|
|
import("../application_snapshot.gni")
|
|
import("../create_timestamp.gni")
|
|
|
|
patched_sdk_dir = "$target_gen_dir/patched_sdk"
|
|
sdk_summary = "$target_gen_dir/ddc_sdk.sum"
|
|
sdk_dill = "$target_gen_dir/kernel/ddc_sdk.dill"
|
|
sdk_libraries_json = "$target_gen_dir/libraries.json"
|
|
|
|
application_snapshot("dartdevc") {
|
|
main_dart = "../../pkg/dev_compiler/bin/dartdevc.dart"
|
|
|
|
training_args = [
|
|
"--dart-sdk",
|
|
rebase_path("../../sdk"),
|
|
"--dart-sdk-summary",
|
|
rebase_path(sdk_summary),
|
|
"-k",
|
|
"-o",
|
|
"dartdevc.js",
|
|
rebase_path("../../pkg/dev_compiler/bin/dartdevc.dart"),
|
|
]
|
|
|
|
deps = [
|
|
":dartdevc_sdk",
|
|
]
|
|
|
|
inputs = [ sdk_summary ]
|
|
}
|
|
|
|
sdk_lib_files = exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../sdk/lib"),
|
|
],
|
|
"list lines")
|
|
|
|
compiler_files = exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../pkg/compiler"),
|
|
],
|
|
"list lines")
|
|
|
|
dev_compiler_files = exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../pkg/dev_compiler"),
|
|
],
|
|
"list lines")
|
|
|
|
template("dart2js_compile") {
|
|
assert(defined(invoker.main), "Must specify the main file")
|
|
main = invoker.main
|
|
assert(defined(invoker.out), "Must specify the out file")
|
|
out = invoker.out
|
|
abs_main = rebase_path(main)
|
|
abs_output = rebase_path(out)
|
|
|
|
dart_action(target_name) {
|
|
deps = [
|
|
"../compiler:compile_dart2js_platform",
|
|
]
|
|
|
|
# dart_action() needs kernel service snapshot to run in Dart 2 mode.
|
|
# This can't be added as a dependency to dart_action() itself as it will
|
|
# create a circular dependency.
|
|
deps += [ "../../utils/kernel-service:kernel-service" ]
|
|
|
|
inputs = sdk_lib_files + compiler_files + dev_compiler_files + [
|
|
"$root_out_dir/dart2js_platform.dill",
|
|
"$root_out_dir/dart2js_outline.dill",
|
|
]
|
|
outputs = [
|
|
out,
|
|
]
|
|
|
|
script = "../../pkg/compiler/lib/src/dart2js.dart"
|
|
|
|
packages = "../../.packages"
|
|
|
|
args = [
|
|
"$abs_main",
|
|
"-m",
|
|
"-o$abs_output",
|
|
]
|
|
}
|
|
}
|
|
|
|
dart2js_compile("dartdevc_web") {
|
|
main = rebase_path("../../pkg/dev_compiler/web/main.dart")
|
|
out = "$root_out_dir/dev_compiler/build/web/ddc_web_compiler.js"
|
|
}
|
|
|
|
dart2js_compile("stack_trace_mapper") {
|
|
main = rebase_path("../../pkg/dev_compiler/web/stack_trace_mapper.dart")
|
|
out = "$root_out_dir/dev_compiler/build/web/dart_stack_trace_mapper.js"
|
|
}
|
|
|
|
# Apply dev_compiler's patch files to create the Dart version of the dartdevc
|
|
# SDK.
|
|
prebuilt_dart_action("dartdevc_patch_sdk") {
|
|
# TODO(rnystrom): Unfork DDC's patch_sdk.dart script with the
|
|
# tools/patch_sdk.dart and then change this to use generate_patch_sdk().
|
|
deps = [
|
|
":dartdevc_files_stamp",
|
|
":dartdevc_sdk_patch_stamp",
|
|
|
|
# The patch script uses several packages, including analyzer, so consider
|
|
# it dirty if any of those change.
|
|
"../../pkg:pkg_files_stamp",
|
|
]
|
|
|
|
script = "../../pkg/dev_compiler/tool/patch_sdk.dart"
|
|
|
|
# The main SDK library sources.
|
|
inputs = sdk_lib_files
|
|
|
|
# dev_compiler's additional sources and patch files.
|
|
inputs += exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../pkg/dev_compiler/tool/input_sdk"),
|
|
],
|
|
"list lines")
|
|
|
|
# Arbitrarily use the version file as a token file to check against to see if
|
|
# the sources have changed.
|
|
# TODO(rnystrom): List the outputs more precisely?
|
|
outputs = [
|
|
"$patched_sdk_dir/version",
|
|
]
|
|
|
|
args = [
|
|
rebase_path("../../"),
|
|
rebase_path("../../pkg/dev_compiler/tool/input_sdk"),
|
|
rebase_path(patched_sdk_dir),
|
|
]
|
|
}
|
|
|
|
# Compiles the Dart core libraries and DDC runtime to an analyzer summary and
|
|
# JS.
|
|
prebuilt_dart_action("dartdevc_sdk") {
|
|
deps = [
|
|
":dartdevc_files_stamp",
|
|
":dartdevc_patch_sdk",
|
|
"../../pkg:pkg_files_stamp",
|
|
]
|
|
|
|
script = "../../pkg/dev_compiler/tool/build_sdk.dart"
|
|
|
|
inputs = [
|
|
"../../pkg/dev_compiler/tool/build_sdk.dart",
|
|
|
|
# Since the entire patched SDK is built in one step, if any file changes,
|
|
# they all will. Instead of listing them all as outputs of
|
|
# dartdevc_patch_sdk (which would require something like a depfile), just
|
|
# use version as the token file whose timestamp we track.
|
|
# TODO(rnystrom): Do something better?
|
|
"$patched_sdk_dir/version",
|
|
|
|
# If dev_compiler itself changes, it can affect the generated SDK.
|
|
"$target_gen_dir/dartdevc_files.stamp",
|
|
|
|
# Likewise, the packages dev_compiler depends on may affect its output.
|
|
"$root_gen_dir/pkg_files.stamp",
|
|
]
|
|
|
|
outputs = [
|
|
sdk_summary,
|
|
"$target_gen_dir/js/amd/dart_sdk.js",
|
|
"$target_gen_dir/js/amd/dart_sdk.js.map",
|
|
"$target_gen_dir/js/common/dart_sdk.js",
|
|
"$target_gen_dir/js/common/dart_sdk.js.map",
|
|
"$target_gen_dir/js/es6/dart_sdk.js",
|
|
"$target_gen_dir/js/es6/dart_sdk.js.map",
|
|
"$target_gen_dir/js/legacy/dart_sdk.js",
|
|
"$target_gen_dir/js/legacy/dart_sdk.js.map",
|
|
]
|
|
|
|
args = [
|
|
"--dart-sdk",
|
|
rebase_path(patched_sdk_dir),
|
|
"--dart-sdk-summary=build",
|
|
"--summary-out",
|
|
rebase_path(sdk_summary),
|
|
"--source-map",
|
|
"--source-map-comment",
|
|
"--modules=amd",
|
|
"-o",
|
|
rebase_path("$target_gen_dir/js/amd/dart_sdk.js"),
|
|
"--modules=es6",
|
|
"-o",
|
|
rebase_path("$target_gen_dir/js/es6/dart_sdk.js"),
|
|
"--modules=common",
|
|
"-o",
|
|
rebase_path("$target_gen_dir/js/common/dart_sdk.js"),
|
|
"--modules=legacy",
|
|
"-o",
|
|
rebase_path("$target_gen_dir/js/legacy/dart_sdk.js"),
|
|
]
|
|
}
|
|
|
|
# Builds everything needed to run dartdevc tests using test.dart.
|
|
group("dartdevc_test") {
|
|
deps = [
|
|
":dartdevc",
|
|
":dartdevc_sdk",
|
|
":dartdevc_kernel_sdk",
|
|
":dartdevc_test_pkg",
|
|
"../../sdk:create_sdk",
|
|
]
|
|
}
|
|
|
|
# Builds everything needed to run dartdevc tests locally using test.dart without
|
|
# --use-sdk. This is the same as dartdevc_test, but skips things rely on
|
|
# building the Dart VM and create_sdk.
|
|
group("dartdevc_test_local") {
|
|
deps = [
|
|
":dartdevc_sdk",
|
|
":dartdevc_kernel_sdk",
|
|
":dartdevc_test_pkg",
|
|
]
|
|
}
|
|
|
|
create_timestamp_file("dartdevc_files_stamp") {
|
|
path = rebase_path("../../pkg/dev_compiler/lib")
|
|
output = "$target_gen_dir/dartdevc_files.stamp"
|
|
}
|
|
|
|
create_timestamp_file("dartdevc_sdk_patch_stamp") {
|
|
path = rebase_path("../../pkg/dev_compiler/tool/input_sdk")
|
|
output = "$target_gen_dir/dartdevc_sdk_patch_stamp.stamp"
|
|
}
|
|
|
|
# Compiles the packages used by the tests to JS with dartdevc so that they are
|
|
# available for loading by the tests.
|
|
prebuilt_dart_action("dartdevc_test_pkg") {
|
|
deps = [
|
|
":dartdevc_files_stamp",
|
|
":dartdevc_sdk",
|
|
":dartdevc_kernel_sdk",
|
|
"../../pkg:pkg_files_stamp",
|
|
]
|
|
|
|
inputs = [
|
|
sdk_dill,
|
|
sdk_libraries_json,
|
|
sdk_summary,
|
|
"$target_gen_dir/dartdevc_files.stamp",
|
|
"$root_gen_dir/pkg_files.stamp",
|
|
]
|
|
|
|
outputs = [
|
|
"$target_gen_dir/pkg/async_helper.js",
|
|
"$target_gen_dir/pkg/async_helper.sum",
|
|
"$target_gen_dir/pkg/collection.js",
|
|
"$target_gen_dir/pkg/collection.sum",
|
|
"$target_gen_dir/pkg/expect.js",
|
|
"$target_gen_dir/pkg/expect.sum",
|
|
"$target_gen_dir/pkg/js.js",
|
|
"$target_gen_dir/pkg/js.sum",
|
|
"$target_gen_dir/pkg/matcher.js",
|
|
"$target_gen_dir/pkg/matcher.sum",
|
|
"$target_gen_dir/pkg/meta.js",
|
|
"$target_gen_dir/pkg/meta.sum",
|
|
"$target_gen_dir/pkg/path.js",
|
|
"$target_gen_dir/pkg/path.sum",
|
|
"$target_gen_dir/pkg/stack_trace.js",
|
|
"$target_gen_dir/pkg/stack_trace.sum",
|
|
|
|
# TODO(rnystrom): Remove this when unittest is no longer used. Also remove
|
|
# any of the above packages that are only here because unittest uses them.
|
|
"$target_gen_dir/pkg/unittest.js",
|
|
"$target_gen_dir/pkg/unittest.sum",
|
|
|
|
"$target_gen_dir/pkg_kernel/async_helper.dill",
|
|
"$target_gen_dir/pkg_kernel/async_helper.js",
|
|
"$target_gen_dir/pkg_kernel/collection.dill",
|
|
"$target_gen_dir/pkg_kernel/collection.js",
|
|
"$target_gen_dir/pkg_kernel/expect.dill",
|
|
"$target_gen_dir/pkg_kernel/expect.js",
|
|
"$target_gen_dir/pkg_kernel/js.dill",
|
|
"$target_gen_dir/pkg_kernel/js.js",
|
|
"$target_gen_dir/pkg_kernel/matcher.dill",
|
|
"$target_gen_dir/pkg_kernel/matcher.js",
|
|
"$target_gen_dir/pkg_kernel/meta.dill",
|
|
"$target_gen_dir/pkg_kernel/meta.js",
|
|
"$target_gen_dir/pkg_kernel/path.dill",
|
|
"$target_gen_dir/pkg_kernel/path.js",
|
|
"$target_gen_dir/pkg_kernel/stack_trace.dill",
|
|
"$target_gen_dir/pkg_kernel/stack_trace.js",
|
|
|
|
# TODO(rnystrom): Remove this when unittest is no longer used. Also remove
|
|
# any of the above packages that are only here because unittest uses them.
|
|
"$target_gen_dir/pkg_kernel/unittest.dill",
|
|
"$target_gen_dir/pkg_kernel/unittest.js",
|
|
]
|
|
|
|
script = "../../pkg/dev_compiler/tool/build_pkgs.dart"
|
|
|
|
args = [
|
|
"--analyzer-sdk",
|
|
rebase_path(sdk_summary),
|
|
"--kernel-sdk",
|
|
rebase_path(sdk_dill),
|
|
"--output",
|
|
rebase_path("$target_gen_dir"),
|
|
]
|
|
}
|
|
|
|
# Compiles the DDC SDK's kernel summary and JS code.
|
|
prebuilt_dart_action("dartdevc_kernel_sdk") {
|
|
deps = [
|
|
"../../pkg:pkg_files_stamp",
|
|
":dartdevc_files_stamp",
|
|
":dartdevc_sdk_patch_stamp",
|
|
]
|
|
|
|
inputs = [
|
|
"../../pkg/dev_compiler/tool/kernel_sdk.dart",
|
|
"$target_gen_dir/dartdevc_files.stamp",
|
|
"$root_gen_dir/pkg_files.stamp",
|
|
]
|
|
|
|
outputs = [
|
|
sdk_dill,
|
|
sdk_libraries_json,
|
|
"$target_gen_dir/kernel/amd/dart_sdk.js",
|
|
"$target_gen_dir/kernel/amd/dart_sdk.js.map",
|
|
"$target_gen_dir/kernel/common/dart_sdk.js",
|
|
"$target_gen_dir/kernel/common/dart_sdk.js.map",
|
|
"$target_gen_dir/kernel/es6/dart_sdk.js",
|
|
"$target_gen_dir/kernel/es6/dart_sdk.js.map",
|
|
"$target_gen_dir/kernel/legacy/dart_sdk.js",
|
|
"$target_gen_dir/kernel/legacy/dart_sdk.js.map",
|
|
]
|
|
|
|
script = "../../pkg/dev_compiler/tool/kernel_sdk.dart"
|
|
|
|
args = [
|
|
"--output",
|
|
rebase_path(sdk_dill),
|
|
"--libraries",
|
|
rebase_path("../../sdk/lib/libraries.json"),
|
|
]
|
|
}
|