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

group("tests") {
  testonly = true

  deps = [ ":guest_manager_tests" ]
}

source_set("lib") {
  visibility = [ ":*" ]

  sources = [
    "guest_component.cc",
    "guest_component.h",
    "guest_services.cc",
    "guest_services.h",
    "guest_vsock_endpoint.cc",
    "guest_vsock_endpoint.h",
    "host_vsock_endpoint.cc",
    "host_vsock_endpoint.h",
    "manager_impl.cc",
    "manager_impl.h",
    "realm_impl.cc",
    "realm_impl.h",
  ]

  public_deps = [
    "//garnet/public/lib/svc/cpp",
    "//sdk/fidl/fuchsia.sys",
    "//sdk/fidl/fuchsia.virtualization",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl",
    "//zircon/public/lib/bitmap",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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

  sources = [ "main.cc" ]

  deps = [ ":lib" ]
}

package("guest_manager") {
  binaries = [
    {
      name = "guest_manager"
    },
  ]
  deps = [ ":bin" ]
  meta = [
    {
      path = rebase_path("meta/guest_manager.cmx")
      dest = "guest_manager.cmx"
    },
  ]
}

executable("guest_manager_unittests") {
  visibility = [ ":*" ]
  testonly = true

  sources = [ "host_vsock_endpoint_unittest.cc" ]

  deps = [
    ":lib",
    "//garnet/public/lib/gtest",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
  ]
}

test_package("guest_manager_tests") {
  deps = [ ":guest_manager_unittests" ]

  tests = [
    {
      name = "guest_manager_unittests"
      environments = basic_envs
      log_settings = {
        max_severity = "ERROR"
      }
    },
  ]
}
