# Copyright 2019 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_library.gni")
import("//build/go/go_test.gni")

go_library("serial") {
  sources = [
    "serial.go",
    "serial_darwin.go",
    "serial_linux.go",
    "serial_test.go",
    "server.go",
    "server_test.go",
  ]
  deps = [
    ":constants",
    "//third_party/golibs:golang.org/x/sys",
    "//tools/lib/iomisc",
    "//tools/lib/logger",
  ]
}

go_test("tests") {
  output_name = "serial_tests"
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/lib/serial" ]
  deps = [
    ":serial",
    "//third_party/golibs:github.com/google/go-cmp",
    "//third_party/golibs:golang.org/x/sync",
  ]
}

go_library("constants") {
  source_dir = "constants"
  sources = [ "constants.go" ]
}
