# Copyright 2020 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.

# This file was generated by the `fx create` command. The template
# is located at `//tools/create/templates/devicetree-visitor/BUILD.gn.tmpl-cpp`.
# If you find something broken, we are eager to review fixes.

import("//build/components.gni")
import("//build/devicetree/devicetree.gni")
import("//build/devicetree/devicetree_visitor.gni")
import("//build/test.gni")

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

devicetree_visitor("my-devicetree-visitor") {
  deps = [ ":my-devicetree-visitor-impl" ]
}

source_set("my-devicetree-visitor-impl") {
  sources = [
    "my-devicetree-visitor.cc",
    "my-devicetree-visitor.h",
  ]
  deps = [
    "//sdk/lib/driver/devicetree/manager",
    "//sdk/lib/driver/devicetree/visitors:registration",
    "//sdk/lib/driver/logging/cpp",
  ]
}

test("my-devicetree-visitor-test-bin") {
  sources = [ "test/my-devicetree-visitor-test.cc" ]
  deps = [
    ":my-devicetree-visitor-impl",
    "//sdk/lib/driver/devicetree/testing:visitor-test-helper",
    "//sdk/lib/driver/devicetree/visitors:registry",
    "//sdk/lib/driver/devicetree/visitors/default/bind-property",
    "//src/lib/fxl/test:gtest_main",
  ]
}

dtb("my-devicetree-visitor-dtb") {
  sources = [ "test/dts/my-devicetree-visitor.dts" ]
}

resource("my-devicetree-visitor-dtb-file") {
  sources = get_target_outputs(":my-devicetree-visitor-dtb")
  outputs = [ "test-data/my-devicetree-visitor.dtb" ]
  deps = [ ":my-devicetree-visitor-dtb" ]
}

fuchsia_unittest_package("my-devicetree-visitor-test") {
  component_name = "my-devicetree-visitor-test"
  deps = [
    ":my-devicetree-visitor-dtb-file",
    ":my-devicetree-visitor-test-bin",
  ]
}
