xref: /aosp_15_r20/external/angle/build/chromeos/embed_sections.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2024 The Chromium Authors
2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be
3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file.
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard Workerimport("//build/toolchain/toolchain.gni")
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard Worker# Embed elf section information of a binary into the binary's predefined
8*8975f5c5SAndroid Build Coastguard Worker# symbols.
9*8975f5c5SAndroid Build Coastguard Worker#
10*8975f5c5SAndroid Build Coastguard Worker# Args:
11*8975f5c5SAndroid Build Coastguard Worker#   binary_input: Path to the chrome binary, e.g.:
12*8975f5c5SAndroid Build Coastguard Worker#       "$root_out_dir/chrome"
13*8975f5c5SAndroid Build Coastguard Worker#   sections_embedded_binary_output: Desired output file for embedded binary,
14*8975f5c5SAndroid Build Coastguard Worker#       e.g.: "$root_out_dir/chrome.sections_embedded"
15*8975f5c5SAndroid Build Coastguard Workertemplate("embed_sections") {
16*8975f5c5SAndroid Build Coastguard Worker  forward_variables_from(invoker,
17*8975f5c5SAndroid Build Coastguard Worker                         [
18*8975f5c5SAndroid Build Coastguard Worker                           "deps",
19*8975f5c5SAndroid Build Coastguard Worker                           "testonly",
20*8975f5c5SAndroid Build Coastguard Worker                         ])
21*8975f5c5SAndroid Build Coastguard Worker  action("${target_name}") {
22*8975f5c5SAndroid Build Coastguard Worker    script = "//build/chromeos/embed_sections.py"
23*8975f5c5SAndroid Build Coastguard Worker
24*8975f5c5SAndroid Build Coastguard Worker    if (defined(invoker.sections_embedded_binary_output)) {
25*8975f5c5SAndroid Build Coastguard Worker      sections_embedded_binary_output = invoker.sections_embedded_binary_output
26*8975f5c5SAndroid Build Coastguard Worker    } else {
27*8975f5c5SAndroid Build Coastguard Worker      sections_embedded_binary_output =
28*8975f5c5SAndroid Build Coastguard Worker          invoker.binary_input + ".sections_embedded"
29*8975f5c5SAndroid Build Coastguard Worker    }
30*8975f5c5SAndroid Build Coastguard Worker
31*8975f5c5SAndroid Build Coastguard Worker    inputs = [ invoker.binary_input ]
32*8975f5c5SAndroid Build Coastguard Worker    outputs = [ sections_embedded_binary_output ]
33*8975f5c5SAndroid Build Coastguard Worker    args = [
34*8975f5c5SAndroid Build Coastguard Worker      "--binary-input",
35*8975f5c5SAndroid Build Coastguard Worker      rebase_path(invoker.binary_input, root_build_dir),
36*8975f5c5SAndroid Build Coastguard Worker      "--binary-output",
37*8975f5c5SAndroid Build Coastguard Worker      rebase_path(sections_embedded_binary_output, root_build_dir),
38*8975f5c5SAndroid Build Coastguard Worker    ]
39*8975f5c5SAndroid Build Coastguard Worker  }
40*8975f5c5SAndroid Build Coastguard Worker}
41