# 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("//src/sys/build/fuchsia_unittest_package.gni")

driver_module("usb-bus") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [ "usb-bus.cc" ]
  deps = [
    ":common",
    "//src/devices/lib/driver",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
  ]
}

source_set("common") {
  configs += [ "//build/config:all_source" ]
  sources = [ "usb-device.cc" ]
  deps = [
    "//sdk/banjo/ddk.protocol.usb.composite",
    "//sdk/banjo/ddk.protocol.usb.hub",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/utf_conversion",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
  ]
  public_deps = [
    "//sdk/banjo/ddk.protocol.usb",
    "//sdk/banjo/ddk.protocol.usb.bus",
    "//sdk/banjo/ddk.protocol.usb.hci",
    "//sdk/banjo/ddk.protocol.usb.request",
    "//sdk/fidl/fuchsia.hardware.usb.device:fuchsia.hardware.usb.device_llcpp",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddktl",
    "//zircon/public/lib/sync",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":usb-device-test-pkg" ]
}

test("usb-device") {
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  if (is_fuchsia) {
    fdio_config = [ "//build/config/fuchsia:fdio_config" ]
    if (configs + fdio_config - fdio_config != configs) {
      configs -= fdio_config
    }
  }
  sources = [ "tests/usb-device.cc" ]
  deps = [
    ":common",
    "//src/devices/testing/fake-bti",
    "//src/devices/testing/fake_ddk",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/utf_conversion",
  ]
}

fuchsia_unittest_package("usb-device-test-pkg") {
  package_name = "usb-device"
  executable_path = "test/usb-device"
  deps = [ ":usb-device" ]
}
