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

driver_bind_rules("ssd1306-bind") {
  rules = "ssd1306.bind"
  header_output = "ssd1306-bind.h"
  tests = "bind-tests.json"
  deps = [ "//src/devices/bind/fuchsia.platform" ]
}

fuchsia_driver("ssd1306_driver-driver") {
  output_name = "ssd1306_driver"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [ "ssd1306.cc" ]
  deps = [
    ":ssd1306-bind",
    "//sdk/banjo/fuchsia.hardware.dotmatrixdisplay:fuchsia.hardware.dotmatrixdisplay_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.dotmatrixdisplay:fuchsia.hardware.dotmatrixdisplay_llcpp",
    "//src/devices/i2c/lib/device-protocol-i2c",
    "//src/devices/i2c/lib/device-protocol-i2c-channel",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zircon-internal",
  ]
}

fuchsia_driver_component("ssd1306_driver") {
  component_name = "ssd1306_driver"
  deps = [ ":ssd1306_driver-driver" ]
  info = "ssd1306_driver-info.json"
  colocate = true
}

fuchsia_driver_package("ssd1306") {
  driver_components = [ ":ssd1306_driver" ]
}

test("ssd1306-test") {
  sources = [
    "ssd1306.cc",
    "test.cc",
  ]

  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]

  deps = [
    ":ssd1306-bind",
    "//sdk/banjo/fuchsia.hardware.dotmatrixdisplay:fuchsia.hardware.dotmatrixdisplay_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.dotmatrixdisplay:fuchsia.hardware.dotmatrixdisplay_llcpp",
    "//src/devices/i2c/lib/device-protocol-i2c",
    "//src/devices/i2c/lib/device-protocol-i2c-channel",
    "//src/devices/i2c/testing/fake-i2c",
    "//src/devices/lib/driver",
    "//src/devices/testing/mock-ddk",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zircon-internal",
    "//zircon/system/ulib/zxtest",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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

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