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

import("//build/go/go_build.gni")

# A template for an action that creates a Fuchsia Go binary.
#
# Parameters
#
#   gopackage (required)
#     The go package containing the main function.
#
#   use_prebuilt_go (optional)
#     If true, use a prebuilt go toolchain, rather than building the toolchain.
#     If not set, defaults to false when targeting Fuchsia and true otherwise.
#
#   sdk_category (optional)
#     Publication level of the library in SDKs.
#     See //build/sdk/sdk_atom.gni.
#
#   sdk_name (optional)
#     Name of the library in the SDK.
#
#   sdk_deps (optional)
#     List of labels representing elements that should be added to SDKs
#     alongside the present binary.
#     Labels in the list must represent SDK-ready targets.
#
#   check_sources (optional)
#     Boolean indicating whether or not the source list should be verified against
#     the generated dep file.

template("go_binary") {
  go_build(target_name) {
    assert(defined(invoker.gopackage),
           "gopackage must be defined for $target_name")
    gopackages = [ invoker.gopackage ]
    forward_variables_from(invoker, "*")
  }
}
