# 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("$zx/public/gn/package.gni")

zx_executable("console") {
  sources = [
    "main.cc",
  ]
  deps = [
    ":common",
    "$zx/system/fidl/fuchsia-boot:llcpp",
    "$zx/system/ulib/fdio",
    "$zx/system/ulib/fidl-async:fidl-async-cpp",
    "$zx/system/ulib/fs-pty",
    "$zx/system/ulib/svc",
  ]
}

source_set("common") {
  visibility = [ ":*" ]
  sources = [
    "console.cc",
    "console.h",
    "fifo.cc",
    "fifo.h",
  ]
  public_deps = [
    "$zx/system/fidl/fuchsia-hardware-pty:llcpp",
    "$zx/system/ulib/async-loop:async-loop-cpp",
    "$zx/system/ulib/async-loop:async-loop-default.static",
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/fit",
    "$zx/system/ulib/fs",
    "$zx/system/ulib/zircon-internal",
    "$zx/system/ulib/zx",
  ]

  deps = [
    "$zx/system/fidl/fuchsia-io:llcpp",
    "$zx/system/ulib/fdio",
    "$zx/system/ulib/fidl-async:fidl-async-cpp",
    "$zx/system/ulib/zircon",
  ]
}

zx_test("console-test") {
  test_group = "sys"

  sources = [
    "console-test.cc",
    "fifo-test.cc",
  ]
  deps = [
    ":common",
    "$zx/system/fidl/fuchsia-io:llcpp",
    "$zx/system/ulib/sync",
    "$zx/system/ulib/zxtest",
  ]
}
