mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 12:24:24 +00:00
0ce83987d6
Note: This is a reland of https://dart-review.googlesource.com/c/sdk/+/150343 Adds a new SDK hash to kernels and the VM which is optionally checked to verify kernels are built for the same SDK as the VM. This helps catch incompatibilities that are currently causing subtle bugs and (not so subtle) crashes. The SDK hash is encoded in kernels as a new field in components. The hash is derived from the 10 byte git short hash. This new check can be disabled via: tools/gn.py ... --no-verify-sdk-hash This CL bumps the min. (and max.) supported kernel format version, making the VM backwards incompatible from this point back. This also bumps the min. and current ABI version. Bug: https://github.com/dart-lang/sdk/issues/41802 Change-Id: I2f85945045a603eb9dcfd1f2c0d0d024bd84a956 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/152802 Commit-Queue: Clement Skau <cskau@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
85 lines
2.9 KiB
Text
85 lines
2.9 KiB
Text
# 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/dart/dart_action.gni")
|
|
import("../sdk_args.gni")
|
|
|
|
_dart_root = get_path_info("..", "abspath")
|
|
|
|
template("compile_platform") {
|
|
assert(defined(invoker.libraries_specification_uri),
|
|
"Need 'libraries_specification_uri' in $target_name")
|
|
assert(defined(invoker.outputs), "Need 'outputs' in $target_name")
|
|
assert(defined(invoker.args), "Need 'args' in $target_name")
|
|
if (defined(invoker.single_root_scheme)) {
|
|
assert(defined(invoker.single_root_base),
|
|
"Need 'single_root_base' in $target_name")
|
|
}
|
|
if (defined(invoker.single_root_base)) {
|
|
assert(defined(invoker.single_root_scheme),
|
|
"Need 'single_root_scheme' in $target_name")
|
|
}
|
|
assert(!defined(invoker.script), "Remove 'script' from $target_name")
|
|
assert(!defined(invoker.depfile), "Remove 'depfile' from $target_name")
|
|
|
|
# In order to automatically compute dependencies, we need to add a dependency
|
|
# on vm_outline.dill. This is used to include the source code of Fasta itself
|
|
# in the dependency file. Without this, a change to Fasta wouldn't cause the
|
|
# platform dill files to be rebuilt. However, when building
|
|
# vm_outline_strong.dill, we shouldn't list it as a dependency as this would
|
|
# lead to cyclic dependencies.
|
|
add_implicit_vm_platform_dependency = true
|
|
if (defined(invoker.add_implicit_vm_platform_dependency)) {
|
|
add_implicit_vm_platform_dependency =
|
|
invoker.add_implicit_vm_platform_dependency
|
|
}
|
|
|
|
outline = "vm_outline_strong.dill"
|
|
if (defined(invoker.outline)) {
|
|
outline = invoker.outline
|
|
}
|
|
|
|
prebuilt_dart_action(target_name) {
|
|
script = "$_dart_root/pkg/front_end/tool/_fasta/compile_platform.dart"
|
|
|
|
packages = "$_dart_root/.packages"
|
|
|
|
outputs = invoker.outputs
|
|
|
|
vm_args = [ "-Dsdk_hash=$sdk_hash" ]
|
|
|
|
inputs = []
|
|
deps = []
|
|
args = []
|
|
if (defined(invoker.deps)) {
|
|
deps += invoker.deps
|
|
}
|
|
|
|
if (defined(invoker.inputs)) {
|
|
inputs += invoker.inputs
|
|
}
|
|
|
|
if (add_implicit_vm_platform_dependency) {
|
|
inputs += [ "$root_out_dir/$outline" ]
|
|
deps += [ "$_dart_root/runtime/vm:vm_platform" ]
|
|
}
|
|
depfile = outputs[0] + ".d"
|
|
|
|
args += invoker.args
|
|
if (defined(invoker.single_root_scheme)) {
|
|
args += [ "--single-root-scheme=" + invoker.single_root_scheme ]
|
|
}
|
|
if (defined(invoker.single_root_base)) {
|
|
args += [ "--single-root-base=" + invoker.single_root_base ]
|
|
}
|
|
if (defined(invoker.single_root_scheme)) {
|
|
args += [ invoker.libraries_specification_uri ]
|
|
} else {
|
|
args +=
|
|
[ rebase_path(invoker.libraries_specification_uri, root_build_dir) ]
|
|
}
|
|
args += [ rebase_path("$root_out_dir/$outline", root_build_dir) ]
|
|
args += rebase_path(outputs, root_build_dir)
|
|
}
|
|
}
|