Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
deps: V8: cherry-pick 7b3332844212
Original commit message:

    [build] Move split_static_library.gni from Chromium repo

    We'll remove the file from Chromium in a follow up after V8 has rolled
    + 2 days.

    Bug: v8:9911
    Change-Id: I69fe56855f1ba83bec0d39e0fb6acb7e4182c6b7
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897826
    Reviewed-by: Nico Weber <thakis@chromium.org>
    Commit-Queue: Michael Achenbach <machenbach@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#64742}

Refs: v8/v8@7b33328

PR-URL: #39245
Refs: nodejs/build#2696
Reviewed-By: Richard Lau <rlau@redhat.com>
  • Loading branch information
targos committed Jul 11, 2021
commit 4a678dd1315e5026f2713e6851de21b00e5ffd30
2 changes: 1 addition & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
'v8_embedder_string': '-node.50',
'v8_embedder_string': '-node.51',

##### V8 defaults for Node.js #####

Expand Down
78 changes: 78 additions & 0 deletions deps/v8/gni/split_static_library.gni
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Copyright 2019 the V8 project authors. All rights reserved.
# Copyright 2016 The Chromium Authors. 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/config/compiler/compiler.gni")

template("split_static_library") {
assert(defined(invoker.split_count),
"Must define split_count for split_static_library")

# In many conditions the number of inputs will be 1 (because the
# count will be conditional on platform or configuration) and for
# some build configurations it's unnecessary to split libraries
# since the tooling will never create files of a problematic size.
if (invoker.split_count == 1 || use_lld) {
static_library(target_name) {
forward_variables_from(invoker, "*")
}
} else {
group_name = target_name

generated_static_libraries = []
current_library_index = 0
foreach(current_sources, split_list(invoker.sources, invoker.split_count)) {
current_name = "${target_name}_$current_library_index"
assert(
current_sources != [],
"Your values for splitting a static library generate one that has no sources.")
generated_static_libraries += [ ":$current_name" ]

static_library(current_name) {
# Generated static library shard gets everything but sources (which
# we're redefining) and visibility (which is set to be the group
# below).
forward_variables_from(invoker,
"*",
[
"check_includes",
"sources",
"visibility",
])
sources = current_sources
visibility = [ ":$group_name" ]

# When splitting a target's sources up into a series of static
# libraries, those targets will naturally include headers from each
# other arbitrarily. We could theoretically generate a web of
# dependencies and allow_circular_includes_from between all pairs of
# targets, but that's very cumbersome. Typical usage in Chrome is that
# only official Windows builds use split static libraries due to the
# Visual Studio size limits, and this means we'll still get header
# checking coverage for the other configurations.
check_includes = false

# Uniquify the output name if one is specified.
if (defined(invoker.output_name)) {
output_name = "${invoker.output_name}_$current_library_index"
}
}

current_library_index = current_library_index + 1
}

group(group_name) {
public_deps = generated_static_libraries
forward_variables_from(invoker,
[
"testonly",
"visibility",
])
}
}
}

set_defaults("split_static_library") {
configs = default_compiler_configs
}
2 changes: 1 addition & 1 deletion deps/v8/gni/v8.gni
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/v8_target_cpu.gni")
import("//build/split_static_library.gni")
import("split_static_library.gni")

declare_args() {
# Set flags for tracking code coverage. Uses gcov with gcc and sanitizer
Expand Down