# Copyright 2023 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file.
import re
def wrap_with_whole_archive(command, is_apple=False): """Modify and return `command` such that -LinkWrapper,add-whole-archive=X
becomes a linking inclusion X (-lX) but wrapped in whole-archive
modifiers."""
# We want to link rlibs as --whole-archive if they are part of a unit test # target. This is determined by switch `-LinkWrapper,add-whole-archive`. # # TODO(danakj): If the linking command line gets too large we could move # {{rlibs}} into the rsp file, but then this script needs to modify the rsp # file instead of the command line. def extract_libname(s):
m = re.match(r'-LinkWrapper,add-whole-archive=(.+)', s) return m.group(1)
# The set of libraries we want to apply `--whole-archive`` to.
whole_archive_libs = [
extract_libname(x) for x in command if x.startswith("-LinkWrapper,add-whole-archive=")
]
# Remove the arguments meant for consumption by this LinkWrapper script.
command = [x for x in command ifnot x.startswith("-LinkWrapper,")]
def has_any_suffix(string, suffixes): for suffix in suffixes: if string.endswith(suffix): returnTrue returnFalse
def wrap_libs_with(command, libnames, before, after):
out = [] for arg in command: # The arg is a full path to a library, we look if the the library name (a # suffix of the full arg) is one of `libnames`. if has_any_suffix(arg, libnames):
out.extend([before, arg]) if after:
out.append(after) else:
out.append(arg) return out
if is_apple: # Apply -force_load to the libraries that desire it. return wrap_libs_with(command, whole_archive_libs, "-Wl,-force_load", None) else: # Apply --whole-archive to the libraries that desire it. return wrap_libs_with(command, whole_archive_libs, "-Wl,--whole-archive", "-Wl,--no-whole-archive")
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.16 Sekunden
(vorverarbeitet am 2026-08-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.