# Copyright 2022 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/bind/bind.gni")
import("//build/components.gni")
import("//build/drivers.gni")
import("//build/rust/rustc_binary.gni")
import("//build/test.gni")

group("bindlib_codegen") {
  deps = [
    ":check_golden",
    ":check_golden_cpp",
    ":check_golden_rust",
    ":parent_cpp_code",
    ":parent_rust_code",
  ]
}

# [START example_bind_lib_target]
bind_library("my_bindlib_target") {  # target_name
  source = "mybindlib.bind"
  name = "fuchsia.example.library"  # library_name (optional, defaults to
                                    # target_name)
  public_deps = [ "//src/devices/bind/fuchsia.pci" ]
}

# [END example_bind_lib_target]

# [START example_cpp_target]
source_set("parent_cpp_code") {
  sources = [ "parent-driver.cc" ]
  deps = [ ":my_bindlib_target_cpp" ]
}

# [END example_cpp_target]

# [START example_rust_target]
rustc_binary("parent_rust_code") {
  edition = "2021"
  source_root = "parent-driver.rs"
  sources = [ "parent-driver.rs" ]
  deps = [ ":my_bindlib_target_rust" ]
}

# [END example_rust_target]

# This is a duplicate of my_bindlib_target used to validate the goldens we are checking in
# so the docs can show generated code. We don't want to show this build target as an example
# since the golden file properties here are not necessary.
bind_library("check_golden") {
  source = "mybindlib.bind"
  name = "fuchsia.example.library"
  public_deps = [ "//src/devices/bind/fuchsia.pci" ]
  cpp_golden_file = "cpp_codegen.h.golden"
  rust_golden_file = "rust_codegen.rs.golden"
}
