blob: 3143927d01834ba48ffb3c2474cdf0a8422a3259 [file] [log] [blame]
# Copyright 2017 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.
# Defines a group of SDK elements.
#
# Parameters
#
# category (optional)
# Describes the minimum category that atoms in this molecule must have.
# See //build/sdk/sdk_atom.gni for possible values.
#
# deps (optional)
# List of GN labels referencing the elements of this group.
# These labels must point to "sdk_atom" or "sdk_molecule" targets.
#
# non_sdk_deps (optional)
# List of GN labels which this target needs built.
template("sdk_molecule") {
gn_deps = []
if (defined(invoker.non_sdk_deps)) {
gn_deps = invoker.non_sdk_deps
}
dep_manifests = []
if (defined(invoker.deps)) {
gn_deps += invoker.deps
foreach(dep, invoker.deps) {
gen_dir = get_label_info(dep, "target_gen_dir")
name = get_label_info(dep, "name")
dep_manifests += [ rebase_path("$gen_dir/$name.sdk") ]
}
}
# Builds a manifest representing members of the group.
action(target_name) {
forward_variables_from(invoker,
[
"assert_no_deps",
"testonly",
"visibility",
])
manifest = "$target_gen_dir/$target_name.sdk"
script = "//build/sdk/create_molecule_manifest.py"
deps = gn_deps
inputs = dep_manifests + [
# Imported by the action's script.
"//build/sdk/sdk_common.py",
]
outputs = [
manifest,
]
args = [
"--out",
rebase_path(manifest),
"--deps",
] + dep_manifests
if (defined(invoker.category)) {
args += [
"--category",
invoker.category,
]
}
}
}