# 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/components.gni")
import("//build/cpp/cpp_fuzzer.gni")
import("//build/test.gni")

group("tests") {
  testonly = true
  deps = [ ":driver-manager-fuzzers" ]

  # TODO(fxbug.dev/86747): Failed test disabled on coverage.
  # Please fix the failure and remove the condition below.
  if (!is_coverage) {
    deps += [
      ":driver-manager-tests",
      "v2:driver-runner-tests",
    ]
  }
}

# TODO(fxb/38132): Migrate to the new bind rules and delete the below
source_set("binding") {
  sources = [
    "binding.cc",
    "binding.h",
  ]
  public_deps = [
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//zircon/system/ulib/fbl",
  ]
  deps = [
    "//src/devices/lib/bind:bind-lib",
    "//src/devices/lib/log",
  ]
}

source_set("manifest_parser") {
  sources = [
    "manifest_parser.cc",
    "manifest_parser.h",
  ]
  public_deps = [
    "//sdk/lib/fdio",
    "//src/devices/lib/log",
    "//src/lib/json_parser",
    "//src/lib/pkg_url",
    "//zircon/system/ulib/zxc",
  ]

  # TODO(https://fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

# Common source files and dependencies between :coordinator and :test
source_set("lib") {
  visibility = [ ":*" ]

  sources = [
    "base_package_resolver.cc",
    "base_package_resolver.h",
    "bind_driver_manager.cc",
    "bind_driver_manager.h",
    "binding_internal.cc",
    "binding_internal.h",
    "builtin_devices.cc",
    "builtin_devices.h",
    "component_lifecycle.cc",
    "component_lifecycle.h",
    "composite_device.cc",
    "coordinator.cc",
    "coordinator.h",
    "debug_dump.cc",
    "debug_dump.h",
    "devfs.cc",
    "devfs.h",
    "devfs_exporter.cc",
    "devfs_exporter.h",
    "device.cc",
    "device.h",
    "driver.cc",
    "driver.h",
    "driver_host.cc",
    "driver_host.h",
    "driver_host_loader_service.cc",
    "driver_host_loader_service.h",
    "driver_loader.cc",
    "driver_loader.h",
    "inspect.cc",
    "package_resolver.cc",
    "system_instance.cc",
    "system_instance.h",
    "system_state_manager.cc",
    "system_state_manager.h",
    "v1/device_manager.cc",
    "v1/device_manager.h",
    "v1/driver_development.cc",
    "v1/driver_development.h",
    "v1/firmware_loader.cc",
    "v1/firmware_loader.h",
    "v1/init_task.cc",
    "v1/resume_context.h",
    "v1/resume_task.cc",
    "v1/suspend_handler.cc",
    "v1/suspend_handler.h",
    "v1/suspend_matching_task.cc",
    "v1/suspend_resume_manager.cc",
    "v1/suspend_resume_manager.h",
    "v1/suspend_task.cc",
    "v1/task.cc",
    "v1/unbind_task.cc",
    "v2/driver_development_service.cc",
    "v2/driver_development_service.h",
    "vmo_writer.cc",
  ]

  public_deps = [
    ":binding",
    ":manifest_parser",
    "v2:driver_runner",
    "//sdk/fidl/fuchsia.boot",
    "//sdk/fidl/fuchsia.boot:fuchsia.boot_llcpp",
    "//sdk/fidl/fuchsia.device.fs:fuchsia.device.fs_llcpp",
    "//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager_llcpp",
    "//sdk/fidl/fuchsia.driver.development:fuchsia.driver.development_llcpp",
    "//sdk/fidl/fuchsia.driver.registrar:fuchsia.driver.registrar_llcpp",
    "//sdk/fidl/fuchsia.driver.test.logger:fuchsia.driver.test.logger_llcpp",
    "//sdk/fidl/fuchsia.fshost:fuchsia.fshost_llcpp",
    "//sdk/fidl/fuchsia.hardware.power.statecontrol",
    "//sdk/fidl/fuchsia.hardware.power.statecontrol:fuchsia.hardware.power.statecontrol_llcpp",
    "//sdk/fidl/fuchsia.hardware.virtioconsole:fuchsia.hardware.virtioconsole_llcpp",
    "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
    "//sdk/fidl/fuchsia.kernel",
    "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_llcpp",
    "//sdk/fidl/fuchsia.ldsvc:fuchsia.ldsvc_llcpp",
    "//sdk/fidl/fuchsia.pkg:fuchsia.pkg_llcpp",
    "//sdk/fidl/fuchsia.power.manager:fuchsia.power.manager_llcpp",
    "//sdk/fidl/fuchsia.process.lifecycle:fuchsia.process.lifecycle_llcpp",
    "//sdk/lib/fdio",
    "//sdk/lib/fdio:fdio-spawn-actions",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/fit",
    "//sdk/lib/inspect/service/cpp",
    "//sdk/lib/stdcompat",
    "//sdk/lib/sys/cpp",
    "//src/bringup/lib/mexec",
    "//src/devices/lib/bind:bind-lib",
    "//src/devices/lib/driver-info",
    "//src/devices/lib/log",
    "//src/lib/ddk",
    "//src/lib/files",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//src/lib/loader_service",
    "//src/lib/pkg_url",
    "//src/lib/storage/vfs/cpp",
    "//src/storage/memfs",
    "//src/storage/memfs:lib",
    "//src/zircon/lib/zircon",
    "//zircon/system/public",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fidl",
    "//zircon/system/ulib/fidl-async",
    "//zircon/system/ulib/fidl-async:fidl-async-cpp",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/inspect",
    "//zircon/system/ulib/inspector",
    "//zircon/system/ulib/service:service-llcpp",
    "//zircon/system/ulib/svc",
    "//zircon/system/ulib/zircon-internal",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxc",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
  ]

  deps = [
    "//src/lib/fsl",
    "//zircon/system/ulib/zbitl",
  ]

  configs += [ "//build/config:all_source" ]

  # TODO(https://fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]

  # TODO(fxbug.dev/94768): This target uses mutable tables which are deprecated,
  # rather than builders.
  configs += [ "//build/cpp:fidl-wire-deprecated-mutable-tables" ]
}

executable("driver_manager") {
  sources = [ "main.cc" ]

  deps = [
    ":lib",
    "//src/sys/lib/stdout-to-debuglog/cpp",
  ]

  configs += [ "//build/config:all_source" ]
}

test("driver_manager_test") {
  sources = [
    "autobind_tests.cc",
    "binding_v2_test.cc",
    "builtin_devices_test.cc",
    "composite_device_tests.cc",
    "coordinator_test_utils.cc",
    "devfs_test.cc",
    "device_tests.cc",
    "driver_development_test.cc",
    "driver_loader_test.cc",
    "init_tests.cc",
    "inspect_test.cc",
    "load_driver_package_test.cc",
    "misc_tests.cc",
    "multiple_device_test.cc",
    "multiple_device_test_utils.cc",
    "resume_tests.cc",
    "suspend_tests.cc",
    "system_instance_test.cc",
    "unbind_tests.cc",
    "v1/task_test.cc",
  ]

  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
    "//sdk/lib/fdio",
    "//sdk/lib/inspect/testing/cpp:zxtest",
    "//sdk/lib/sys/component/llcpp",
    "//src/devices/lib/bind:bind-lib",
    "//src/lib/storage/vfs/cpp:test_support",
    "//zircon/system/ulib/mock-boot-arguments",
    "//zircon/system/ulib/zxtest",
  ]

  # TODO(https://fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]

  # TODO(fxbug.dev/94768): This target uses mutable tables which are deprecated,
  # rather than builders.
  configs += [ "//build/cpp:fidl-wire-deprecated-mutable-tables" ]
}

