blob: 9e37b674c014b4fbf082218aa159013614d622f7 [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")
import("//build/json/validate_json.gni")
import("//build/sdk/sdk_data.gni")
declare_args() {
# Indicates whether to include basemgr.cmx in the boot sequence for the
# product image.
launch_basemgr_on_boot = true
}
# Validates a modular framework configuration file against a schema
#
# Ensures the file is valid JSON, with optional (non-standard JSON)
# C-style comments (`/* block */` and `// inline`).
#
# Parameters
# config (required)
# This is a modular framework configuration file that needs to be validated.
template("modular_config_validate") {
validate_json(target_name) {
forward_variables_from(invoker,
[
"deps",
"public_deps",
"testonly",
"visibility",
])
data = invoker.config
schema = "//sdk/docs/modular_config_schema.json"
allow_comments = true
}
}
# Packages a modular framework configuration after validating the configuration.
# Configuration will be found in basemgr's /config/data directory.
#
# Parameters
# config (required)
# This is a file containing configuration for the modular framework.
# It will be schema-validated.
#
# output_name (optional)
# The output name for the configuration file.
# For example, if output_name is `foo.config`, basemgr can read this
# configuration file from `/config/data/foo.config`.
# Default: startup.config
#
# for_pkg (optional)
# The destination package that will contain the configuration file.
# Default: basemgr
#
# sdk_category (optional)
# Publication level of the library in SDKs.
# See //build/sdk/sdk_atom.gni.
template("modular_config") {
assert(defined(invoker.config), "config must be defined for $target_name")
output_name = "startup.config"
if (defined(invoker.output_name)) {
output_name = invoker.output_name
}
for_pkg = "basemgr"
if (defined(invoker.for_pkg)) {
for_pkg = invoker.for_pkg
}
modular_config_validate(target_name + "_validate") {
forward_variables_from(invoker,
[
"deps",
"testonly",
"visibility",
])
config = invoker.config
}
config_data_deps = [ ":${invoker.target_name}_validate" ]
if (for_pkg == "basemgr") {
config_data(target_name + "_basemgr.config") {
for_pkg = "sysmgr"
sources = [ "//src/modular/build/modular_config/basemgr.config" ]
outputs = [ "basemgr.config" ]
}
# By default, add the sysmgr config to automatically launch basemgr.cmx,
# unless the invoker explicitly disables this with
# launch_basemgr_on_boot = false.
if (launch_basemgr_on_boot) {
config_data_deps += [ ":" + target_name + "_basemgr.config" ]
}
}
config_data(invoker.target_name) {
for_pkg = for_pkg
sources = [ rebase_path(invoker.config) ]
outputs = [ output_name ]
deps = config_data_deps
}
if (defined(invoker.sdk_category) && invoker.sdk_category != "excluded") {
sdk_data("${invoker.target_name}_sdk") {
category = invoker.sdk_category
name = invoker.target_name
type = "config"
file = invoker.config
}
}
}