1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Targets in ths file are to take a V8 context snapshot on build time.
# Created V8 context snapshot is used in
# third_party/blink/renderer/bindings/core/v8/v8_context_snapshot.{cc|h}.
# to speedup creating a V8 context and setting up around it.
import("//build/config/cast.gni")
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/v8_target_cpu.gni")
import("//v8/gni/v8.gni")
declare_args() {
# If set, both snapshots are included. At this time, this only applicable to
# android. In other words, it will not work correctly on other platforms.
# Building the context snapshots on android requires building blink multiple
# times. To avoid impacting developer productivity the context snapshot is
# only built for official builds.
include_both_v8_snapshots =
is_official_build && target_os == "android" && target_cpu == "arm64"
if (target_os == "android") {
# Whether to include both snapshots on arm32 when building fat binary.
include_both_v8_snapshots_android_secondary_abi = false
# Whether Android's secondary ABI should use the context snapshot.
use_v8_context_snapshot_android_secondary_abi = false
}
}
declare_args() {
# TODO(crbug.com/40539769): Enable the feature on more environments.
# Disable in mac and win cross builds since building Blink twice is slow.
use_v8_context_snapshot =
include_both_v8_snapshots ||
(!is_chromeos && !is_android && !is_castos && !is_fuchsia &&
!(host_toolchain == default_toolchain && is_msan) &&
!(is_win && host_os != "win") && !(is_mac && host_os != "mac"))
}
# Apply the secondary abi overrides. Must occur outside of declare_args in
# order to take effect when include_both_v8_snapshots / use_v8_context_snapshot
# are set via args.gn.
if (target_os == "android" && v8_current_cpu != v8_target_cpu) {
include_both_v8_snapshots = include_both_v8_snapshots_android_secondary_abi
use_v8_context_snapshot = use_v8_context_snapshot_android_secondary_abi
}
# We use a different filename for arm64 macOS builds so that the arm64 and
# x64 snapshots can live side-by-side in a universal macOS app.
if (is_mac) {
if (v8_target_cpu == "x64") {
v8_context_snapshot_filename = "v8_context_snapshot.x86_64.bin"
} else if (v8_target_cpu == "arm64") {
v8_context_snapshot_filename = "v8_context_snapshot.arm64.bin"
}
} else if (target_os == "android") {
if (v8_current_cpu == "arm" || v8_current_cpu == "x86" ||
v8_current_cpu == "mipsel") {
v8_context_snapshot_filename = "v8_context_snapshot_32.bin"
} else {
v8_context_snapshot_filename = "v8_context_snapshot_64.bin"
}
} else {
v8_context_snapshot_filename = "v8_context_snapshot.bin"
}
# We cannot use V8 context snapshot, if V8 doesn't use snapshot files.
if (use_v8_context_snapshot && !v8_use_external_startup_data) {
use_v8_context_snapshot = false
}
|