mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 10:49:00 +00:00
f4e949609c
- Introduces a new output subdirectory `gen/utils/ddc` where the new build targets output files. This is intended to make the migration to the new assets easier since landing this change shouldn't immediately break any dependencies. - Enables building the canary and stable assets at the same time. - Changes more names in our workflow from "dartdevc" to "ddc". - Updates the ddc-canary-linux-chrome and ddc-canary-linux-chrome-unsound configurations to use the new assets. The new outputs appear in directories that are more consistently named, (no more sound vs kernel confusion). They are named in preparation for the eventual deletion of the unsound targets without any lingering cruft to be cleaned up in the sound directories. The new structure is: ``` gen/utils/ddc/ |- canary | |- pkg | |- sdk |- canary_unsound | |- pkg | |- sdk |- stable | |- pkg | |- sdk |- stable-unsound |- pkg |- sdk ``` The 'pkg' and 'sdk' directories all contain outputs with the same files names, each compiled in the respective build modes (sound/unsound and stable/canary). Change-Id: I66822ebf03bba487b6d359a8e0aa818b9e7b6bef Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/313081 Reviewed-by: Sigmund Cherem <sigmund@google.com> Commit-Queue: Nicholas Shahan <nshahan@google.com>
408 lines
10 KiB
Text
408 lines
10 KiB
Text
# Copyright (c) 2023, 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")
|
|
|
|
sdk_outline_sound_dill = "$root_out_dir/ddc_outline.dill"
|
|
sdk_full_sound_dill = "$root_out_dir/ddc_platform.dill"
|
|
sdk_outline_unsound_dill = "$root_out_dir/ddc_outline_unsound.dill"
|
|
sdk_full_unsound_dill = "$root_out_dir/ddc_platform_unsound.dill"
|
|
|
|
# Builds everything needed to run tests with DDC (stable) using test.dart.
|
|
group("ddc_stable_test") {
|
|
deps = [
|
|
":ddc_stable_test_local",
|
|
"../..:create_sdk",
|
|
|
|
# TODO(nshahan): Move the dartdevc snapshot target to this file.
|
|
"../dartdevc:dartdevc",
|
|
]
|
|
}
|
|
|
|
# Builds everything needed to run tests with DDC (canary) using test.dart.
|
|
group("ddc_canary_test") {
|
|
deps = [
|
|
":ddc_canary_test_local",
|
|
"../..:create_sdk",
|
|
|
|
# TODO(nshahan): Move the dartdevc snapshot target to this file.
|
|
"../dartdevc:dartdevc",
|
|
]
|
|
}
|
|
|
|
# Builds everything needed to run tests with DDC (stable) locally using
|
|
# test.dart without --use-sdk.
|
|
#
|
|
# This is the same as ddc_stable_test, but skips the targets that depend on
|
|
# building the Dart VM and create_sdk.
|
|
group("ddc_stable_test_local") {
|
|
deps = [
|
|
":ddc_stable_sdk",
|
|
":ddc_stable_test_pkg",
|
|
":ddc_stable_unsound_sdk",
|
|
]
|
|
}
|
|
|
|
# Builds everything needed to run tests with DDC (stable) locally using
|
|
# test.dart without --use-sdk.
|
|
#
|
|
# This is the same as ddc_stable_test,but skips the targets that depend on
|
|
# building the Dart VM and create_sdk.
|
|
group("ddc_canary_test_local") {
|
|
deps = [
|
|
":ddc_canary_sdk",
|
|
":ddc_canary_test_pkg",
|
|
":ddc_canary_unsound_sdk",
|
|
]
|
|
}
|
|
|
|
create_timestamp_file("ddc_files_stamp") {
|
|
path = rebase_path("../../pkg/dev_compiler/lib")
|
|
output = "$target_gen_dir/ddc_files.stamp"
|
|
}
|
|
|
|
# Compiles to JavaScript using DDC (stable) all packages imported in tests.
|
|
# TODO(sigmund): generate a js bundle or a module that load these indirectly so
|
|
# we can stop referring to this list of packages explicitly in the test_runner.
|
|
group("ddc_stable_test_pkg") {
|
|
deps = [
|
|
":async_helper_stable_js",
|
|
":async_helper_stable_unsound_js",
|
|
":expect_stable_js",
|
|
":expect_stable_unsound_js",
|
|
":js_stable_js",
|
|
":js_stable_unsound_js",
|
|
":meta_stable_js",
|
|
":meta_stable_unsound_js",
|
|
]
|
|
}
|
|
|
|
# Compiles to JavaScript using DDC (canary) all packages imported in tests.
|
|
group("ddc_canary_test_pkg") {
|
|
deps = [
|
|
":async_helper_canary_js",
|
|
":async_helper_canary_unsound_js",
|
|
":expect_canary_js",
|
|
":expect_canary_unsound_js",
|
|
":js_canary_js",
|
|
":js_canary_unsound_js",
|
|
":meta_canary_js",
|
|
":meta_canary_unsound_js",
|
|
]
|
|
}
|
|
|
|
template("ddc_compile") {
|
|
assert(defined(invoker.package),
|
|
"Need 'package' in $target_name (the name of the package)")
|
|
assert(defined(invoker.sound_null_safety),
|
|
"Need 'sound_null_safety' in $target_name.")
|
|
|
|
# Determine one of four possible directories for the JavaScript output to be
|
|
# generated:
|
|
#
|
|
# out/gen/ddc
|
|
# |- canary/pkg
|
|
# |- canary_unsound/pkg
|
|
# |- stable/pkg
|
|
# |- stable_unsound/pkg
|
|
if (invoker.canary) {
|
|
js_gen_dir = "$target_gen_dir/canary"
|
|
} else {
|
|
js_gen_dir = "$target_gen_dir/stable"
|
|
}
|
|
if (invoker.sound_null_safety) {
|
|
platform_dep = "../dartdevc:dartdevc_platform_sound"
|
|
sdk_outline = sdk_outline_sound_dill
|
|
js_gen_dir = "$js_gen_dir/pkg"
|
|
} else {
|
|
platform_dep = "../dartdevc:dartdevc_platform_unsound"
|
|
sdk_outline = sdk_outline_unsound_dill
|
|
js_gen_dir = "${js_gen_dir}_unsound/pkg"
|
|
}
|
|
|
|
# Other optional invoker parameters:
|
|
# * extra_libraries: entrypoints to include in the module as
|
|
# "package:package_name/library_name.dart" (the rule implicitly adds
|
|
# the default import "package:package_name/package_name.dart").
|
|
# * package_dependencies: the name of other packages this package depends
|
|
# on. When providing `name`, a separate `ddc_compile` target
|
|
# named `${name}_js` must exist.
|
|
# * args: additional args to pass to dartdevc
|
|
|
|
prebuilt_dart_action(target_name) {
|
|
script = "../../pkg/dev_compiler/bin/dartdevc.dart"
|
|
module = invoker.package
|
|
out_dir = rebase_path("$js_gen_dir")
|
|
sdk_path = rebase_path(sdk_outline)
|
|
|
|
deps = [
|
|
":ddc_files_stamp",
|
|
platform_dep,
|
|
]
|
|
|
|
inputs = [
|
|
sdk_outline,
|
|
"$target_gen_dir/ddc_files.stamp",
|
|
]
|
|
|
|
outputs = [
|
|
"$js_gen_dir/$module.dill",
|
|
"$js_gen_dir/$module.js",
|
|
]
|
|
|
|
vm_args = [ "-Dsdk_hash=$sdk_hash" ]
|
|
|
|
args = [
|
|
"--dart-sdk-summary=$sdk_path",
|
|
"-o$out_dir/$module.js",
|
|
"package:$module/$module.dart",
|
|
]
|
|
|
|
if (defined(invoker.extra_libraries)) {
|
|
foreach(lib, invoker.extra_libraries) {
|
|
args += [ "package:$module/$lib.dart" ]
|
|
}
|
|
}
|
|
|
|
if (defined(invoker.package_dependencies)) {
|
|
foreach(dep, invoker.package_dependencies) {
|
|
deps += [ ":${dep}_js" ]
|
|
args += [ "-s$out_dir/$dep.dill" ]
|
|
}
|
|
}
|
|
|
|
if (defined(invoker.args)) {
|
|
args += invoker.args
|
|
}
|
|
|
|
if (invoker.sound_null_safety) {
|
|
args += [ "--sound-null-safety" ]
|
|
} else {
|
|
args += [ "--no-sound-null-safety" ]
|
|
}
|
|
|
|
if (invoker.canary) {
|
|
args += [ "--canary" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
ddc_compile("async_helper_stable_js") {
|
|
package = "async_helper"
|
|
canary = false
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("async_helper_canary_js") {
|
|
package = "async_helper"
|
|
canary = true
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("async_helper_stable_unsound_js") {
|
|
package = "async_helper"
|
|
canary = false
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("async_helper_canary_unsound_js") {
|
|
package = "async_helper"
|
|
canary = true
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("expect_stable_js") {
|
|
package = "expect"
|
|
extra_libraries = [ "minitest" ]
|
|
canary = false
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("expect_canary_js") {
|
|
package = "expect"
|
|
extra_libraries = [ "minitest" ]
|
|
canary = true
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("expect_stable_unsound_js") {
|
|
package = "expect"
|
|
extra_libraries = [ "minitest" ]
|
|
canary = false
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("expect_canary_unsound_js") {
|
|
package = "expect"
|
|
extra_libraries = [ "minitest" ]
|
|
canary = true
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("js_stable_js") {
|
|
package = "js"
|
|
extra_libraries = [ "js_util" ]
|
|
canary = false
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("js_canary_js") {
|
|
package = "js"
|
|
extra_libraries = [ "js_util" ]
|
|
canary = true
|
|
sound_null_safety = true
|
|
}
|
|
ddc_compile("js_stable_unsound_js") {
|
|
package = "js"
|
|
extra_libraries = [ "js_util" ]
|
|
canary = false
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("js_canary_unsound_js") {
|
|
package = "js"
|
|
extra_libraries = [ "js_util" ]
|
|
canary = true
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("meta_stable_js") {
|
|
package = "meta"
|
|
canary = false
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("meta_canary_js") {
|
|
package = "meta"
|
|
canary = true
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile("meta_stable_unsound_js") {
|
|
package = "meta"
|
|
canary = false
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile("meta_canary_unsound_js") {
|
|
package = "meta"
|
|
canary = true
|
|
sound_null_safety = false
|
|
}
|
|
|
|
# Compiles the DDC SDK JavaScript modules from the platform .dill file.
|
|
template("ddc_compile_sdk") {
|
|
assert(defined(invoker.sound_null_safety),
|
|
"Need 'sound_null_safety' in $target_name.")
|
|
|
|
# Determine one of four possible directories for the JavaScript output to be
|
|
# generated:
|
|
#
|
|
# out/gen/ddc
|
|
# |- canary/sdk
|
|
# |- canary_unsound/sdk
|
|
# |- stable/sdk
|
|
# |- stable_unsound/sdk
|
|
if (invoker.canary) {
|
|
js_gen_dir = "$target_gen_dir/canary"
|
|
} else {
|
|
js_gen_dir = "$target_gen_dir/stable"
|
|
}
|
|
if (invoker.sound_null_safety) {
|
|
platform_dep = "../dartdevc:dartdevc_platform_sound"
|
|
platform_input = sdk_full_sound_dill
|
|
js_gen_dir = "$js_gen_dir/sdk"
|
|
} else {
|
|
platform_dep = "../dartdevc:dartdevc_platform_unsound"
|
|
platform_input = sdk_full_unsound_dill
|
|
js_gen_dir = "${js_gen_dir}_unsound/sdk"
|
|
}
|
|
|
|
prebuilt_dart_action(target_name) {
|
|
deps = [
|
|
":ddc_files_stamp",
|
|
platform_dep,
|
|
]
|
|
|
|
inputs = [ platform_input ]
|
|
|
|
outputs = [
|
|
"$js_gen_dir/amd/dart_sdk.js",
|
|
"$js_gen_dir/amd/dart_sdk.js.map",
|
|
"$js_gen_dir/common/dart_sdk.js",
|
|
"$js_gen_dir/common/dart_sdk.js.map",
|
|
"$js_gen_dir/es6/dart_sdk.js",
|
|
"$js_gen_dir/es6/dart_sdk.js.map",
|
|
"$js_gen_dir/legacy/dart_sdk.js",
|
|
"$js_gen_dir/legacy/dart_sdk.js.map",
|
|
]
|
|
|
|
vm_args = [ "-Dsdk_hash=$sdk_hash" ]
|
|
|
|
script = "../../pkg/dev_compiler/bin/dartdevc.dart"
|
|
|
|
args = [
|
|
"--multi-root-scheme",
|
|
"org-dartlang-sdk",
|
|
"--multi-root-output-path",
|
|
|
|
# This path is intended to point to a version of source files used to
|
|
# generate the SDK JavaScript modules.
|
|
# The intention is that the source map locations can be linked to the
|
|
# orignal source files while running SDK test suites.
|
|
# These JavaScript files and source maps are no longer packaged into the
|
|
# released SDK.
|
|
rebase_path("$target_gen_dir/../../../dart-sdk"),
|
|
"--modules",
|
|
"amd",
|
|
"-o",
|
|
rebase_path("$js_gen_dir/amd/dart_sdk.js"),
|
|
"--modules",
|
|
"common",
|
|
"-o",
|
|
rebase_path("$js_gen_dir/common/dart_sdk.js"),
|
|
"--modules",
|
|
"es6",
|
|
"-o",
|
|
rebase_path("$js_gen_dir/es6/dart_sdk.js"),
|
|
"--modules",
|
|
"legacy",
|
|
"-o",
|
|
rebase_path("$js_gen_dir/legacy/dart_sdk.js"),
|
|
rebase_path("$platform_input"),
|
|
]
|
|
|
|
if (invoker.sound_null_safety) {
|
|
args += [ "--sound-null-safety" ]
|
|
} else {
|
|
args += [ "--no-sound-null-safety" ]
|
|
}
|
|
|
|
if (invoker.canary) {
|
|
args += [ "--canary" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
ddc_compile_sdk("ddc_stable_sdk") {
|
|
canary = false
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile_sdk("ddc_stable_unsound_sdk") {
|
|
canary = false
|
|
sound_null_safety = false
|
|
}
|
|
|
|
ddc_compile_sdk("ddc_canary_sdk") {
|
|
canary = true
|
|
sound_null_safety = true
|
|
}
|
|
|
|
ddc_compile_sdk("ddc_canary_unsound_sdk") {
|
|
canary = true
|
|
sound_null_safety = false
|
|
}
|