# 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/fidl/fidl.gni")
import("//build/test.gni")
import("//zircon/system/ulib/devmgr-integration-test/isolated_devmgr.gni")

bind_rules("ethernet_ax88179_bind") {
  rules = "ethernet_ax88179.bind"
  output = "ethernet_ax88179-bind.h"
  tests = "ethernet_ax88179-bind-tests.json"
  deps = [ "//src/devices/bind/fuchsia.usb" ]
}

bind_rules("fake_usb_ax88179_bind") {
  rules = "fake_usb_ax88179.bind"
  output = "fake_usb_ax88179-bind.h"
  tests = "fake_usb_ax88179-bind-tests.json"
  deps = [
    "//src/devices/bind/fuchsia.usb",
    "//src/devices/bind/fuchsia.usb.comm",
  ]
}

driver_module("asix-88179") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "asix-88179.cc" ]
  deps = [
    ":ethernet_ax88179_bind",
    "//sdk/banjo/fuchsia.hardware.ethernet",
    "//sdk/banjo/fuchsia.hardware.usb",
    "//sdk/banjo/fuchsia.hardware.usb.request",
    "//src/devices/lib/dev-operation",
    "//src/devices/lib/driver",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//zircon/public/lib/cksum",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/pretty",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
  ]
}

fidl("asix-88179-test-helper") {
  name = "fuchsia.hardware.ax88179"
  sources = [ "hooks.test.fidl" ]
  public_deps = [ "//zircon/vdso/zx" ]
}

driver_module("fake-asix-88179") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "asix-88179-function.cc" ]
  deps = [
    ":asix-88179-test-helper",
    ":asix-88179-test-helper_llcpp",
    ":fake_usb_ax88179_bind",
    "//sdk/banjo/fuchsia.hardware.ethernet",
    "//sdk/banjo/fuchsia.hardware.usb",
    "//sdk/banjo/fuchsia.hardware.usb.function",
    "//sdk/banjo/fuchsia.hardware.usb.request",
    "//src/devices/lib/driver",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/inet6",
  ]
}

test("asix-88179-integration") {
  output_name = "asix-88179-integration-test"
  sources = [ "asix-88179-test.cc" ]
  deps = [
    ":asix-88179-test-helper_llcpp",
    "//sdk/fidl/fuchsia.device:fuchsia.device_llcpp",
    "//sdk/fidl/fuchsia.hardware.ethernet:fuchsia.hardware.ethernet_llcpp",
    "//sdk/fidl/fuchsia.hardware.usb.peripheral:fuchsia.hardware.usb.peripheral_llcpp",
    "//sdk/fidl/fuchsia.hardware.usb.virtual.bus:fuchsia.hardware.usb.virtual.bus_llcpp",
    "//sdk/lib/fdio",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/hid",
    "//zircon/system/ulib/usb-virtual-bus-launcher",
  ]
}

isolated_devmgr_unittest_package("asix-88179-integration-test") {
  executable_path = "test/asix-88179-integration-test"
  deps = [
    ":asix-88179",
    ":asix-88179-integration",
    ":fake-asix-88179",
    "//src/connectivity/ethernet/drivers/ethernet",
    "//src/devices/board/drivers/integration-test",
    "//src/devices/bus/drivers/platform",
    "//src/devices/usb/drivers/usb-bus",
    "//src/devices/usb/drivers/usb-composite",
    "//src/devices/usb/drivers/usb-peripheral",
    "//src/devices/usb/drivers/usb-virtual-bus",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":asix-88179-integration-test",
    ":ethernet_ax88179_bind_test",
    ":fake_usb_ax88179_bind_test",
  ]
}
