# Copyright 2018 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_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/toolchain.gni")
import("//build/package.gni")

go_binary("echo2_client_go_bin") {
  output_name = "echo2_client_go"
  gopackage = "echo2_client_go"

  deps = [
    ":echo2_client_go_lib"
  ]
}

go_library("echo2_client_go_lib") {
  name = "echo2_client_go"
  deps = [
    "//garnet/examples/fidl/services:echo2($go_toolchain)",
    "//garnet/public/lib/component/go/src/app",
    "//garnet/public/lib/svc/go/src/svc",
    "//garnet/public/fidl/fuchsia.sys($go_toolchain)",
    "//garnet/examples/fidl/services:echo2($go_toolchain)",
  ]
}

package("echo2_client_go") {
  deps = [
    ":echo2_client_go_bin",
  ]

  binary = "echo2_client_go"
}
