80c3247f99
This is where Kernel isolate expects to find it currently. This is a preparation for flipping DFE_USE_FASTA to true. R=ahe@google.com, kustermann@google.com Review-Url: https://codereview.chromium.org/2710943006 .
543 lines
14 KiB
Plaintext
543 lines
14 KiB
Plaintext
# Copyright (c) 2014, 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/executable_suffix.gni")
|
|
import("../../build/prebuilt_dart_sdk.gni")
|
|
import("gypi_contents.gni")
|
|
import("../runtime_args.gni")
|
|
|
|
config("libdart_vm_config") {
|
|
if (defined(is_fuchsia) && is_fuchsia) {
|
|
libs = [ "magenta" ]
|
|
} else if (is_win) {
|
|
libs = [
|
|
"advapi32.lib",
|
|
"shell32.lib",
|
|
"dbghelp.lib",
|
|
]
|
|
} else {
|
|
libs = [ "dl" ]
|
|
if (!is_android) {
|
|
libs += [ "pthread" ]
|
|
}
|
|
if (is_linux) {
|
|
libs += [ "rt" ]
|
|
}
|
|
}
|
|
}
|
|
|
|
static_library("libdart_platform") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
]
|
|
public_configs = [ ":libdart_vm_config" ]
|
|
|
|
sources = rebase_path(processed_gypis.platform_sources, ".", "../platform")
|
|
|
|
include_dirs = [ ".." ]
|
|
}
|
|
|
|
vm_sources_list = processed_gypis.vm_sources
|
|
|
|
static_library("libdart_vm") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_maybe_precompiled_runtime_config",
|
|
]
|
|
public_configs = [ ":libdart_vm_config" ]
|
|
set_sources_assignment_filter([
|
|
"*_test.cc",
|
|
"*_test.h",
|
|
])
|
|
sources = vm_sources_list
|
|
include_dirs = [ ".." ]
|
|
}
|
|
|
|
static_library("libdart_vm_precompiled_runtime") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_precompiled_runtime_config",
|
|
]
|
|
public_configs = [ ":libdart_vm_config" ]
|
|
set_sources_assignment_filter([
|
|
"*_test.cc",
|
|
"*_test.h",
|
|
])
|
|
sources = vm_sources_list
|
|
include_dirs = [ ".." ]
|
|
}
|
|
|
|
static_library("libdart_vm_nosnapshot") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_no_snapshot_config",
|
|
]
|
|
public_configs = [ ":libdart_vm_config" ]
|
|
set_sources_assignment_filter([
|
|
"*_test.cc",
|
|
"*_test.h",
|
|
])
|
|
sources = vm_sources_list
|
|
include_dirs = [ ".." ]
|
|
}
|
|
|
|
static_library("libdart_vm_nosnapshot_with_precompiler") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_precompiler_config",
|
|
"..:dart_no_snapshot_config",
|
|
]
|
|
public_configs = [ ":libdart_vm_config" ]
|
|
set_sources_assignment_filter([
|
|
"*_test.cc",
|
|
"*_test.h",
|
|
])
|
|
sources = vm_sources_list
|
|
include_dirs = [ ".." ]
|
|
}
|
|
|
|
template("process_library_source") {
|
|
assert(defined(invoker.libsources), "Need libsources in $target_name")
|
|
assert(defined(invoker.output), "Need output in $target_name")
|
|
action(target_name) {
|
|
visibility = [ ":*" ] # Only targets in this file can see this.
|
|
libsources = invoker.libsources
|
|
|
|
script = invoker.script
|
|
inputs = invoker.inputs + libsources
|
|
outputs = [
|
|
invoker.output,
|
|
]
|
|
args = invoker.args + rebase_path(libsources, root_build_dir)
|
|
}
|
|
}
|
|
|
|
template("generate_library_source") {
|
|
assert(defined(invoker.libname), "Need libname in $target_name")
|
|
assert(defined(invoker.libsources), "Need libsources in $target_name")
|
|
assert(defined(invoker.kind), "Need kind in $target_name")
|
|
assert(defined(invoker.output), "Need output in $target_name")
|
|
|
|
process_library_source(target_name) {
|
|
libname = invoker.libname
|
|
libsources = invoker.libsources
|
|
kind = invoker.kind
|
|
script = "../tools/gen_library_src_paths.py"
|
|
inputs = [
|
|
"../lib/libgen_in.cc",
|
|
]
|
|
output = invoker.output
|
|
args = [
|
|
"--output",
|
|
rebase_path(invoker.output, root_build_dir),
|
|
"--input_cc",
|
|
rebase_path("../lib/libgen_in.cc", root_build_dir),
|
|
"--include",
|
|
"vm/bootstrap.h",
|
|
"--var_name",
|
|
"dart::Bootstrap::${libname}_${kind}_paths_",
|
|
"--library_name",
|
|
"dart:${libname}",
|
|
]
|
|
}
|
|
}
|
|
|
|
# This templates expects invoker.sources to be a list of lists.
|
|
# The lists contain the following information about each library:
|
|
# library name (string)
|
|
# library sources (list of strings)
|
|
# library source base path (string)
|
|
# filename (string)
|
|
# do_patch (boolean)
|
|
#
|
|
# If do_patch is true, the lists additionally contains
|
|
# patch sources (list of strings)
|
|
# patch source base path (string)
|
|
#
|
|
# The template iterates over the list, and generates generate_library_source
|
|
# actions for each. After that, it generates targets to compile the generated
|
|
# sources to make libdart_lib_*.
|
|
template("generate_core_libraries") {
|
|
assert(defined(invoker.sources), "Need sources in $target_name")
|
|
assert(defined(invoker.allsources), "Need allsources in $target_name")
|
|
liboutputs = []
|
|
libdeps = []
|
|
foreach(lib, invoker.sources) {
|
|
libname = lib[0]
|
|
filename = lib[3]
|
|
do_patch = lib[4]
|
|
generate_library_source("generate_${filename}_cc_file") {
|
|
libname = libname
|
|
libsources = rebase_path(lib[1], ".", lib[2])
|
|
kind = "source"
|
|
output = "$target_gen_dir/${filename}_gen.cc"
|
|
}
|
|
if (do_patch) {
|
|
generate_library_source("generate_${filename}_patch_cc_file") {
|
|
libname = libname
|
|
libsources = rebase_path(lib[5], ".", lib[6])
|
|
kind = "patch"
|
|
output = "$target_gen_dir/${filename}_patch_gen.cc"
|
|
}
|
|
}
|
|
|
|
liboutputs += [ "$target_gen_dir/${filename}_gen.cc" ]
|
|
libdeps += [ ":generate_${filename}_cc_file" ]
|
|
if (do_patch) {
|
|
liboutputs += [ "$target_gen_dir/${filename}_patch_gen.cc" ]
|
|
libdeps += [ ":generate_${filename}_patch_cc_file" ]
|
|
}
|
|
}
|
|
|
|
all_libsources = rebase_path(invoker.allsources, ".", "../lib")
|
|
|
|
static_library("libdart_lib_nosnapshot") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_maybe_precompiled_runtime_config",
|
|
]
|
|
deps = libdeps
|
|
sources = all_libsources + [ "bootstrap.cc" ] + liboutputs
|
|
include_dirs = [ ".." ]
|
|
}
|
|
static_library("libdart_lib_nosnapshot_with_precompiler") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_precompiler_config",
|
|
]
|
|
deps = libdeps
|
|
sources = all_libsources + [ "bootstrap.cc" ] + liboutputs
|
|
include_dirs = [ ".." ]
|
|
}
|
|
static_library("libdart_lib") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_maybe_precompiled_runtime_config",
|
|
]
|
|
sources = all_libsources + [ "bootstrap_nocore.cc" ]
|
|
include_dirs = [ ".." ]
|
|
}
|
|
static_library("libdart_lib_precompiled_runtime") {
|
|
configs += [
|
|
"..:dart_config",
|
|
"..:dart_maybe_product_config",
|
|
"..:dart_precompiled_runtime_config",
|
|
]
|
|
sources = all_libsources + [ "bootstrap_nocore.cc" ]
|
|
include_dirs = [ ".." ]
|
|
}
|
|
}
|
|
|
|
generate_core_libraries("core_libraries") {
|
|
sources = [
|
|
[
|
|
"async",
|
|
processed_gypis.async_sdk_sources,
|
|
"../../sdk/lib/async",
|
|
"async",
|
|
true,
|
|
processed_gypis.async_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"core",
|
|
processed_gypis.core_sdk_sources,
|
|
"../../sdk/lib/core",
|
|
"core",
|
|
true,
|
|
processed_gypis.core_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"collection",
|
|
processed_gypis.collection_sdk_sources,
|
|
"../../sdk/lib/collection",
|
|
"collection",
|
|
true,
|
|
processed_gypis.collection_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"convert",
|
|
processed_gypis.convert_sdk_sources,
|
|
"../../sdk/lib/convert",
|
|
"convert",
|
|
true,
|
|
processed_gypis.convert_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"developer",
|
|
processed_gypis.developer_sdk_sources,
|
|
"../../sdk/lib/developer",
|
|
"developer",
|
|
true,
|
|
processed_gypis.developer_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"_internal",
|
|
processed_gypis.internal_sdk_sources,
|
|
"../../sdk/lib/internal",
|
|
"internal",
|
|
true,
|
|
processed_gypis.internal_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"isolate",
|
|
processed_gypis.isolate_sdk_sources,
|
|
"../../sdk/lib/isolate",
|
|
"isolate",
|
|
true,
|
|
processed_gypis.isolate_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"math",
|
|
processed_gypis.math_sdk_sources,
|
|
"../../sdk/lib/math",
|
|
"math",
|
|
true,
|
|
processed_gypis.math_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"mirrors",
|
|
processed_gypis.mirrors_sdk_sources,
|
|
"../../sdk/lib/mirrors",
|
|
"mirrors",
|
|
true,
|
|
processed_gypis.mirrors_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"profiler",
|
|
processed_gypis.profiler_sdk_sources,
|
|
"../../sdk/lib/profiler",
|
|
"profiler",
|
|
false,
|
|
],
|
|
[
|
|
"typed_data",
|
|
processed_gypis.typed_data_sdk_sources,
|
|
"../../sdk/lib/typed_data",
|
|
"typed_data",
|
|
true,
|
|
processed_gypis.typed_data_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"_vmservice",
|
|
processed_gypis.vmservice_sdk_sources,
|
|
"../../sdk/lib/vmservice",
|
|
"vmservice",
|
|
true,
|
|
processed_gypis.vmservice_runtime_sources,
|
|
"../lib",
|
|
],
|
|
]
|
|
allsources = processed_gypis.allsources
|
|
}
|
|
|
|
template("concatenate_patch") {
|
|
assert(defined(invoker.libsources), "Need a sources in $target_name")
|
|
assert(defined(invoker.output), "Need an output in $target_name")
|
|
|
|
process_library_source(target_name) {
|
|
libsources = invoker.libsources
|
|
inputs = []
|
|
output = invoker.output
|
|
script = "../tools/concatenate_patches.py"
|
|
args = [
|
|
"--output",
|
|
rebase_path(output, root_build_dir),
|
|
]
|
|
}
|
|
}
|
|
|
|
template("generate_patched_sdk") {
|
|
assert(defined(invoker.libraries), "Need libraries in $target_name")
|
|
|
|
concatenation_target_names = []
|
|
concatenation_files = []
|
|
|
|
# Concatenate vm library patches.
|
|
foreach(library, invoker.libraries) {
|
|
name = library[0]
|
|
|
|
target_output = "$target_gen_dir/patches/${name}_patch.dart"
|
|
concatenate_patch("concatenate_${name}_patch") {
|
|
libsources = rebase_path(library[1], ".", library[2])
|
|
output = target_output
|
|
}
|
|
concatenation_target_names += [ ":concatenate_${name}_patch" ]
|
|
concatenation_files += [ target_output ]
|
|
}
|
|
|
|
# Build the patched sdk out of the concatenated patches and the special
|
|
# libraries.
|
|
action(target_name) {
|
|
deps = concatenation_target_names
|
|
if (!prebuilt_dart_exe_works) {
|
|
deps += [ "../bin:dart_bootstrap($host_toolchain)" ]
|
|
}
|
|
|
|
patches_dir = "$target_gen_dir/patches"
|
|
patched_sdk_dir = "$root_out_dir/patched_sdk"
|
|
|
|
script = "../../tools/patch_sdk.py"
|
|
|
|
# We list all files which make up the sdk (modulo patches) and get them
|
|
# back as a GN list object.
|
|
shared_sdk_sources = exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../sdk/lib"),
|
|
],
|
|
"list lines")
|
|
|
|
front_end_sources = exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../pkg/front_end"),
|
|
],
|
|
"list lines")
|
|
|
|
kernel_sources = exec_script("../../tools/list_dart_files.py",
|
|
[
|
|
"absolute",
|
|
rebase_path("../../pkg/kernel"),
|
|
],
|
|
"list lines")
|
|
|
|
# We list the `patch_sdk.dart` tool here because the [script] (which is
|
|
# implicitly an input) will call it.
|
|
inputs = [
|
|
"../../tools/patch_sdk.dart",
|
|
]
|
|
|
|
# Files below are not patches, they will not be in [concatenation_files]
|
|
# but the `patch_sdk.dart` script will copy them into the patched sdk.
|
|
inputs += [
|
|
"../bin/builtin.dart",
|
|
"../bin/vmservice/vmservice_io.dart",
|
|
"../bin/vmservice/loader.dart",
|
|
"../bin/vmservice/server.dart",
|
|
]
|
|
|
|
# Add all the normal sdk sources.
|
|
inputs += shared_sdk_sources
|
|
|
|
# Add all the concatenated patch files.
|
|
inputs += concatenation_files
|
|
|
|
# Add some front-end dependencies
|
|
inputs += front_end_sources
|
|
inputs += kernel_sources
|
|
|
|
outputs = [
|
|
# Instead of listing all outputs we list a single well-known one.
|
|
"${patched_sdk_dir}/lib/core/core.dart",
|
|
]
|
|
|
|
args = [ "--quiet" ]
|
|
if (!prebuilt_dart_exe_works) {
|
|
dart_out_dir = get_label_info("../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 += [
|
|
"vm",
|
|
rebase_path("../../sdk"),
|
|
rebase_path(patches_dir, root_build_dir),
|
|
rebase_path(patched_sdk_dir, root_build_dir),
|
|
rebase_path("../../.packages"),
|
|
]
|
|
}
|
|
}
|
|
|
|
generate_patched_sdk("patched_sdk") {
|
|
libraries = [
|
|
[
|
|
"async",
|
|
processed_gypis.async_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"collection",
|
|
processed_gypis.collection_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"convert",
|
|
processed_gypis.convert_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"core",
|
|
processed_gypis.core_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"developer",
|
|
processed_gypis.developer_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"internal",
|
|
processed_gypis.internal_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"isolate",
|
|
processed_gypis.isolate_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"math",
|
|
processed_gypis.math_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"mirrors",
|
|
processed_gypis.mirrors_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"profiler",
|
|
processed_gypis.profiler_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"typed_data",
|
|
processed_gypis.typed_data_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"vmservice",
|
|
processed_gypis.vmservice_runtime_sources,
|
|
"../lib",
|
|
],
|
|
[
|
|
"io",
|
|
processed_gypis.bin_io_sources,
|
|
"../bin",
|
|
],
|
|
]
|
|
}
|