| # Copyright 2020 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. |
| |
| import("fuchsia_component.gni") |
| import("fuchsia_package.gni") |
| |
| # Defines a package that contains shell commands. |
| # See: https://fuchsia.dev/fuchsia-src/development/components/build |
| # |
| # Parameters |
| # |
| # package_name (optional) |
| # The name of the package. |
| # Type: string |
| # Default: target_name |
| # |
| # manifest (optional) |
| # If your shell program can also be launched as a component, |
| # then specify the component manifest here. |
| # Type: path |
| # |
| # data_deps |
| # deps |
| # testonly |
| # visibility |
| template("fuchsia_shell_package") { |
| if (current_toolchain == default_toolchain) { |
| package_name = target_name |
| if (defined(invoker.package_name)) { |
| package_name = invoker.package_name |
| } |
| |
| if (defined(invoker.manifest)) { |
| component_target = "${target_name}_component" |
| fuchsia_component(component_target) { |
| forward_variables_from(invoker, |
| [ |
| "data_deps", |
| "deps", |
| "manifest_deps", |
| "testonly", |
| ]) |
| visibility = [ ":*" ] |
| manifest = invoker.manifest |
| component_name = package_name |
| } |
| } |
| |
| fuchsia_package(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "shell_commands", |
| "data_deps", |
| "deps", |
| "disable_elf_binaries_checks", |
| "testonly", |
| "visibility", |
| ]) |
| is_shell_package = true |
| package_name = package_name |
| if (!defined(deps)) { |
| deps = [] |
| } |
| if (defined(component_target)) { |
| deps += [ ":$component_target" ] |
| } |
| |
| # The shell environment is not intended for production use. |
| deps += [ "//build/validate:non_production_tag" ] |
| } |
| } else { |
| group(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "visibility", |
| ]) |
| deps = [ ":$target_name($default_toolchain)" ] |
| } |
| not_needed(invoker, "*") |
| } |
| } |