# 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_ums_bind") {
  rules = "usb_ums.bind"
  output = "usb_ums_bind.h"
  tests = "bind_tests.json"
  deps = [
    "//src/devices/bind/fuchsia.usb",
    "//src/devices/bind/fuchsia.usb.massstorage",
  ]
}

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

driver_module("ums-function") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "ums-function.c" ]
  deps = [
    ":usb_ums_bind",
    "//sdk/banjo/fuchsia.hardware.block",
    "//sdk/banjo/fuchsia.hardware.usb",
    "//sdk/banjo/fuchsia.hardware.usb.function",
    "//sdk/banjo/fuchsia.hardware.usb.request",
    "//sdk/fidl/fuchsia.hardware.usb.peripheral.block:fuchsia.hardware.usb.peripheral.block_c",
    "//src/devices/lib/driver",
    "//src/devices/usb/lib/usb",
    "//src/lib/ddk",
    "//zircon/public/lib/sync",
  ]
}
