# 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",
    "clock:tests",
    "lib:tests",
    "tests",
    "tools: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),
  ]
}
