# Copyright 2019 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/config/fuchsia/rules.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")

source_set("common") {
  public_deps = [
    "//sdk/banjo/ddk.protocol.amlogiccanvas",
    "//sdk/banjo/ddk.protocol.composite",
    "//sdk/banjo/ddk.protocol.display.controller",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.i2cimpl",
    "//sdk/banjo/ddk.protocol.platform.device",
    "//sdk/banjo/ddk.protocol.sysmem",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/mmio",
    "//src/lib/ddk",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//src/lib/ddktl",
    "//src/media/audio/lib/simple-audio-stream",
    "//third_party/boringssl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/audio-driver-proto",
    "//zircon/system/ulib/audio-proto-utils",
    "//zircon/system/ulib/digest",
    "//zircon/system/ulib/dispatcher-pool",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/image-format",
  ]
}

driver_module("vim-display") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [
    "//build/config/fuchsia:static_cpp_standard_library",
    "//build/unification/config:zircon-migrated",
  ]
  sources = [
    "edid.cc",
    "hdmitx.cc",
    "hdmitx_clk.cc",
    "registers.cc",
    "vim-audio-utils.cc",
    "vim-audio.cc",
    "vim-display.cc",
    "vim-spdif-audio-stream.cc",
    "vpp.cc",
  ]

  deps = [
    ":common",
    "//src/devices/lib/driver",
  ]
}

test("vim-display-test") {
  configs += [
    "//build/unification/config:zircon-migrated",
    "//build/config:all_source",
  ]
  sources = [
    "edid.cc",
    "hdmitx.cc",
    "hdmitx_clk.cc",
    "registers.cc",
    "vim-audio-utils.cc",
    "vim-audio.cc",
    "vim-display-test.cc",
    "vim-display.cc",
    "vim-spdif-audio-stream.cc",
    "vpp.cc",
  ]
  deps = [
    ":common",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_llcpp",
    "//src/devices/sysmem/testing/mock-sysmem",
    "//src/devices/testing/fake_ddk",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/fidl-async:fidl-async-cpp",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":vim-display-test-package" ]
}

unittest_package("vim-display-test-package") {
  package_name = "vim-display-test"
  deps = [ ":vim-display-test" ]

  tests = [
    {
      name = "vim-display-test"
      environments = basic_envs
    },
  ]
}
