Files
sdk/utils/generate_patch_sdk.gni
T
Sigmund Cherem de36d11817 Add support for building patched_sdk and platform.dill for dart2js:
- defines a .gn target for patched_dart2js_sdk
 - changes patch_sdk.dart to handle a dart2js target
 - adds support in fasta to understand the `native` clause still used by dart2js
 - add option to fasta to know whether it is generating kernel for the vm or dart2js

I'm not excited about how I added the target distinction in fasta, the reason I
did so is that it affects the behavior in several ways: in how we handle
`native`, in the libraries that are included by default in the platform.dill file,
and in the transformations that need to be done.  I'm happy to change the
approach.

BUG=
R=ahe@google.com, vegorov@google.com, zra@google.com

Committed: https://github.com/dart-lang/sdk/commit/714523b103598d49295fa06b4ad13c6917c50399
Review-Url: https://codereview.chromium.org/2832353002 .
2017-05-01 17:23:02 -07:00

72 lines
2.2 KiB
Plaintext

# Copyright (c) 2017, 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/prebuilt_dart_sdk.gni")
_dart_root = get_path_info("..", "abspath")
# Template to generate a patched_sdk folder. This invokes the tools/patch_sdk.py
# script and sets up the right dependencies.
#
# This template expects four arguments:
# - mode: vm or dart2js (whether to build an sdk for the vm or for dart2js)
# - input_patches_dir: directory containing the input library files.
# - patched_sdk_dir: the output location
# - deps: extra dependencies that must be built ahead of time.
template("generate_patched_sdk") {
assert(defined(invoker.input_patches_dir),
"Need input_patches_dir in $target_name")
assert(defined(invoker.patched_sdk_dir),
"Need patched_sdk_dir in $target_name")
assert(defined(invoker.mode), "Need mode in $target_name")
action(target_name) {
if (defined(invoker.deps)) {
deps = invoker.deps
} else {
deps = []
}
if (!prebuilt_dart_exe_works) {
deps += ["$_dart_root/runtime/bin:dart_bootstrap($host_toolchain)"]
}
script = "$_dart_root/tools/patch_sdk.py"
# We list the `patch_sdk.dart` tool here because the [script] (which is
# implicitly an input) will call it.
inputs = [
"$_dart_root/tools/patch_sdk.dart",
]
depfile = "$root_out_dir/${target_name}.d"
outputs = [
# Instead of listing all outputs we list a single well-known one.
"$root_out_dir/${invoker.patched_sdk_dir}/platform.dill",
]
args = [ "--quiet" ]
if (!prebuilt_dart_exe_works) {
dart_out_dir = get_label_info(
"$_dart_root/runtime/bin:dart_bootstrap($host_toolchain)",
"root_out_dir")
dart_bootstrap =
rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix")
args += [
"--dart-executable",
dart_bootstrap,
]
}
args += [
invoker.mode,
rebase_path("$_dart_root/sdk"),
rebase_path(invoker.input_patches_dir),
rebase_path("$root_out_dir/${invoker.patched_sdk_dir}", root_build_dir),
rebase_path("$_dart_root/.packages"),
]
}
}