# 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/zircon/zx_library.gni")

zx_library("device-protocol-i2c-channel") {
  sdk = "source"
  sdk_headers = [ "lib/device-protocol/i2c-channel.h" ]
  sources = []
  public_deps = [
    # <lib/device-protocol-i2c-channel/i2c-channel.h> has #include <fuchsia/hardware/i2c/cpp/banjo.h>
    "//sdk/banjo/fuchsia.hardware.i2c:fuchsia.hardware.i2c_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_llcpp",

    # <lib/device-protocol-i2c-channel/i2c-channel.h> include <lib/device-protocol/i2c.h>
    "//src/devices/i2c/lib/device-protocol-i2c",

    # <lib/device-protocol-i2c-channel/i2c-channel.h> has #include <zircon/types.h>
    "//zircon/system/ulib/zx",
  ]
  deps = [
    "//src/devices/i2c/lib/device-protocol-i2c",
    "//zircon/system/ulib/zx",
  ]
}

executable("i2c-channel-test-bin") {
  testonly = true
  output_name = "i2c-channel-test"
  sources = [ "test.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_llcpp",
    "//sdk/fidl/fuchsia.hardware.i2c:fuchsia.hardware.i2c_llcpp",
    "//src/devices/i2c/lib/device-protocol-i2c",
    "//src/devices/i2c/lib/device-protocol-i2c-channel",
    "//src/devices/i2c/testing/fake-i2c",
    "//src/devices/testing/mock-ddk",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("i2c-channel-test") {
  manifest = "meta/i2c-channel-test.cml"
  deps = [ ":i2c-channel-test-bin" ]
}

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