# Copyright 2023 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/sdk_source_set.gni")
import("//build/test.gni")

group("tests") {
  testonly = true
  deps = [ ":devicetree-manager-test-package" ]
}

sdk_source_set("headers") {
  sdk_name = "devicetree-manager-headers"
  category = "internal"
  include_base = "//sdk"
  public = [
    "manager.h",
    "node.h",
    "visitor.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.driver.framework:fuchsia.driver.framework_cpp",
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_cpp",
    "//sdk/lib/driver/incoming/cpp",
    "//zircon/kernel/lib/devicetree",
    "//zircon/system/ulib/zx",
  ]
}

sdk_source_set("manager") {
  sdk_name = "devicetree-manager"
  category = "internal"
  include_base = "//sdk"
  sources = [
    "manager.cc",
    "node.cc",
  ]
  public = [
    "manager.h",
    "node.h",
    "visitor.h",
  ]

  non_sdk_deps = [
    "//src/devices/bind/fuchsia:fuchsia_cpp",
    "//src/devices/bind/fuchsia.platform:fuchsia.platform_cpp",
  ]

  deps = [
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_cpp",
    "//sdk/lib/driver/component/cpp",
    "//sdk/lib/zbi-format",
    "//src/devices/bind/fuchsia",
    "//src/devices/bind/fuchsia.platform",
  ]

  public_deps = [ ":headers" ]
}

sdk_source_set("manager-test-helper") {
  sdk_name = "devicetree_manager_test_helper"
  category = "internal"
  include_base = "//sdk"
  sources = [
    "manager-test-helper.cc",
    "manager-test-helper.h",
  ]
  deps = [ "//sdk/lib/driver/logging/cpp" ]
  public_deps = [
    ":headers",
    ":manager",
    "//sdk/lib/async_patterns/cpp",
    "//sdk/lib/driver/testing/cpp",
    "//sdk/lib/driver/testing/cpp:scoped_global_logger",
    "//sdk/lib/syslog/cpp",
    "//src/devices/bin/driver_runtime",
  ]
}

test("devicetree-manager-test") {
  deps = [
    ":manager-test-helper",
    "//sdk/lib/driver/devicetree/visitors:driver-visitor",
    "//sdk/lib/driver/devicetree/visitors:registry",
    "//sdk/lib/driver/devicetree/visitors/default",
    "//src/devices/bind/fuchsia:fuchsia_cpp",
    "//src/devices/bind/fuchsia.devicetree:fuchsia.devicetree_cpp",
    "//src/devices/bind/fuchsia.platform:fuchsia.platform_cpp",
    "//src/lib/fxl/test:gtest_main",
  ]

  sources = [ "manager-test.cc" ]
}

fuchsia_unittest_component("devicetree-manager-test-component") {
  component_name = "devicetree-manager-test"
  deps = [
    ":devicetree-manager-test",
    "test-data:all-test-dtb",
  ]
}

fuchsia_test_package("devicetree-manager-test-package") {
  test_components = [ ":devicetree-manager-test-component" ]
  package_name = "devicetree-manager-test"
}
