# 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") {
  testonly = true
  deps = [
    "driver_host",
    "driver_manager",
    "tools",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "driver_host:tests",
    "driver_manager:coordinator_tests",
    "tests",
    "tools:tests",
  ]
}

group("driver") {
  deps = [ "driver_host:driver" ]
}

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

  #TODO(bwb) match the file in the image to the respective build name
  args = [
    "--entry=bin/devcoordinator=" +
        rebase_path("$root_build_dir/coordinator", root_build_dir),
    "--entry=bin/devhost=" +
        rebase_path("$root_build_dir/device-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),
  ]
}
