| # Copyright 2021 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Template used internally by python_action() and others below |
| # Uses the same parameters as their callers, with the addition of: |
| # |
| # Parameters: |
| # target_type: Inner target type to invoke (e.g. "action") |
| # |
| template("_python_action") { |
| assert( |
| defined(invoker.binary_label), |
| "The label of the python_binary() to use to perform the action must be specified.") |
| |
| # force the binary_label into the host toolchain |
| binary_label_no_toolchain = |
| get_label_info(invoker.binary_label, "label_no_toolchain") |
| binary_label = "${binary_label_no_toolchain}(${host_toolchain})" |
| |
| binary_label_name = get_label_info(binary_label, "name") |
| binary_tool_output_dir = get_label_info(binary_label, "target_out_dir") |
| binary_tool_output_name = "${binary_tool_output_dir}/${binary_label_name}.pyz" |
| |
| target(invoker.target_type, target_name) { |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "deps", |
| "binary_label", |
| "script", |
| "target_type", |
| ]) |
| script = binary_tool_output_name |
| deps = [ binary_label ] |
| if (defined(invoker.deps)) { |
| deps += invoker.deps |
| } |
| } |
| } |
| |
| # Declares an action() that uses a python_binary for the script |
| # |
| # This sets up the python module search path using the GN paths specified, and |
| # otherwise is the same as an action(), forwarding all invoker vars to the |
| # action() |
| # |
| # Parameters: |
| # |
| # binary_label |
| # [label] Label (without host toolchain), to python binary that is to be |
| # executed by the action. |
| # |
| # all others are passed to action() as expected, |
| # |
| template("python_action") { |
| _python_action(target_name) { |
| forward_variables_from(invoker, "*") |
| target_type = "action" |
| } |
| } |
| |
| # Declares an hermetic_inputs_action() that uses a python_binary for the script |
| # |
| # This is useful if the action's command is not hermetic, which is allowed |
| # for those that generate hermetic input files. See documentation for action() |
| # and hermetic_inputs_action() in //build/config/BUILDCONFIG.gn for more details. |
| # |
| # This sets up the python module search path using the GN paths specified, and |
| # otherwise is the same as an action(), forwarding all invoker vars to the |
| # action() |
| # |
| # Parameters: |
| # |
| # binary_label |
| # [label] Label (without host toolchain), to python binary that is to be |
| # executed by the action. |
| # |
| # all others are passed to hermetic_inputs_action() as expected, |
| # |
| template("python_hermetic_inputs_action") { |
| _python_action(target_name) { |
| forward_variables_from(invoker, "*") |
| target_type = "hermetic_inputs_action" |
| } |
| } |