# 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")

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

driver_module("usb-cdc-function") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "cdc-eth-function.cc" ]
  deps = [
    ":usb_cdc_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",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":usb_cdc_bind_test" ]
}
