# Copyright 2017 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")

source_set("machina") {
  sources = [
    "bits.h",
    "dev_mem.h",
    "guest.cc",
    "guest.h",
    "io.cc",
    "io.h",
    "pci.cc",
    "pci.h",
    "platform_device.h",
    "vcpu.cc",
    "vcpu.h",
    "virtio_balloon.cc",
    "virtio_balloon.h",
    "virtio_block.cc",
    "virtio_block.h",
    "virtio_console.cc",
    "virtio_console.h",
    "virtio_device.h",
    "virtio_gpu.cc",
    "virtio_gpu.h",
    "virtio_input.cc",
    "virtio_input.h",
    "virtio_net.cc",
    "virtio_net.h",
    "virtio_net_legacy.cc",
    "virtio_net_legacy.h",
    "virtio_pci.cc",
    "virtio_pci.h",
    "virtio_queue_waiter.cc",
    "virtio_queue_waiter.h",
    "virtio_rng.cc",
    "virtio_rng.h",
    "virtio_vsock.cc",
    "virtio_vsock.h",
    "virtio_wl.cc",
    "virtio_wl.h",
  ]

  if (current_cpu == "arm64") {
    sources += [
      "arch/arm64/gic_distributor.cc",
      "arch/arm64/gic_distributor.h",
      "arch/arm64/pl011.cc",
      "arch/arm64/pl011.h",
      "arch/arm64/pl031.cc",
      "arch/arm64/pl031.h",
    ]
  } else if (current_cpu == "x64") {
    sources += [
      "arch/x86/acpi.cc",
      "arch/x86/acpi.h",
      "arch/x86/acpi_priv.h",
      "arch/x86/decode.cc",
      "arch/x86/decode.h",
      "arch/x86/e820.cc",
      "arch/x86/e820.h",
      "arch/x86/i8250.cc",
      "arch/x86/i8250.h",
      "arch/x86/io_apic.cc",
      "arch/x86/io_apic.h",
      "arch/x86/io_port.cc",
      "arch/x86/io_port.h",
      "arch/x86/page_table.cc",
      "arch/x86/page_table.h",
    ]

    include_dirs = [ "//zircon/third_party/lib/acpica/source/include" ]
  }

  defines = [ "_ALL_SOURCE=1" ]

  deps = [
    "//garnet/bin/guest/third_party/fdt",
    "//garnet/lib/machina/device",
    "//garnet/lib/machina/fidl:fuchsia.guest.device",
    "//garnet/public/lib/fsl",
    "//zircon/public/fidl/fuchsia-sysinfo:fuchsia-sysinfo_c",
    "//zircon/public/fidl/zircon-ethernet:zircon-ethernet_c",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-testutils",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/libzbi",
    "//zircon/public/lib/zxcpp",
  ]

  public_deps = [
    "//garnet/public/fidl/fuchsia.guest",
    "//garnet/public/lib/component/cpp",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-engine",
    "//zircon/public/lib/virtio",
    "//zircon/public/lib/zx",
  ]
}

executable("machina_unittests") {
  testonly = true

  sources = [
    "dev_mem_unittest.cc",
    "pci_unittest.cc",
    "phys_mem_fake.h",
    "virtio_device_fake.h",
    "virtio_net_legacy_unittest.cc",
    "virtio_queue_fake.cc",
    "virtio_queue_fake.h",
    "virtio_queue_unittest.cc",
    "virtio_queue_waiter_unittest.cc",
    "virtio_vsock_unittest.cc",
  ]

  if (current_cpu == "x64") {
    sources += [
      "arch/x86/decode_unittest.cc",
      "arch/x86/page_table_unittest.cc",
    ]
  }

  deps = [
    ":machina",
    "//garnet/lib/machina/device",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest_main",
    "//zircon/public/fidl/zircon-ethernet:zircon-ethernet_c",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
  ]
}

test_package("machina_tests") {
  deps = [
    ":machina_unittests",
  ]

  tests = [
    {
      name = "machina_unittests"
    },
  ]
}
