# 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/components.gni")
import("//build/test.gni")
import("//build/unification/zx_library.gni")

zx_library("edid") {
  sdk = "source"
  sdk_headers = [
    "lib/edid/edid.h",
    "lib/edid/timings.h",
  ]
  sources = [
    "edid.cc",
    "eisa_vid_lut.cc",
    "timings.cc",
  ]
  deps = [
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
  ]
  public_deps = [ "//zircon/public/lib/hwreg" ]
}

test("edid-test") {
  sources = [ "unit-tests.cc" ]
  deps = [
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/edid",
  ]
}

fuchsia_unittest_package("edid-test-package") {
  package_name = "edid-test"
  deps = [ ":edid-test" ]
}

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