# 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.

# Define aliases for subtargets of a directory's main target.
#
# This is a subroutine for a template that defines targets called
# "$target_name", "$target_name.a", and "$target_name.b".  If $target_name
# matches the name of the directory, then this defines redirecting alias
# targets called just "a" and "b".  Otherwise, this does nothing.
#
# Parameters
#
#   outputs
#     Required: List of subtarget names (e.g. [ "a", "b" ]).
#     Type: list(string)
#
template("subtarget_aliases") {
  if (get_label_info(":$target_name", "name") ==
      get_path_info(get_label_info(":$target_name", "dir"), "file")) {
    invoker_name = target_name
    foreach(subtarget, invoker.outputs) {
      group(subtarget) {
        forward_variables_from(invoker,
                               [
                                 "testonly",
                                 "visibility",
                               ])
        public_deps = [
          ":$invoker_name.$subtarget",
        ]
      }
    }
  } else {
    not_needed(invoker, "*")
  }
}
