# Copyright 2020 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/go_test.gni")

go_library("main") {
  source_dir = "cmd"
  deps = [ "//tools/sdk-tools/sdkcommon" ]
  sources = [
    "fssh.go",
    "fssh_test.go",
  ]
}

go_binary("fssh") {
  gopackage = "go.fuchsia.dev/fuchsia/tools/sdk-tools/fssh/cmd"
  deps = [ ":main" ]
}

go_test("fssh-test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/sdk-tools/fssh/cmd" ]
  deps = [ ":main" ]
}
install_host_tools("fssh-host") {
  deps = [
    ":fssh",
    "//tools/sdk-tools/sdkcommon:host-tool-deps",
  ]
  outputs = [ "fssh" ]
}

sdk_host_tool("fssh_sdk") {
  category = "partner"
  output_name = "fssh"
  deps = [ ":fssh" ]
}
