| # 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("//build/compiled_action.gni") |
| import("//build/dist/resource.gni") |
| |
| # Generates binary config using FIDL format and .json data values. |
| # |
| # Example instantiation: |
| # |
| # ``` |
| # component_config("some_config") { |
| # sources = [ "config.json" ] |
| # } |
| # ``` |
| # |
| # Inputs: |
| # |
| # - JSON file(s) with config values. |
| # |
| # Outputs: |
| # |
| # - Persistent FIDL binary config file. |
| # |
| # Parameters: |
| # |
| # sources (required) |
| # Paths to one or more JSON files containing config values. |
| # |
| # dest (optional) |
| # If specified, the packaged path for the generated binary config file. |
| # Default: "data/${target_name}" |
| template("component_config") { |
| assert(defined(invoker.sources), "Parameter source=... is required") |
| |
| generate_target = "${target_name}_generate" |
| output = "$target_gen_dir/$target_name" |
| compiled_action(generate_target) { |
| forward_variables_from(invoker, |
| [ |
| "deps", |
| "testonly", |
| ]) |
| visibility = [ ":*" ] |
| |
| tool = "//tools/component_manager_config:generate_config_bin" |
| tool_output_name = "generate_config" |
| |
| inputs = invoker.sources |
| outputs = [ output ] |
| |
| args = [ "--output" ] + rebase_path(outputs, root_build_dir) |
| foreach(source, invoker.sources) { |
| args += [ |
| "--input", |
| rebase_path(source, root_build_dir), |
| ] |
| } |
| } |
| |
| resource(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "visibility", |
| ]) |
| public_deps = [ ":$generate_target" ] |
| sources = [ output ] |
| if (defined(invoker.dest)) { |
| outputs = [ invoker.dest ] |
| } else { |
| outputs = [ "data/${target_name}" ] |
| } |
| } |
| } |