# Copyright 2018 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/package.gni")

executable("bin") {
  output_name = "guest"

  sources = [
    "balloon.cc",
    "balloon.h",
    "launch.cc",
    "launch.h",
    "list.cc",
    "list.h",
    "main.cc",
    "serial.cc",
    "serial.h",
    "socat.cc",
    "socat.h",
    "vshc.cc",
    "vshc.h",
  ]

  deps = [
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.virtualization",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//src/virtualization/bin/vmm:guest_config",
    "//src/virtualization/lib/vsh:util",
    "//src/virtualization/packages/biscotti_guest/third_party/protos:vsh_cc_proto",
    "//third_party/protobuf:protobuf_lite",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/fit",
    "//zircon/system/ulib/virtio",
  ]

  public_deps =
      [ "//zircon/system/fidl/fuchsia-hardware-pty:fuchsia-hardware-pty_c" ]
}

package("guest") {
  deps = [ ":bin" ]

  binaries = [
    {
      name = "guest"
      shell = true
    },
    {
      name = "vsh"
      shell = true
      source = "guest"
    },
  ]
}