fuchsia_unittest_component("driver-manager-test") {
  manifest = "meta/driver-manager-test.cml"
  deps = [
    ":driver_manager_test",
    "testing:ambient_vmex_test_util",
    "testing:new_process_test_util",
    "//src/devices/bin/driver_host",
    "//src/devices/bus/drivers/platform",
    "//src/devices/internal/drivers/fragment",
    "//src/devices/tests/mock-device",
  ]
}

# This is a separate test binary because this test fixture uses gtest, not zxtest
test("driver_host_loader_service_test") {
  sources = [ "driver_host_loader_service_test.cc" ]
  deps = [
    ":lib",
    "//src/lib/loader_service:loader_service_test_fixture",
  ]
}

fuchsia_unittest_component("driver-host-loader-service-test") {
  manifest = "meta/driver-host-loader-service-test.cml"
  deps = [ ":driver_host_loader_service_test" ]
}

executable("manifest_parser_test") {
  testonly = true
  sources = [ "manifest_parser_test.cc" ]

  deps = [
    ":manifest_parser",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_component("manifest_parser_test_component") {
  deps = [ ":manifest_parser_test" ]
}

cpp_fuzzer("manifest-parser-fuzzer") {
  sources = [ "manifest_parser_fuzzer.cc" ]
  deps = [ ":manifest_parser" ]
}

fuzzers_package("driver-manager-fuzzers") {
  cpp_fuzzers = [ ":manifest-parser-fuzzer" ]
}

fuchsia_test_package("driver-manager-tests") {
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }

  test_components = [
    ":driver-host-loader-service-test",
    ":driver-manager-test",
    ":manifest_parser_test_component",
  ]
}

fuchsia_component("driver_manager_component") {
  component_name = "driver_manager"
  manifest = "meta/driver_manager.cml"
  restricted_features = [ "allow_long_names" ]
  deps = [ ":driver_manager" ]
}

group("bootfs") {
  deps = [ ":driver_manager_component" ]
}
