# 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 = [
    "fconfig.go",
    "fconfig_test.go",
  ]
}

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

go_test("fconfig-test") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/sdk-tools/fconfig/cmd" ]
  deps = [ ":main" ]
}

install_host_tools("fconfig-host") {
  deps = [
    ":fconfig",
    "//tools/sdk-tools/sdkcommon:host-tool-deps",
  ]
  outputs = [ "fconfig" ]
}

sdk_host_tool("fconfig_sdk") {
  category = "partner"
  output_name = "fconfig"
  deps = [ ":fconfig" ]
}
