mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 15:17:07 +00:00
0165643fa7
This is a reland of commit e6c9eaaf6b
Original change's description:
> [SDK] - Ensure we only build an AOT snapshot for the frontend-server
>
> Currently we seem to build both the JIT and AOT snapshots of the
> frontend-server, ensure we only build the AOT snapshot on all
> architectures except IA32
>
> Change-Id: Ie79dc6d88fd9fa680267571e5d65081ca57609c6
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/359100
> Reviewed-by: Ben Konyi <bkonyi@google.com>
> Commit-Queue: Siva Annamalai <asiva@google.com>
Change-Id: Id9a695f33e4e808463b4f65bdb3cd0e546a695d1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/363480
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Siva Annamalai <asiva@google.com>
802 lines
23 KiB
Text
802 lines
23 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.
|
|
|
|
# This GN file contains build rules for assembling the Dart SDK. There are
|
|
# two possible variants: the "Full" SDK, and the "Platform" SDK. If you want
|
|
# to make a new subset of the Full SDK, make it the same way we make
|
|
# the Platform SDK.
|
|
#
|
|
# Warning:
|
|
# If you need to copy something into dart-sdk/lib/foo in addition to the stuff
|
|
# copied there by :copy_libraries, then you must depend on ":copy_libraries",
|
|
# or ":copy_libraries" may delete/overwrite your addition, and the build will
|
|
# fail.
|
|
|
|
import("../build/dart/copy_tree.gni")
|
|
import("../build/executable_suffix.gni")
|
|
import("../sdk_args.gni")
|
|
import("../utils/application_snapshot.gni")
|
|
|
|
declare_args() {
|
|
# Build a SDK with less stuff. It excludes dart2js, ddc, and web libraries.
|
|
dart_platform_sdk = true
|
|
|
|
# Path to stripped dart binaries relative to build output directory.
|
|
dart_stripped_binary = "dart"
|
|
dart_precompiled_runtime_stripped_binary = "dart_precompiled_runtime_product"
|
|
gen_snapshot_stripped_binary = "gen_snapshot_product"
|
|
analyze_snapshot_binary = "analyze_snapshot"
|
|
wasm_opt_stripped_binary = "wasm-opt"
|
|
|
|
dart_include_wasm_opt = true
|
|
}
|
|
|
|
# The directory layout of the SDK is as follows:
|
|
#
|
|
# ..dart-sdk/
|
|
# ....bin/
|
|
# ......dart or dart.exe (executable)
|
|
# ......dart.lib (import library for VM native extensions on Windows)
|
|
# ......dartaotruntime or dartaotruntime.exe (executable)
|
|
# ......utils/gen_snapshot or utils/gen_snapshot.exe (if not on ia32)
|
|
# ......snapshots/
|
|
# ........analysis_server.dart.snapshot
|
|
# ........dart2js.dart.snapshot
|
|
# ........dart2wasm_product.snapshot (if not on ia32)
|
|
# ........dartdev.dart.snapshot (app-jit snapshot or kernel dill file)
|
|
# ........dartdevc.dart.snapshot
|
|
# ........dds.dart.snapshot
|
|
# ........dart_tooling_daemon.dart.snapshot
|
|
# ........frontend_server_aot.dart.snapshot (AOT snapshot, if not on ia32)
|
|
# ........frontend_server.dart.snapshot (JIT snapshot only on ia32)
|
|
# ........gen_kernel_aot.dart.snapshot (if not on ia32)
|
|
# ........kernel-service.dart.snapshot
|
|
# ........kernel_worker.dart.snapshot
|
|
# ......resources/
|
|
# ........dartdoc/
|
|
# ..........resources/
|
|
# ..........templates/
|
|
# ....include/
|
|
# ......dart_api.h
|
|
# ......dart_native_api.h
|
|
# ......dart_tools_api.h
|
|
# ....lib/
|
|
# ......libraries.json
|
|
# ......_internal/
|
|
# ........dart2js_platform.dill
|
|
# ........dart2js_platform_unsound.dill
|
|
# ........dart2js_server_platform.dill
|
|
# ........dart2js_server_platform_unsound.dill
|
|
# ........dart2wasm_outline.dill (if not on ia32)
|
|
# ........dart2wasm_platform.dill (if not on ia32)
|
|
# ........dart2wasm_js_compatibility_outline.dill (if not on ia32)
|
|
# ........dart2wasm_js_compatibility_platform.dill (if not on ia32)
|
|
# ........ddc_outline.dill
|
|
# ........ddc_platform.dill
|
|
# ........vm_platform_strong.dill
|
|
# ........js_dev_runtime/
|
|
# ........js_runtime/
|
|
# ........js_shared/
|
|
# ......async/
|
|
# ......collection/
|
|
# ......convert/
|
|
# ......core/
|
|
# ......dev_compiler/
|
|
#.........amd/require.js
|
|
#.........ddc/ddc_module_loader.js
|
|
#.........web/dart_stack_trace_mapper.js
|
|
# ......developer/
|
|
# ......html/
|
|
# ......_http/
|
|
# ......internal/
|
|
# ......io/
|
|
# ......isolate/
|
|
# ......js/
|
|
# ......js_interop/
|
|
# ......js_interop_unsafe/
|
|
# ......js_util/
|
|
# ......math/
|
|
# ......mirrors/
|
|
# ......typed_data/
|
|
# ......api_readme.md
|
|
|
|
# Scripts that go under bin/
|
|
_platform_sdk_scripts = []
|
|
|
|
_full_sdk_scripts = []
|
|
|
|
# Snapshots that go under bin/snapshots
|
|
_platform_sdk_snapshots = [
|
|
[
|
|
"analysis_server",
|
|
"../utils/analysis_server",
|
|
],
|
|
[
|
|
"dartdev",
|
|
"../utils/dartdev:dartdev",
|
|
],
|
|
[
|
|
"dart_tooling_daemon",
|
|
"../utils/dtd:dtd",
|
|
],
|
|
[
|
|
"dds",
|
|
"../utils/dds:dds",
|
|
],
|
|
]
|
|
if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
|
|
_platform_sdk_snapshots += [ [
|
|
"frontend_server_aot",
|
|
"../utils/kernel-service:frontend_server_aot",
|
|
] ]
|
|
} else {
|
|
_platform_sdk_snapshots += [ [
|
|
"frontend_server",
|
|
"../utils/kernel-service:frontend_server",
|
|
] ]
|
|
}
|
|
if (dart_snapshot_kind == "app-jit") {
|
|
_platform_sdk_snapshots += [ [
|
|
"kernel-service",
|
|
"../utils/kernel-service:kernel-service_snapshot",
|
|
] ]
|
|
}
|
|
|
|
_full_sdk_snapshots = _platform_sdk_snapshots + [
|
|
[
|
|
"dart2js",
|
|
"../utils/compiler:dart2js",
|
|
],
|
|
[
|
|
"dartdevc",
|
|
"../utils/ddc:dartdevc",
|
|
],
|
|
[
|
|
"kernel_worker",
|
|
"../utils/bazel:kernel_worker",
|
|
],
|
|
]
|
|
|
|
# Libraries that go under lib/
|
|
_full_sdk_libraries = [
|
|
"_internal",
|
|
"async",
|
|
"cli",
|
|
"collection",
|
|
"convert",
|
|
"core",
|
|
"developer",
|
|
"ffi",
|
|
"html",
|
|
"_http",
|
|
"indexed_db",
|
|
"internal",
|
|
"io",
|
|
"isolate",
|
|
"js",
|
|
"js_interop",
|
|
"js_interop_unsafe",
|
|
"js_util",
|
|
"math",
|
|
"mirrors",
|
|
"svg",
|
|
"typed_data",
|
|
"_wasm",
|
|
"web_audio",
|
|
"web_gl",
|
|
"web_sql",
|
|
]
|
|
|
|
# Apps running on the platform SDK shouldn't be using Dart4Web libraries, but
|
|
# the analyzer and dartdoc expect all the library sources to be present.
|
|
#
|
|
# _platform_sdk_libraries = [
|
|
# "_internal",
|
|
# "async",
|
|
# "cli",
|
|
# "collection",
|
|
# "convert",
|
|
# "core",
|
|
# "developer",
|
|
# "html",
|
|
# "_http",
|
|
# "internal",
|
|
# "io",
|
|
# "isolate",
|
|
# "math",
|
|
# "mirrors",
|
|
# "typed_data",
|
|
# ]
|
|
_platform_sdk_libraries = _full_sdk_libraries
|
|
|
|
# This rule copies dartdoc templates to
|
|
# bin/resources/dartdoc/templates
|
|
copy_tree("copy_dartdoc_templates") {
|
|
visibility = [ ":copy_dartdoc_files" ]
|
|
source = "../third_party/pkg/dartdoc/lib/templates"
|
|
dest = "$root_out_dir/$dart_sdk_output/bin/resources/dartdoc/templates"
|
|
exclude = "{}"
|
|
}
|
|
|
|
# This rule copies dartdoc resources to
|
|
# bin/resources/dartdoc/resources
|
|
copy_tree("copy_dartdoc_resources") {
|
|
visibility = [ ":copy_dartdoc_files" ]
|
|
source = "../third_party/pkg/dartdoc/lib/resources"
|
|
dest = "$root_out_dir/$dart_sdk_output/bin/resources/dartdoc/resources"
|
|
exclude = "{}"
|
|
}
|
|
|
|
# This rule copies the pre-built DevTools application to
|
|
# bin/resources/devtools/
|
|
copy_tree("copy_prebuilt_devtools") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
source = "../third_party/devtools/web"
|
|
dest = "$root_out_dir/$dart_sdk_output/bin/resources/devtools"
|
|
exclude = "{}"
|
|
}
|
|
|
|
# This loop generates rules to copy libraries to lib/
|
|
foreach(library, _full_sdk_libraries) {
|
|
copy_tree("copy_${library}_library") {
|
|
visibility = [
|
|
":copy_full_sdk_libraries",
|
|
":copy_platform_sdk_libraries",
|
|
]
|
|
source = "lib/$library"
|
|
dest = "$root_out_dir/$dart_sdk_output/lib/$library"
|
|
exclude = "*.svn,doc,*.py,*.gypi,*.sh,.gitignore"
|
|
}
|
|
}
|
|
|
|
_has_dot_sym = !is_win && rebase_path(".") == rebase_path("//sdk")
|
|
|
|
# Copies the Dart VM binary into bin/
|
|
if (target_os != current_os && target_os == "fuchsia") {
|
|
# In the Fuchsia build, this has to use a symlink for two reasons.
|
|
# First, it makes the lookup of shared libraries relative to $ORIGIN
|
|
# (Linux) or @loader_path (macOS) find the libraries where they are,
|
|
# since those lookups use the directory of the symlink target rather
|
|
# than of the link itself (as they would for a copy or hard link).
|
|
# Second, when the dart binary is built as a "variant" (e.g. with a
|
|
# sanitizer), then $root_out_dir/dart is itself a symlink to the real
|
|
# binary in the selected variant toolchain's $root_out_dir and since
|
|
# the "copy" tool is actually a hard link rather than a copy, it will
|
|
# make a link to the symlink rather than the symlink's target, and the
|
|
# relative symlink interpreted from a different containing directory
|
|
# will not find the actual binary.
|
|
action("copy_dart") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
dart_label = "../runtime/bin:dart"
|
|
deps = [ dart_label ]
|
|
dart_out = get_label_info(dart_label, "root_out_dir")
|
|
sources = [ "$dart_out/$dart_stripped_binary" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/bin/$dart_stripped_binary" ]
|
|
script = "/bin/ln"
|
|
args = [
|
|
"-snf",
|
|
rebase_path(sources[0], get_path_info(outputs[0], "dir")),
|
|
rebase_path(outputs[0]),
|
|
]
|
|
}
|
|
} else {
|
|
copy("copy_dart") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
deps = [ "../runtime/bin:dart" ]
|
|
dart_out = get_label_info("../runtime/bin:dart", "root_out_dir")
|
|
sources = [ "$dart_out/${dart_stripped_binary}${executable_suffix}" ]
|
|
if (is_win && dart_lib_export_symbols) {
|
|
sources += [ "$dart_out/dart.lib" ]
|
|
}
|
|
if (_has_dot_sym) {
|
|
sources += [ "$dart_out/dart.sym" ]
|
|
}
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/bin/{{source_file_part}}" ]
|
|
}
|
|
}
|
|
|
|
copy("copy_dartaotruntime") {
|
|
visibility = [ ":group_dart2native" ]
|
|
deps = [ "../runtime/bin:dart_precompiled_runtime_product" ]
|
|
src_dir = get_label_info("../runtime/bin:dart_precompiled_runtime_product",
|
|
"root_out_dir")
|
|
sources = [
|
|
"$src_dir/${dart_precompiled_runtime_stripped_binary}${executable_suffix}",
|
|
]
|
|
outputs = [
|
|
"$root_out_dir/$dart_sdk_output/bin/dartaotruntime${executable_suffix}",
|
|
]
|
|
}
|
|
|
|
group("copy_gen_snapshot") {
|
|
visibility = [ ":group_dart2native" ]
|
|
public_deps = [ ":copy_gen_snapshot_exe" ]
|
|
if (_has_dot_sym) {
|
|
public_deps += [ ":copy_gen_snapshot_sym" ]
|
|
}
|
|
}
|
|
|
|
copy("copy_gen_snapshot_exe") {
|
|
deps = [ "../runtime/bin:gen_snapshot_product" ]
|
|
src_dir =
|
|
get_label_info("../runtime/bin:gen_snapshot_product", "root_out_dir")
|
|
sources = [ "$src_dir/${gen_snapshot_stripped_binary}${executable_suffix}" ]
|
|
outputs = [
|
|
"$root_out_dir/$dart_sdk_output/bin/utils/gen_snapshot${executable_suffix}",
|
|
]
|
|
}
|
|
|
|
if (_has_dot_sym) {
|
|
copy("copy_gen_snapshot_sym") {
|
|
deps = [ "../runtime/bin:gen_snapshot_product" ]
|
|
sources = [ "$root_out_dir/gen_snapshot_product.sym" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/bin/utils/gen_snapshot${executable_suffix}.sym" ]
|
|
}
|
|
}
|
|
|
|
copy("copy_vm_platform_strong_product") {
|
|
visibility = [ ":group_dart2native" ]
|
|
deps = [ "../runtime/vm:vm_platform_product" ]
|
|
src_dir = get_label_info("../runtime/vm:vm_platform_product", "root_out_dir")
|
|
sources = [ "$src_dir/vm_platform_strong_product.dill" ]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/lib/_internal/{{source_file_part}}" ]
|
|
}
|
|
|
|
copy("copy_gen_kernel_snapshot") {
|
|
visibility = [ ":group_dart2native" ]
|
|
deps = [ "../utils/gen_kernel" ]
|
|
sources = [ "$root_gen_dir/gen_kernel_aot.dart.snapshot" ]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/bin/snapshots/{{source_file_part}}" ]
|
|
}
|
|
|
|
group("group_dart2native") {
|
|
deps = [
|
|
":copy_dartaotruntime",
|
|
":copy_gen_kernel_snapshot",
|
|
":copy_gen_snapshot",
|
|
":copy_vm_platform_strong_product",
|
|
]
|
|
}
|
|
|
|
# A template for copying the things in _platform_sdk_scripts and
|
|
# _full_sdk_scripts into bin/
|
|
template("copy_sdk_script") {
|
|
assert(defined(invoker.name), "copy_sdk_script must define 'name'")
|
|
name = invoker.name
|
|
ext = ""
|
|
if (is_win) {
|
|
ext = ".bat"
|
|
}
|
|
copy(target_name) {
|
|
visibility = [
|
|
":copy_full_sdk_scripts",
|
|
":copy_platform_sdk_scripts",
|
|
]
|
|
sources = [ "bin/${name}_sdk$ext" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/bin/$name$ext" ]
|
|
}
|
|
}
|
|
|
|
foreach(sdk_script, _full_sdk_scripts) {
|
|
copy_sdk_script("copy_${sdk_script}_script") {
|
|
name = sdk_script
|
|
}
|
|
}
|
|
|
|
# This is the main target for copying scripts in _platform_sdk_scripts to bin/
|
|
group("copy_platform_sdk_scripts") {
|
|
visibility = [ ":_create_platform_sdk" ]
|
|
public_deps = []
|
|
foreach(sdk_script, _platform_sdk_scripts) {
|
|
public_deps += [ ":copy_${sdk_script}_script" ]
|
|
}
|
|
}
|
|
|
|
# This is the main target for copying scripts in _full_sdk_scripts to bin/
|
|
group("copy_full_sdk_scripts") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
public_deps = []
|
|
foreach(sdk_script, _full_sdk_scripts) {
|
|
public_deps += [ ":copy_${sdk_script}_script" ]
|
|
}
|
|
}
|
|
|
|
# This loop generates "copy" targets that put AppJIT snapshots into
|
|
# bin/snapshots
|
|
foreach(snapshot, _full_sdk_snapshots) {
|
|
root = root_gen_dir
|
|
|
|
# The frontend_server is output to root_out_dir so that it doesn't conflict
|
|
# with the flutter snapshot by the same name under root_gen_dir.
|
|
if (snapshot[0] == "frontend_server" ||
|
|
snapshot[0] == "frontend_server_aot") {
|
|
root = root_out_dir
|
|
}
|
|
copy("copy_${snapshot[0]}_snapshot") {
|
|
visibility = [
|
|
":copy_full_sdk_snapshots",
|
|
":copy_platform_sdk_snapshots",
|
|
]
|
|
deps = [ snapshot[1] ]
|
|
sources = [ "$root/${snapshot[0]}.dart.snapshot" ]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/bin/snapshots/{{source_file_part}}" ]
|
|
}
|
|
}
|
|
|
|
# This is the main rule for copying snapshots from _platform_sdk_snapshots to
|
|
# bin/snapshots
|
|
group("copy_platform_sdk_snapshots") {
|
|
visibility = [ ":_create_platform_sdk" ]
|
|
public_deps = []
|
|
foreach(snapshot, _platform_sdk_snapshots) {
|
|
public_deps += [ ":copy_${snapshot[0]}_snapshot" ]
|
|
}
|
|
}
|
|
|
|
# This is the main rule for copying snapshots from _full_sdk_snapshots to
|
|
# bin/snapshots
|
|
group("copy_full_sdk_snapshots") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
public_deps = []
|
|
foreach(snapshot, _full_sdk_snapshots) {
|
|
public_deps += [ ":copy_${snapshot[0]}_snapshot" ]
|
|
}
|
|
}
|
|
|
|
# This is the main rule for copying the files that dartdoc needs.
|
|
group("copy_dartdoc_files") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
public_deps = [
|
|
":copy_dartdoc_resources",
|
|
":copy_dartdoc_templates",
|
|
]
|
|
}
|
|
|
|
# This rule copies dill files to lib/_internal.
|
|
copy("copy_vm_dill_files") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
deps = [
|
|
":copy_libraries",
|
|
"../runtime/vm:kernel_platform_files",
|
|
]
|
|
sources = [ "$root_out_dir/vm_platform_strong.dill" ]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/lib/_internal/{{source_file_part}}" ]
|
|
}
|
|
|
|
copy("copy_dart2js_dill_files") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
deps = [
|
|
":copy_libraries",
|
|
"../utils/compiler:compile_dart2js_platform",
|
|
"../utils/compiler:compile_dart2js_server_platform",
|
|
]
|
|
sources = [
|
|
"$root_out_dir/dart2js_platform.dill",
|
|
"$root_out_dir/dart2js_server_platform.dill",
|
|
]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/lib/_internal/{{source_file_part}}" ]
|
|
}
|
|
|
|
copy("copy_dart2wasm_platform") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
deps = [
|
|
":copy_libraries",
|
|
"../:dart2wasm_platform",
|
|
"../utils/dart2wasm:compile_dart2wasm_js_compatibility_platform",
|
|
"../utils/dart2wasm:compile_dart2wasm_platform",
|
|
]
|
|
sources = [
|
|
"$root_out_dir/dart2wasm_js_compatibility_outline.dill",
|
|
"$root_out_dir/dart2wasm_js_compatibility_platform.dill",
|
|
"$root_out_dir/dart2wasm_outline.dill",
|
|
"$root_out_dir/dart2wasm_platform.dill",
|
|
]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/lib/_internal/{{source_file_part}}" ]
|
|
}
|
|
|
|
copy("copy_dart2wasm_snapshot") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
deps = [
|
|
":copy_libraries",
|
|
"../utils/dart2wasm:dart2wasm_product_snapshot",
|
|
]
|
|
sources = [ "$root_out_dir/dart2wasm_product.snapshot" ]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/bin/snapshots/{{source_file_part}}" ]
|
|
}
|
|
|
|
copy("copy_wasm_opt") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
deps = [
|
|
":copy_libraries",
|
|
"../third_party/binaryen:wasm-opt",
|
|
]
|
|
sources = [ "$root_out_dir/${wasm_opt_stripped_binary}${executable_suffix}" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/bin/utils/{{source_file_part}}" ]
|
|
}
|
|
|
|
# Copies DDC's SDK full and outline .dill files to lib/_internal.
|
|
copy("copy_dev_compiler_dills") {
|
|
visibility = [ ":copy_dev_compiler_sdk" ]
|
|
deps = [
|
|
":copy_libraries",
|
|
"../utils/ddc:ddc_platform",
|
|
]
|
|
sources = [
|
|
"$root_out_dir/ddc_outline.dill",
|
|
"$root_out_dir/ddc_platform.dill",
|
|
]
|
|
outputs =
|
|
[ "$root_out_dir/$dart_sdk_output/lib/_internal/{{source_file_part}}" ]
|
|
}
|
|
|
|
# Copies require.js to lib/dev_compiler/amd.
|
|
# Used to load DDC compiled amd modules.
|
|
copy("copy_dev_compiler_amd_require_js") {
|
|
visibility = [ ":copy_dev_compiler_sdk" ]
|
|
sources = [ "../third_party/requirejs/require.js" ]
|
|
outputs = [
|
|
"$root_out_dir/$dart_sdk_output/lib/dev_compiler/amd/{{source_file_part}}",
|
|
]
|
|
}
|
|
|
|
# Copies ddc_module_loader.js to lib/dev_compiler/ddc.
|
|
# Used to manage DDC library and module loading.
|
|
copy("copy_dev_compiler_ddc_module_loader_js") {
|
|
visibility = [ ":copy_dev_compiler_sdk" ]
|
|
sources = [ "../pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js" ]
|
|
outputs = [
|
|
"$root_out_dir/$dart_sdk_output/lib/dev_compiler/ddc/ddc_module_loader.js",
|
|
]
|
|
}
|
|
|
|
# Copies stack_trace_mapper tool to lib/dev_compiler/web.
|
|
# Used when running DDC compiled applications.
|
|
copy("copy_dev_compiler_stack_trace_mapper") {
|
|
visibility = [ ":copy_dev_compiler_sdk" ]
|
|
deps = [ "../utils/ddc:stack_trace_mapper" ]
|
|
dart_out = get_label_info("../utils/ddc:stack_trace_mapper", "root_out_dir")
|
|
sources = [ "$dart_out/dev_compiler/build/web/dart_stack_trace_mapper.js" ]
|
|
outputs = [
|
|
"$root_out_dir/$dart_sdk_output/lib/dev_compiler/web/{{source_file_part}}",
|
|
]
|
|
}
|
|
|
|
# Main rule for copying all of DDC's dependencies to lib.
|
|
group("copy_dev_compiler_sdk") {
|
|
visibility = [ ":create_full_sdk" ]
|
|
public_deps = [
|
|
":copy_dev_compiler_amd_require_js",
|
|
":copy_dev_compiler_ddc_module_loader_js",
|
|
":copy_dev_compiler_dills",
|
|
":copy_dev_compiler_stack_trace_mapper",
|
|
]
|
|
}
|
|
|
|
# This rule copies header files to include/
|
|
group("copy_headers") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
|
|
deps = [ "../runtime/include:copy_headers" ]
|
|
}
|
|
|
|
# This rule copies libraries.json files to lib/
|
|
copy("copy_libraries_specification") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
sources = [ "lib/libraries.json" ]
|
|
deps = [ ":copy_libraries" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/lib/{{source_file_part}}" ]
|
|
}
|
|
|
|
# This is the main rule to copy libraries in _platform_sdk_libraries to lib/
|
|
group("copy_platform_sdk_libraries") {
|
|
visibility = [
|
|
":_create_platform_sdk",
|
|
":copy_libraries",
|
|
]
|
|
public_deps = []
|
|
foreach(library, _platform_sdk_libraries) {
|
|
public_deps += [ ":copy_${library}_library" ]
|
|
}
|
|
}
|
|
|
|
# This is the main rule to copy libraries in _full_sdk_libraries to lib/
|
|
group("copy_full_sdk_libraries") {
|
|
visibility = [
|
|
":copy_libraries",
|
|
":create_full_sdk",
|
|
]
|
|
public_deps = []
|
|
foreach(library, _full_sdk_libraries) {
|
|
public_deps += [ ":copy_${library}_library" ]
|
|
}
|
|
}
|
|
|
|
group("copy_libraries") {
|
|
if (dart_platform_sdk) {
|
|
public_deps = [ ":copy_platform_sdk_libraries" ]
|
|
} else {
|
|
public_deps = [ ":copy_full_sdk_libraries" ]
|
|
}
|
|
}
|
|
|
|
# This rule writes the version file.
|
|
action("write_version_file") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
inputs = [
|
|
"../tools/VERSION",
|
|
"$default_git_folder/logs/HEAD",
|
|
]
|
|
output = "$root_out_dir/$dart_sdk_output/version"
|
|
outputs = [ output ]
|
|
script = "../tools/write_version_file.py"
|
|
args = [
|
|
"--output",
|
|
rebase_path(output),
|
|
]
|
|
if (!dart_version_git_info) {
|
|
args += [ "--no-git-hash" ]
|
|
}
|
|
}
|
|
|
|
# This rule writes the revision file.
|
|
action("write_revision_file") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
inputs = [ "$default_git_folder/logs/HEAD" ]
|
|
output = "$root_out_dir/$dart_sdk_output/revision"
|
|
outputs = [ output ]
|
|
script = "../tools/write_revision_file.py"
|
|
args = [
|
|
"--output",
|
|
rebase_path(output),
|
|
]
|
|
if (!dart_version_git_info) {
|
|
args += [ "--no-git-hash" ]
|
|
}
|
|
}
|
|
|
|
# This rule copies the README file.
|
|
copy("copy_readme") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
sources = [ "../README.dart-sdk" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/README" ]
|
|
}
|
|
|
|
# This rule copies the LICENSE file.
|
|
copy("copy_license") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
sources = [ "../LICENSE" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/LICENSE" ]
|
|
}
|
|
|
|
# This rule generates a custom dartdoc_options.yaml file.
|
|
action("write_dartdoc_options") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
inputs = [ "$default_git_folder/logs/HEAD" ]
|
|
output = "$root_out_dir/$dart_sdk_output/dartdoc_options.yaml"
|
|
outputs = [ output ]
|
|
script = "../tools/write_dartdoc_options_file.py"
|
|
args = [
|
|
"--output",
|
|
rebase_path(output),
|
|
]
|
|
if (!dart_version_git_info) {
|
|
args += [ "--no-git-hash" ]
|
|
}
|
|
}
|
|
|
|
# This rule copies the API readme file to lib/
|
|
copy("copy_api_readme") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
sources = [ "api_readme.md" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/lib/api_readme.md" ]
|
|
}
|
|
|
|
# This rule copies the sdk_packages.yaml file to the root of the SDK, which
|
|
# defines the locations of the vendored SDK packages.
|
|
copy("copy_sdk_packages_yaml") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
sources = [ "../sdk_packages.yaml" ]
|
|
outputs = [ "$root_out_dir/$dart_sdk_output/sdk_packages.yaml" ]
|
|
}
|
|
|
|
# This rule copies pkg/_macros to pkg/_macros in the built SDK. This is a
|
|
# vendored SDK package.
|
|
copy_tree("copy_pkg_macros") {
|
|
visibility = [ ":create_common_sdk" ]
|
|
source = "../pkg/_macros"
|
|
dest = "$root_out_dir/$dart_sdk_output/pkg/_macros"
|
|
exclude = "{}"
|
|
}
|
|
|
|
# Parts common to both platform and full SDKs.
|
|
group("create_common_sdk") {
|
|
visibility = [
|
|
":create_platform_sdk",
|
|
":create_sdk",
|
|
]
|
|
public_deps = [
|
|
":copy_api_readme",
|
|
":copy_dart",
|
|
":copy_dartdoc_files",
|
|
":copy_headers",
|
|
":copy_libraries_specification",
|
|
":copy_license",
|
|
":copy_pkg_macros",
|
|
":copy_prebuilt_devtools",
|
|
":copy_readme",
|
|
":copy_sdk_packages_yaml",
|
|
":copy_vm_dill_files",
|
|
":write_dartdoc_options",
|
|
":write_revision_file",
|
|
":write_version_file",
|
|
]
|
|
|
|
# We do not support AOT on ia32 and should therefore not add the
|
|
# dart native compilation files since there is no AOT compiler/runtime
|
|
# available.
|
|
if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
|
|
public_deps += [ ":group_dart2native" ]
|
|
}
|
|
}
|
|
|
|
# Parts specific to the platform SDK.
|
|
group("_create_platform_sdk") {
|
|
visibility = [
|
|
":create_platform_sdk",
|
|
":create_sdk",
|
|
]
|
|
public_deps = [
|
|
":copy_platform_sdk_libraries",
|
|
":copy_platform_sdk_scripts",
|
|
":copy_platform_sdk_snapshots",
|
|
]
|
|
}
|
|
|
|
# Parts specific to the full SDK.
|
|
group("create_full_sdk") {
|
|
visibility = [ ":create_sdk" ]
|
|
|
|
public_deps = [
|
|
":copy_dart2js_dill_files",
|
|
":copy_dev_compiler_sdk",
|
|
":copy_full_sdk_libraries",
|
|
":copy_full_sdk_scripts",
|
|
":copy_full_sdk_snapshots",
|
|
]
|
|
|
|
if (dart_target_arch != "ia32" && dart_target_arch != "x86") {
|
|
public_deps += [
|
|
":copy_dart2wasm_platform",
|
|
":copy_dart2wasm_snapshot",
|
|
]
|
|
if (dart_include_wasm_opt) {
|
|
public_deps += [ ":copy_wasm_opt" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
# Build a SDK with less stuff. It excludes dart2js, ddc, and web libraries.
|
|
group("create_platform_sdk") {
|
|
public_deps = [
|
|
":_create_platform_sdk",
|
|
":create_common_sdk",
|
|
]
|
|
}
|
|
|
|
# The main target to depend on from ../BUILD.gn
|
|
group("create_sdk") {
|
|
public_deps = [ ":create_common_sdk" ]
|
|
if (dart_platform_sdk) {
|
|
public_deps += [ ":_create_platform_sdk" ]
|
|
} else {
|
|
public_deps += [ ":create_full_sdk" ]
|
|
}
|
|
}
|