# 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")
import("//build/testing/host_test_data.gni")

go_library("main") {
  source_dir = "cmd"
  deps = [
    "//tools/lib/logger",
    "//tools/sdk-tools/sdkcommon",
  ]
  sources = [
    "fserve.go",
    "fserve_test.go",
  ]
}

go_binary("fserve") {
  library = ":main"
}

if (is_host) {
  host_test_data("fserve-test-data") {
    sources = [ "testdata/testdata.tgz" ]
    outputs = [ "${target_out_dir}/testdata/testdata.tgz" ]
  }

  go_test("fserve-test") {
    library = ":main"
    args = [ "--testroot=" + rebase_path(target_out_dir, root_out_dir) ]
    non_go_deps = [ ":fserve-test-data" ]
  }
}

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

sdk_host_tool("fserve_sdk") {
  category = "partner"
  output_name = "fserve"
  deps = [ ":fserve" ]
}
