![trop[bot]](/assets/img/avatar_default.png)
build: refactor Linux binary stripping to align with upstream (#47932) Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
70 lines
2.4 KiB
Text
70 lines
2.4 KiB
Text
# Copyright 2021 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# This has been adapted from https://source.chromium.org/chromium/chromium/src/+/main:build/linux/strip_binary.gni;drc=c220a41e0422d45f1657c28146d32e99cc53640b
|
|
# The notable difference is it has an option to compress the debug sections
|
|
|
|
import("//build/config/clang/clang.gni")
|
|
import("//build/toolchain/toolchain.gni")
|
|
|
|
# Extracts symbols from a binary into a symbol file.
|
|
#
|
|
# Args:
|
|
# binary_input: Path to the binary containing symbols to extract, e.g.:
|
|
# "$root_out_dir/chrome"
|
|
# symbol_output: Desired output file for symbols, e.g.:
|
|
# "$root_out_dir/chrome.debug"
|
|
# stripped_binary_output: Desired output file for stripped file, e.g.:
|
|
# "$root_out_dir/chrome.stripped"
|
|
# compress_debug_sections: If true, compress the extracted debug sections
|
|
template("strip_binary") {
|
|
forward_variables_from(invoker,
|
|
[
|
|
"deps",
|
|
"testonly",
|
|
])
|
|
action("${target_name}") {
|
|
llvm_strip_binary = "${clang_base_path}/bin/llvm-strip"
|
|
llvm_objcopy_binary = "${clang_base_path}/bin/llvm-objcopy"
|
|
script = "//electron/build/linux/strip_binary.py"
|
|
|
|
if (defined(invoker.stripped_binary_output)) {
|
|
stripped_binary_output = invoker.stripped_binary_output
|
|
} else {
|
|
stripped_binary_output = invoker.binary_input + ".stripped"
|
|
}
|
|
if (defined(invoker.symbol_output)) {
|
|
symbol_output = invoker.symbol_output
|
|
} else {
|
|
symbol_output = invoker.binary_input + ".debug"
|
|
}
|
|
|
|
inputs = [
|
|
invoker.binary_input,
|
|
llvm_strip_binary,
|
|
llvm_objcopy_binary,
|
|
]
|
|
outputs = [
|
|
symbol_output,
|
|
stripped_binary_output,
|
|
]
|
|
args = [
|
|
"--llvm-strip-binary-path",
|
|
rebase_path(llvm_strip_binary, root_build_dir),
|
|
"--llvm-objcopy-binary-path",
|
|
rebase_path(llvm_objcopy_binary, root_build_dir),
|
|
"--symbol-output",
|
|
rebase_path(symbol_output, root_build_dir),
|
|
"--stripped-binary-output",
|
|
rebase_path(stripped_binary_output, root_build_dir),
|
|
"--binary-input",
|
|
rebase_path(invoker.binary_input, root_build_dir),
|
|
]
|
|
|
|
if (defined(invoker.compress_debug_sections) &&
|
|
invoker.compress_debug_sections) {
|
|
args += [ "--compress-debug-sections" ]
|
|
}
|
|
}
|
|
}
|