# 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/package.gni")

group("devices") {
  deps = [
    "bin",
    "bind",
    "lib",
    "tools",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "bin:tests",
    "bind/debugger:tests",
    "block:tests",
    "clock:tests",
    "gpio:tests",
    "i2c:tests",
    "lib:tests",
    "light-sensor:tests",
    "nand:tests",
    "power:tests",
    "pwm:tests",
    "pwm:tests",
    "serial:tests",
    "shareddma:tests",
    "tests",
    "tests:tests",
    "thermal:tests",
    "tools:tests",
    "usb:tests",
    "usb/tests",
  ]
}

generate_manifest("devices.bootfs") {
  deps = [
    "bin",
    "lib/driver",
    "//src/bringup/virtcon:virtual-console",
    "//src/ui/input/drivers/hid-input-report",
  ]

  # TODO(bwb): match the file in the image to the respective build name
  args = [
    "--entry=bin/driver_manager=" +
        rebase_path("$root_build_dir/driver_manager", root_build_dir),
    "--entry=bin/driver_host=" +
        rebase_path("$root_build_dir/driver_host", root_build_dir),

    # Inject Virtcon into the ZBI
    # TODO(41410): Remove when unified build exists.
    "--entry=bin/virtual-console=" +
        rebase_path("$root_build_dir/virtual-console", root_build_dir),

    # Drivers for ZBI injection
    "--entry=driver/hid-input-report.so=" +
        rebase_path("$root_build_dir/hid-input-report.so", root_build_dir),
  ]
}
