# 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/components.gni")
import("//src/virtualization/buildtools/linux_paths.gni")
import("//src/virtualization/buildtools/romfs_image.gni")

executable("hypervisor_integration_tests") {
  testonly = true
  sources = [
    # Common code.
    "common_tests.cc",
    "constants.h",
    "main.cc",

    # Arch-specific code.
    "arch/${target_cpu}/arch.cc",
    "arch/${target_cpu}/arch_tests.cc",
    "arch/${target_cpu}/guest_code.S",
  ]
  deps = [
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_llcpp",
    "//sdk/fidl/fuchsia.sysinfo:fuchsia.sysinfo_llcpp",
    "//src/lib/fxl/test:test_settings",
    "//src/virtualization/bin/vmm:bits",
    "//third_party/googletest:gtest",
    "//zircon/kernel/phys/lib/page-table",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/page_tables",
    "//zircon/system/ulib/service:service-llcpp",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxc",
  ]
}

fuchsia_unittest_package("hypervisor_tests") {
  deps = [ ":hypervisor_integration_tests" ]
  manifest = "meta/hypervisor_tests.cml"
  test_specs = {
    environments = guest_envs
    log_settings = {
      max_severity = "ERROR"
    }
  }
}

group("hypervisor") {
  testonly = true
  deps = [ ":hypervisor_tests" ]
}
