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

driver_module("fragment") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [ "fragment.cc" ]
  data_deps = [ ":fragment.proxy" ]
  deps = [
    "//sdk/banjo/fuchsia.hardware.amlogiccanvas",
    "//sdk/banjo/fuchsia.hardware.audio",
    "//sdk/banjo/fuchsia.hardware.buttons",
    "//sdk/banjo/fuchsia.hardware.camera.sensor",
    "//sdk/banjo/fuchsia.hardware.clock",
    "//sdk/banjo/fuchsia.hardware.dsi",
    "//sdk/banjo/fuchsia.hardware.dsiimpl",
    "//sdk/banjo/fuchsia.hardware.ethernet.board",
    "//sdk/banjo/fuchsia.hardware.gdc",
    "//sdk/banjo/fuchsia.hardware.ge2d",
    "//sdk/banjo/fuchsia.hardware.goldfish.addressspace",
    "//sdk/banjo/fuchsia.hardware.goldfish.pipe",
    "//sdk/banjo/fuchsia.hardware.goldfish.sync",
    "//sdk/banjo/fuchsia.hardware.gpio",
    "//sdk/banjo/fuchsia.hardware.i2c",
    "//sdk/banjo/fuchsia.hardware.isp",
    "//sdk/banjo/fuchsia.hardware.mipicsi",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//sdk/banjo/fuchsia.hardware.power",
    "//sdk/banjo/fuchsia.hardware.powerimpl",
    "//sdk/banjo/fuchsia.hardware.pwm",
    "//sdk/banjo/fuchsia.hardware.registers",
    "//sdk/banjo/fuchsia.hardware.rpmb",
    "//sdk/banjo/fuchsia.hardware.scpi",
    "//sdk/banjo/fuchsia.hardware.sdio",
    "//sdk/banjo/fuchsia.hardware.shareddma",
    "//sdk/banjo/fuchsia.hardware.spi",
    "//sdk/banjo/fuchsia.hardware.sysmem",
    "//sdk/banjo/fuchsia.hardware.tee",
    "//sdk/banjo/fuchsia.hardware.thermal",
    "//sdk/banjo/fuchsia.hardware.usb.modeswitch",
    "//sdk/banjo/fuchsia.hardware.usb.phy",
    "//sdk/banjo/fuchsia.hardware.vreg",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_llcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//src/devices/lib/driver",
    "//src/lib/ddk",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/trace:trace-driver",
  ]
}

driver_module("fragment.proxy") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [ "fragment-proxy.cc" ]
  deps = [
    "//sdk/banjo/fuchsia.hardware.amlogiccanvas",
    "//sdk/banjo/fuchsia.hardware.audio",
    "//sdk/banjo/fuchsia.hardware.buttons",
    "//sdk/banjo/fuchsia.hardware.clock",
    "//sdk/banjo/fuchsia.hardware.dsi",
    "//sdk/banjo/fuchsia.hardware.ethernet.board",
    "//sdk/banjo/fuchsia.hardware.gpio",
    "//sdk/banjo/fuchsia.hardware.i2c",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//sdk/banjo/fuchsia.hardware.power",
    "//sdk/banjo/fuchsia.hardware.pwm",
    "//sdk/banjo/fuchsia.hardware.registers",
    "//sdk/banjo/fuchsia.hardware.rpmb",
    "//sdk/banjo/fuchsia.hardware.spi",
    "//sdk/banjo/fuchsia.hardware.sysmem",
    "//sdk/banjo/fuchsia.hardware.tee",
    "//sdk/banjo/fuchsia.hardware.usb.modeswitch",
    "//sdk/banjo/fuchsia.hardware.vreg",
    "//src/devices/lib/driver",
    "//src/lib/ddk",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/trace:trace-driver",
  ]
}
