mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 15:01:30 +00:00
168539d61d
The flutter engine DEPS got new icu/boringssl so this CL can safely land and roll into engine. A small change is made in Patchset 1..3. This removes special logic for creating the `dart-sdk` we distribute which used to build release and product mode and copied some binaries from the latter into the former, before the SDK was actuallly ready to test and distribute. This changes the GN build rules to build the necessary gen_snapshot/dart_precompiled_runtime product binaries during the normal release build. Normally during --mode=product builds the global build config in //build/config/BUILDCONFIG.gn will set `-fvisibility=false`. => Doing so results in much smaller binaries - because only explicitly exported symbols are visible, the rest can be tree shaken by the linker. Since we are building --mode=release, the `-fvisibility=false` will not be set. In order to set the flag for the 2 special product-mode binaries we need to add -fvisibility=hidden manually, in: * dart_product_config: Which is used for compiling VM sources. * 3rd party double-conversion library * 3rd party boringssl library * 3rd party icu library The upstream CLs are: * BoringSSL: https://dart-review.googlesource.com/c/boringssl_gen/+/150482 * ICU: https://chromium-review.googlesource.com/c/chromium/deps/icu/+/2236407 Issue https://github.com/dart-lang/sdk/issues/42230 Change-Id: I8d9b37acbb5eb94e44d97652f838948a946fd372 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151505 Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Alexander Thomas <athom@google.com>
278 lines
7.6 KiB
Text
278 lines
7.6 KiB
Text
# 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
|
|
is_product = false
|
|
},
|
|
{
|
|
suffix = "_jit_product"
|
|
configs = _jit_product_config
|
|
snapshot = true
|
|
compiler = true
|
|
is_product = true
|
|
},
|
|
{
|
|
suffix = "_precompiled_runtime"
|
|
configs = _precompiled_runtime_config
|
|
snapshot = true
|
|
compiler = false
|
|
is_product = false
|
|
},
|
|
{
|
|
suffix = "_precompiled_runtime_product"
|
|
configs = _precompiled_runtime_product_config
|
|
snapshot = true
|
|
compiler = false
|
|
is_product = true
|
|
},
|
|
{
|
|
suffix = "_precompiler"
|
|
configs = _precompiler_config
|
|
snapshot = false
|
|
compiler = true
|
|
is_product = false
|
|
},
|
|
{
|
|
suffix = "_precompiler_product"
|
|
configs = _precompiler_product_config
|
|
snapshot = false
|
|
compiler = true
|
|
is_product = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_fuchsia"
|
|
configs = _precompiler_fuchsia_config
|
|
snapshot = false
|
|
compiler = true
|
|
is_product = false
|
|
},
|
|
{
|
|
suffix = "_precompiler_product_fuchsia"
|
|
configs = _precompiler_product_fuchsia_config
|
|
snapshot = false
|
|
compiler = true
|
|
is_product = true
|
|
},
|
|
{
|
|
suffix = "_precompiler_host_targeting_host"
|
|
configs = _precompiler_host_targeting_host_config
|
|
snapshot = false
|
|
compiler = true
|
|
is_product = false
|
|
},
|
|
{
|
|
suffix = "_precompiler_product_host_targeting_host"
|
|
configs = _precompiler_product_host_targeting_host_config
|
|
snapshot = false
|
|
compiler = true
|
|
is_product = true
|
|
},
|
|
{
|
|
suffix = "_libfuzzer"
|
|
configs = _libfuzzer_config
|
|
snapshot = true
|
|
compiler = true
|
|
is_product = false
|
|
},
|
|
]
|
|
|
|
# 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
|
|
}
|
|
extra_product_deps = []
|
|
if (defined(invoker.extra_product_deps)) {
|
|
extra_product_deps += invoker.extra_product_deps
|
|
}
|
|
extra_nonproduct_deps = []
|
|
if (defined(invoker.extra_nonproduct_deps)) {
|
|
extra_nonproduct_deps += invoker.extra_nonproduct_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.is_product) {
|
|
deps += extra_product_deps
|
|
} else {
|
|
deps += extra_nonproduct_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" ])
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|