blob: 6106d7f01bdaf3b5b2d4750d6266cbf0e6e4017c [file] [log] [blame]
# Copyright 2019 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/config.gni")
template("sysmgr_config") {
# Copy the config file to the output directory so changes to the config file
# will trigger a re-build of the target
copy(target_name) {
forward_variables_from(invoker, [ "source" ])
assert(defined(source))
sources = [
source,
]
outputs = [
"${target_out_dir}/${target_name}_${source}",
]
visibility = [ "//src/sys/pkg:*" ]
metadata = {
sysmgr_config_files = outputs
}
}
}
template("merge_sysmgr_config") {
cfg = {
forward_variables_from(invoker,
[
"output",
"deps",
])
assert(defined(output))
assert(defined(deps))
}
merged_config_path = "${target_out_dir}/${cfg.output}"
merged_config_target = "${target_name}_merged_config"
merged_config_inputs_path = "${target_out_dir}/${cfg.output}.inputs"
merged_config_inputs_target = "${target_name}_merged_config_inputs"
# Define a config_data package entry for the merged config
config_data(target_name) {
for_pkg = "sysmgr"
deps = [
":$merged_config_target",
]
sources = [
merged_config_path,
]
outputs = [
cfg.output,
]
}
# Using the list of sysmgr config file paths, merge the json into a single
# file
action(merged_config_target) {
script = "//src/sys/pkg/scripts/merge_sysmgr_config.py"
deps = [
":$merged_config_inputs_target",
]
inputs = [
merged_config_inputs_path,
]
outputs = [
merged_config_path,
]
args = [
"--inputs",
rebase_path(merged_config_inputs_path, root_build_dir),
"--output",
rebase_path(merged_config_path, root_build_dir),
]
}
# Collect the list of configs specified in the "sysmgr_config_files" metadata
# key into a file
generated_file(merged_config_inputs_target) {
data_keys = [ "sysmgr_config_files" ]
rebase = root_build_dir
deps = cfg.deps
outputs = [
merged_config_inputs_path,
]
}
}