# 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")
import("//build/unification/images/migrated_manifest.gni")

driver_module("i2c") {
  defines = [ "_ALL_SOURCE" ]
  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "i2c-bus.cc",
    "i2c-child.cc",
    "i2c.cc",
  ]
  deps = [
    "//sdk/banjo/ddk.protocol.i2cimpl",
    "//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_llcpp",
    "//src/devices/lib/driver",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/ddktl",
    "//zircon/public/lib/device-protocol-i2c",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/trace-driver",
    "//zircon/public/lib/zx",
    "//zircon/system/banjo/ddk.protocol.i2c",
  ]
}

test("i2c-test") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "i2c-test"
  sources = [
    "i2c-bus.cc",
    "i2c-child-test.cc",
    "i2c-child.cc",
  ]
  deps = [
    "//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_llcpp",
    "//src/devices/testing/fake_ddk",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/ddktl",
    "//zircon/public/lib/device-protocol-i2c",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/trace-driver",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/banjo/ddk.protocol.i2c",
  ]
}

migrated_manifest("i2c-manifest") {
  deps = [ ":i2c" ]
}

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

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

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