# 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/test.gni")
import("//build/test/test_package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

group("driver_manager") {
  deps = [ ":coordinator" ]
}

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

  sources = [
    "binding-internal.h",
    "binding.cc",
    "composite-device.cc",
    "coordinator.cc",
    "coordinator.h",
    "devfs.cc",
    "devfs.h",
    "devhost-loader-service.cc",
    "devhost-loader-service.h",
    "device.cc",
    "device.h",
    "driver-test-reporter.cc",
    "driver-test-reporter.h",
    "driver.cc",
    "driver.h",
    "env.cc",
    "fdio.cc",
    "fidl.cc",
    "init-task.cc",
    "resume-task.cc",
    "suspend-task.cc",
    "system-instance.cc",
    "system-instance.h",
    "task.cc",
    "unbind-task.cc",
    "vmo-writer.cc",
  ]

  public_deps = [
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/sys/cpp",
    "//src/storage/deprecated-fs-fidl-handler",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/boot-args",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/devmgr-launcher",
    "//zircon/public/lib/driver-info",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/fidl-async",
    "//zircon/public/lib/fidl-async-cpp",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/fs",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/inspector",
    "//zircon/public/lib/libzbi",
    "//zircon/public/lib/loader-service",
    "//zircon/public/lib/memfs",
    "//zircon/public/lib/svc",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-boot:c",
    "//zircon/system/fidl/fuchsia-device-manager",
    "//zircon/system/fidl/fuchsia-device-manager:c",
    "//zircon/system/fidl/fuchsia-device-manager:llcpp",
    "//zircon/system/fidl/fuchsia-driver-test:c",
    "//zircon/system/fidl/fuchsia-fshost:llcpp",
    "//zircon/system/fidl/fuchsia-hardware-power-statecontrol",
    "//zircon/system/fidl/fuchsia-hardware-power-statecontrol:c",
    "//zircon/system/fidl/fuchsia-hardware-power-statecontrol:llcpp",
    "//zircon/system/fidl/fuchsia-hardware-virtioconsole:llcpp",
    "//zircon/system/fidl/fuchsia-io:c",
    "//zircon/system/fidl/fuchsia-ldsvc:llcpp",
    "//zircon/system/fidl/fuchsia-mem:c",
  ]

  defines = [ "_ALL_SOURCE=1" ]
}

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

  deps = [ ":lib" ]

  defines = [ "_ALL_SOURCE=1" ]
}

executable("devcoordinator-test") {
  output_name = "devcoordinator-test"
  testonly = true

  sources = [
    "binding-test.cc",
    "composite-device-tests.cc",
    "coordinator-test-utils.cc",
    "init-tests.cc",
    "misc-tests.cc",
    "multiple-device-test-utils.cc",
    "multiple-device-test.cc",
    "resume-tests.cc",
    "suspend-tests.cc",
    "system-instance-test.cc",
    "task-test.cc",
    "unbind-tests.cc",
  ]

  deps = [
    ":lib",
    "//zircon/public/lib/zxtest",
  ]
}

test_package("coordinator_tests") {
  deprecated_shell = "//build"

  deps = [ ":devcoordinator-test" ]

  binaries = [
    {
      name = "devcoordinator-test"
    },
  ]

  tests = [
    {
      name = "devcoordinator-test"
      environments = basic_envs
    },
  ]
}
