| # 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("//build/compiled_action.gni") |
| import("//build/config.gni") |
| |
| # Define a thermal configuration target for a given JSON file. |
| # |
| # The template validates the provided JSON file to ensure it matches the expected thermal |
| # configuration schema and criteria. If valid, a `resource` target will be created to allow the file |
| # to be included in a package. If invalid, the build will fail. |
| # |
| # When a `thermal_config` target is added as a bootfs dependency, the provided JSON file will be |
| # accessible at the path "/pkg/config/power_manager/thermal_config.json" on the device. |
| # |
| # Parameters |
| # |
| # config_file (required) |
| # [string] The path to the JSON thermal trip point configuration file. |
| # |
| # output (optional) |
| # [string] The name of the JSON file as it will be published on the filesystem. Defaults to |
| # "thermal_config.json", but the template accepts this as an argument to allow overriding for |
| # tests. |
| # |
| # Example usage: |
| # |
| # thermal_config("astro") { |
| # config_file = "astro.json5" |
| # } |
| # |
| # thermal_config("test_config") { |
| # config_file = "valid_thermal_config.json5" |
| # output = "test_config.json" |
| # } |
| # |
| template("thermal_config") { |
| assert(defined(invoker.config_file), "Need to specify a config file") |
| |
| output_config_name = "thermal_config.json" |
| if (defined(invoker.output)) { |
| output_config_name = invoker.output |
| } |
| |
| compiled_action("${target_name}_validate") { |
| forward_variables_from(invoker, |
| [ |
| "deps", |
| "testonly", |
| ]) |
| |
| tool = "//src/power/power-manager/thermal_config/validator" |
| tool_output_name = "thermal_config_validator" |
| |
| inputs = [ invoker.config_file ] |
| outputs = [ "$target_gen_dir/$target_name.validated" ] |
| |
| args = [ |
| "--input", |
| rebase_path(inputs[0], root_build_dir), |
| "--stamp", |
| rebase_path(outputs[0], root_build_dir), |
| ] |
| } |
| |
| resource("${target_name}_data") { |
| forward_variables_from(invoker, |
| [ |
| "deps", |
| "testonly", |
| ]) |
| sources = [ invoker.config_file ] |
| outputs = [ "config/power_manager/${output_config_name}" ] |
| } |
| |
| group(target_name) { |
| forward_variables_from(invoker, [ "testonly" ]) |
| deps = [ |
| ":${target_name}_data", |
| ":${target_name}_validate", |
| ] |
| } |
| } |