blob: 53d576a24834ab8f2c58ecf8983ef35add41b0d3 [file] [log] [blame]
# Copyright 2018 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/sdk/sdk_atom.gni")
# Declares a component manifest shard to be added to an SDK.
#
# Parameters
#
# category (required)
# Publication level of the data set in SDKs.
# See //build/sdk/sdk_atom.gni.
#
# sdk_area (optional)
# [string] The API area responsible for maintaining this shard.
# See //build/sdk/sdk_atom.gni.
#
# name (required)
# Name of the component manifest in the SDK.
#
# manifests (required)
# List of paths to the component manifest files to add to the SDK.
#
# non_sdk_deps (optional)
# List of GN labels which this target needs built.
template("sdk_component_manifests") {
assert(defined(invoker.category), "Must define an SDK category")
assert(defined(invoker.name), "Must define an SDK name")
assert(defined(invoker.manifests), "Must define component manifests")
assert(invoker.manifests != [], "Must define component manifests")
file_base = "pkg/${invoker.name}"
meta_dest = "$file_base/$target_name.json"
file_records = []
file_dests = []
foreach(manifest, invoker.manifests) {
manifest_extension = get_path_info(manifest, "extension")
assert(manifest_extension == "cml",
"Unknown manifest format for \"${manifest}\", must be \".cml\"")
manifest_file = get_path_info(manifest, "file")
file_dest = "$file_base/$manifest_file"
file_records += [
{
source = manifest
dest = file_dest
},
]
file_dests += [ file_dest ]
}
sdk_atom(target_name) {
forward_variables_from(invoker,
[
"category",
"sdk_area",
"non_sdk_deps",
])
id = "sdk://component_manifest/${invoker.name}"
files = file_records
meta = {
schema = "data"
dest = meta_dest
value = {
type = "component_manifest"
name = invoker.name
data = file_dests
}
}
}
}