# 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 targetting Fuchsia and true otherwise.
#
#   sdk_category (optional)
#     Publication level of the library in SDKs.
#     See //build/sdk/sdk_atom.gni.
#
#   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, "*")
  }
}
