# Copyright 2022 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/rust/rustc_binary.gni")

rustc_binary("virtio_gpu_test_util") {
  name = "virtio_gpu_test_util"
  edition = "2021"
  with_unit_tests = true

  deps = [
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:argh",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
  ]

  if (is_linux) {
    deps += [ "//third_party/rust_crates:libc" ]
  }

  if (is_fuchsia) {
    deps += [
      "//sdk/fidl/fuchsia.hardware.display:fuchsia.hardware.display_rust",
      "//src/lib/fidl/rust/fidl",
      "//src/lib/fuchsia-component",
      "//src/lib/zircon/rust:fuchsia-zircon",
    ]
  }

  sources = [
    "src/framebuffer.rs",
    "src/linuxfb.rs",
    "src/main.rs",
    "src/zirconfb.rs",
  ]
}

group("tests") {
  testonly = true
  public_deps = [ ":virtio_gpu_test_util_test" ]
}
