| # 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. |
| |
| import("sdk_element.gni") |
| |
| # Defines an SDK element containing a host tool binary. |
| # |
| # Parameters |
| # deps (required) |
| # A single element list containing the GN label that builds the host tool |
| # binary. |
| # |
| # output_name (optional) |
| # Name of the host tool binary, if different than the name of the binary GN label. For |
| # example, many rustc_binary targets have the name ":bin" and set their own |
| # `output_name` parameter -- this should be that same name. |
| # |
| # description (optional) |
| # Description of the host tool to be included in the element's metadata. If |
| # omitted, defaults to "$output_name host tool for $output_toolchain.". |
| template("host_tool_sdk_element") { |
| assert(defined(invoker.deps), "Must define deps.") |
| gn_deps = invoker.deps |
| binary = gn_deps[0] |
| |
| if (defined(invoker.output_name) && invoker.output_name != "") { |
| output_name = invoker.output_name |
| } else { |
| output_name = get_label_info(binary, "name") |
| } |
| |
| if (defined(invoker.description)) { |
| description = invoker.description |
| } else { |
| output_toolchain = get_label_info(binary, "toolchain") |
| description = "$output_name host tool for $output_toolchain." |
| } |
| |
| output_base = get_label_info(binary, "root_out_dir") |
| |
| sdk_element(target_name) { |
| deps = gn_deps |
| |
| schema = { |
| source = "//sdk/schema/sdk/host_tool-f8025966.json" |
| } |
| |
| meta = { |
| contents = { |
| schema_id = "https://fuchsia.dev/schema/sdk/host_tool-f8025966.json" |
| data = { |
| name = output_name |
| element_type = "host_tool" |
| description = description |
| host_os = current_os |
| host_arch = current_cpu |
| contents = { |
| binary = output_name |
| } |
| } |
| } |
| dest = "${output_name}_sdk_metadata.json" |
| } |
| |
| files = [ |
| { |
| source = "$output_base/$output_name" |
| dest = output_name |
| }, |
| ] |
| } |
| } |