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

bind_rules("imx227_bind") {
  rules = "imx227.bind"
  output = "bind.h"
  tests = "bind_tests.json"
  deps = [
    "//src/devices/bind/fuchsia.composite",
    "//src/devices/bind/fuchsia.platform",
  ]
}

group("bind_test") {
  testonly = true
  deps = [ ":imx227_bind_test" ]
}

source_set("source") {
  sources = [
    "imx227.cc",
    "imx227_otp.cc",
    "imx227_protocol.cc",
  ]

  deps = [
    ":imx227_bind",
    "//sdk/banjo/ddk.protocol.camera",
    "//sdk/banjo/ddk.protocol.camera.sensor",
    "//sdk/banjo/ddk.protocol.camerasensor",
    "//sdk/banjo/ddk.protocol.clock",
    "//sdk/banjo/ddk.protocol.composite",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.mipicsi",
    "//sdk/banjo/ddk.protocol.platform.device",
    "//sdk/lib/syslog/cpp",
    "//src/devices/lib/driver",
    "//zircon/system/ulib/fzl",
  ]

  public_deps = [
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/i2c/lib/device-protocol-i2c-channel",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/driver-unit-test",
    "//zircon/system/ulib/trace:trace-driver",
  ]

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

driver_module("driver") {
  output_name = "imx227"

  sources = [ "test/imx227_hardware_test.cc" ]

  deps = [
    ":source",
    "//sdk/fidl/fuchsia.driver.test",
    "//sdk/lib/syslog/cpp:backend_legacy",
  ]

  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}

driver_package("imx227") {
  deps = [ ":driver" ]

  drivers = [
    {
      name = "imx227.so"
    },
  ]
}
