# 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 = [
    "coordinator",
    "host",
    "tools",
  ]
}

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

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

generate_manifest("devices.bootfs") {
  deps = [
    "coordinator",
    "host",
    "host:driver",
    "//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),
  ]
}
