a41a1dc917
Make them form its own source set (libdart_compiler) and completely exclude them from AOT runtime targets. Previously we had some inconsistencies, with some files were using DART_PRECOMPILED_RUNTIME to fully or partially exclude either contents from their headers or from implementation, while other files did nothing and relied on linker to throw their contents away. This change tries to address this inconsistency. A follow up change would include a check in most compiler headers which would prohibit to use them while building AOT runtime. Change-Id: Ief11b11cbc518b301d3e93fce80580a31bbad151 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142993 Reviewed-by: Alexander Markov <alexmarkov@google.com> Reviewed-by: Martin Kustermann <kustermann@google.com>
255 lines
7.0 KiB
Plaintext
255 lines
7.0 KiB
Plaintext
# Copyright (c) 2018, 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.
|
|
|
|
_dart_runtime = get_path_info("../runtime", "abspath")
|
|
|
|
_base_config = [
|
|
"$_dart_runtime:dart_arch_config",
|
|
"$_dart_runtime:dart_config",
|
|
"$_dart_runtime:dart_os_config",
|
|
]
|
|
|
|
_base_fuchsia_config = [
|
|
"$_dart_runtime:dart_arch_config",
|
|
"$_dart_runtime:dart_config",
|
|
"$_dart_runtime:dart_os_fuchsia_config",
|
|
]
|
|
|
|
_base_host_targeting_host_config = [ "$_dart_runtime:dart_config" ]
|
|
|
|
_maybe_product = [ "$_dart_runtime:dart_maybe_product_config" ]
|
|
|
|
_product = [ "$_dart_runtime:dart_product_config" ]
|
|
|
|
_jit_config = _base_config + _maybe_product
|
|
|
|
_jit_product_config = _base_config + _product
|
|
|
|
_base_libfuzzer_config = [ "$_dart_runtime:dart_libfuzzer_config" ]
|
|
|
|
_libfuzzer_config = _base_config + _base_libfuzzer_config
|
|
|
|
_precompiled_runtime_config =
|
|
_base_config + [
|
|
"$_dart_runtime:dart_maybe_product_config",
|
|
"$_dart_runtime:dart_precompiled_runtime_config",
|
|
]
|
|
|
|
_precompiled_runtime_product_config =
|
|
_base_config + [
|
|
"$_dart_runtime:dart_precompiled_runtime_config",
|
|
"$_dart_runtime:dart_product_config",
|
|
]
|
|
|
|
_precompiler_base = [ "$_dart_runtime:dart_precompiler_config" ]
|
|
|
|
_precompiler_config = _base_config + _precompiler_base + _maybe_product
|
|
|
|
_precompiler_product_config = _base_config + _precompiler_base + _product
|
|
|
|
_precompiler_fuchsia_config =
|
|
_base_fuchsia_config + _precompiler_base + _maybe_product
|
|
|
|
_precompiler_product_fuchsia_config =
|
|
_base_fuchsia_config + _precompiler_base + _product
|
|
|
|
_precompiler_host_targeting_host_config =
|
|
_base_host_targeting_host_config + _precompiler_base + _maybe_product
|
|
|
|
_precompiler_product_host_targeting_host_config =
|
|
_base_host_targeting_host_config + _precompiler_base + _product
|
|
|
|
_all_configs = [
|
|
{
|
|
suffix = "_jit"
|
|
configs = _jit_config
|
|
snapshot = true
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_jit_product"
|
|
configs = _jit_product_config
|
|
snapshot = true
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_precompiled_runtime"
|
|
configs = _precompiled_runtime_config
|
|
snapshot = true
|
|
compiler = false
|
|
},
|
|
{
|
|
suffix = "_precompiled_runtime_product"
|
|
configs = _precompiled_runtime_product_config
|
|
snapshot = true
|
|
compiler = false
|
|
},
|
|
{
|
|
suffix = "_precompiler"
|
|
configs = _precompiler_config
|
|
snapshot = false
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_product"
|
|
configs = _precompiler_product_config
|
|
snapshot = false
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_fuchsia"
|
|
configs = _precompiler_fuchsia_config
|
|
snapshot = false
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_product_fuchsia"
|
|
configs = _precompiler_product_fuchsia_config
|
|
snapshot = false
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_host_targeting_host"
|
|
configs = _precompiler_host_targeting_host_config
|
|
snapshot = false
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_product_host_targeting_host"
|
|
configs = _precompiler_product_host_targeting_host_config
|
|
snapshot = false
|
|
compiler = true
|
|
},
|
|
{
|
|
suffix = "_libfuzzer"
|
|
configs = _libfuzzer_config
|
|
snapshot = true
|
|
compiler = true
|
|
},
|
|
]
|
|
|
|
# This template creates a target for each of the configurations listed above.
|
|
# For example:
|
|
#
|
|
# library_for_all_configs("libfoo") {
|
|
# target_type = "source_set"
|
|
# sources = [ "foo.c" ]
|
|
# configurable_deps [ ":libbar" ]
|
|
# }
|
|
#
|
|
# will make a source_set target for libfoo_jit, libfoo_jit_product, etc. that
|
|
# depends on libbar_jit, libbar_jit_product etc. respectively.
|
|
#
|
|
# Parameters
|
|
#
|
|
# target_type (required):
|
|
# The target declaration or template to repeat for each configuration.
|
|
#
|
|
# configurable_deps (optional):
|
|
# Dependencies of this target, which are themselves generated by
|
|
# library_for_all_configs(). The listed dependencies will be suffixed with
|
|
# a string that matches the configuration.
|
|
#
|
|
# extra_deps (optional):
|
|
# Regular additional deps that don't receive special treatment.
|
|
#
|
|
# extra_configs (optional):
|
|
# Any configs needed in addition to the ones above.
|
|
#
|
|
# snapshot_sources (optional):
|
|
# Additional sources to include when the configuration has a snapshot.
|
|
#
|
|
template("library_for_all_configs") {
|
|
assert(defined(invoker.target_type))
|
|
extra_configs = []
|
|
if (defined(invoker.extra_configs)) {
|
|
extra_configs += invoker.extra_configs
|
|
}
|
|
configurable_deps = []
|
|
if (defined(invoker.configurable_deps)) {
|
|
configurable_deps += invoker.configurable_deps
|
|
}
|
|
extra_deps = []
|
|
if (defined(invoker.extra_deps)) {
|
|
extra_deps += invoker.extra_deps
|
|
}
|
|
foreach(conf, _all_configs) {
|
|
target(invoker.target_type, "${target_name}${conf.suffix}") {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"extra_configs",
|
|
"extra_deps",
|
|
"configurable_deps",
|
|
])
|
|
configs += conf.configs + extra_configs
|
|
configured_deps = []
|
|
foreach(dep, configurable_deps) {
|
|
configured_deps += [ "${dep}${conf.suffix}" ]
|
|
}
|
|
if (defined(compiler_lib)) {
|
|
if (conf.compiler) {
|
|
configured_deps += [ "${compiler_lib}${conf.suffix}" ]
|
|
} else {
|
|
not_needed([ "compiler_lib" ])
|
|
}
|
|
}
|
|
deps = configured_deps + extra_deps
|
|
if (conf.snapshot) {
|
|
if (defined(snapshot_sources)) {
|
|
sources += snapshot_sources
|
|
}
|
|
} else {
|
|
if (defined(snapshot_sources)) {
|
|
not_needed([ "snapshot_sources" ])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
template("library_for_all_configs_with_compiler") {
|
|
assert(defined(invoker.target_type))
|
|
extra_configs = []
|
|
if (defined(invoker.extra_configs)) {
|
|
extra_configs += invoker.extra_configs
|
|
}
|
|
configurable_deps = []
|
|
if (defined(invoker.configurable_deps)) {
|
|
configurable_deps += invoker.configurable_deps
|
|
}
|
|
extra_deps = []
|
|
if (defined(invoker.extra_deps)) {
|
|
extra_deps += invoker.extra_deps
|
|
}
|
|
foreach(conf, _all_configs) {
|
|
if (conf.compiler) {
|
|
target(invoker.target_type, "${target_name}${conf.suffix}") {
|
|
forward_variables_from(invoker,
|
|
"*",
|
|
[
|
|
"extra_configs",
|
|
"extra_deps",
|
|
"configurable_deps",
|
|
])
|
|
configs += conf.configs + extra_configs
|
|
configured_deps = []
|
|
foreach(dep, configurable_deps) {
|
|
configured_deps += [ "${dep}${conf.suffix}" ]
|
|
}
|
|
deps = configured_deps + extra_deps
|
|
if (conf.snapshot) {
|
|
if (defined(snapshot_sources)) {
|
|
sources += snapshot_sources
|
|
}
|
|
} else {
|
|
if (defined(snapshot_sources)) {
|
|
not_needed([ "snapshot_sources" ])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|