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

driver_module("mt-musb-host") {
  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" ]
  deps = [
    ":common",
    "//src/devices/lib/driver",
  ]
}

source_set("common") {
  defines = [ "_ALL_SOURCE" ]
  visibility = [ ":*" ]
  sources = [
    "usb-device.cc",
    "usb-hci.cc",
    "usb-request-queue.cc",
    "usb-root-hub.cc",
    "usb-spew.cc",
    "usb-transaction.cc",
  ]
  public_deps = [
    "//sdk/banjo/ddk.protocol.usb.bus",
    "//sdk/banjo/ddk.protocol.usb.hci",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/lib/mmio",
    "//src/devices/lib/mt8167",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
  ]
}

test("mt-hci-test") {
  # Dependent manifests unfortunately cannot be marked as `testonly`.
  # TODO(44278): Remove when converting this file to proper GN build idioms.
  testonly = false
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "mt-hci-test"
  sources = [ "usb-hci-test.cc" ]
  deps = [
    ":common",
    "//src/devices/testing/fake_ddk",
    "//zircon/public/lib/zxtest",
  ]
}

test("mt-hci-transaction-test") {
  # Dependent manifests unfortunately cannot be marked as `testonly`.
  # TODO(44278): Remove when converting this file to proper GN build idioms.
  testonly = false
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "usb-transaction-test.cc",
    "usb-transaction.cc",
  ]
  deps = [
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/lib/mmio",
    "//src/devices/lib/mt8167",
    "//src/devices/testing/fake_ddk",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

test("mt-hci-request-queue-test") {
  # Dependent manifests unfortunately cannot be marked as `testonly`.
  # TODO(44278): Remove when converting this file to proper GN build idioms.
  testonly = false
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [
    "usb-request-queue-test.cc",
    "usb-request-queue.cc",
    "usb-transaction.cc",
  ]
  deps = [
    "//sdk/banjo/ddk.protocol.usb.hci",
    "//sdk/banjo/ddk.protocol.usb.request",
    "//src/devices/lib/mmio",
    "//src/devices/lib/mt8167",
    "//src/devices/testing/fake_ddk",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/mock-function",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

migrated_manifest("mt-musb-host-manifest") {
  deps = [ ":mt-musb-host" ]
}

migrated_manifest("mt-hci-test-manifest") {
  deps = [ ":mt-hci-test" ]
}

migrated_manifest("mt-hci-transaction-test-manifest") {
  deps = [ ":mt-hci-transaction-test" ]
}

migrated_manifest("mt-hci-request-queue-test-manifest") {
  deps = [ ":mt-hci-request-queue-test" ]
}
