blob: 85552dcc72d77c5b8f6ac6200ac8b95462a9a508 [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.
# Defines an alias for an SDK atom or molecule.
#
# Parameters
#
# target
# The label of the aliased element.
#
# type
# The type of the target, either "atom" or "molecule".
#
# non_sdk_deps (optional)
# List of GN labels which this target needs built.
template("sdk_alias") {
assert(defined(invoker.target), "Must define a target to alias")
assert(defined(invoker.type), "Must define a target type")
assert(invoker.type == "atom" || invoker.type == "molecule", "Unknown type")
is_atom = invoker.type == "atom"
# This template simply copies the output files of the sdk_* templates to the
# correct location.
sdk_target_gen_dir = get_label_info(invoker.target, "target_gen_dir")
sdk_target_name = get_label_info(invoker.target, "name")
group_deps = []
if (is_atom) {
copy_meta_target_name = "${target_name}_copy_meta"
group_deps += [ ":$copy_meta_target_name" ]
copy(copy_meta_target_name) {
forward_variables_from(invoker, [ "testonly" ])
sources = [
"$sdk_target_gen_dir/$sdk_target_name.meta.json",
]
outputs = [
"$target_gen_dir/$target_name.meta.json",
]
deps = [
invoker.target,
]
}
}
copy_manifest_target_name = "${target_name}_copy_manifest"
group_deps += [ ":$copy_manifest_target_name" ]
copy(copy_manifest_target_name) {
forward_variables_from(invoker, [ "testonly" ])
sources = [
"$sdk_target_gen_dir/$sdk_target_name.sdk",
]
outputs = [
"$target_gen_dir/$target_name.sdk",
]
deps = [
invoker.target,
]
}
group(target_name) {
forward_variables_from(invoker, [ "testonly" ])
public_deps = group_deps
if (defined(invoker.non_sdk_deps)) {
public_deps += invoker.non_sdk_deps
}
}
}