# 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/components.gni")
import("//build/rust/rustc_library.gni")
import("//src/graphics/lib/compute/gn/build_rules.gni")

#
# Wrapper headers
#
config("config") {
  include_dirs = [ "." ]
}

source_set("spinel_vk_rs_headers") {
  public_configs = [ ":config" ]
  public = [ "spinel_vk_rs.h" ]
  sources = [ "spinel_vk_rs.h" ]
  public_deps = [ "//src/graphics/lib/compute/spinel:headers" ]
}

#
# Wrapper sources
#
source_set("spinel_vk_rs") {
  sources = [ "spinel_vk_rs.c" ]
  public_deps = [
    ":spinel_vk_rs_headers",
    graphics_compute_vulkan_loader_target,
  ]
  deps = [
    "//src/graphics/lib/compute/common",
    "//src/graphics/lib/compute/common/vk",
    "//src/graphics/lib/compute/spinel/platforms/vk:headers",
    "//src/graphics/lib/compute/spinel/platforms/vk/ext/find_target",
  ]
}

#
# Rust bindings for Spinel
#
rustc_library("spinel-vk-rs") {
  name = "spinel-vk-rs-sys"
  with_unit_tests = true
  version = "0.1.0"
  edition = "2021"
  sources = [ "src/lib.rs" ]
}

#
# If the Spinel header files have changed then two actions must be
# manually performed:
#
# 1) If so, the spinel.c-api files needs to be updated:
#
#   $ ../scripts/hash_dir.py \
#   --header_paths ../spinel/include/spinel/* \
#   --header_dir $FUCHSIA_DIR/src/graphics/lib/compute \
#   > spinel.c-api
#
#
# 2) Regenerate the Rust bindings:
#
#   $ bash bindgen.sh
#
# Note that the bindgen script requires the following prebuilts to be
# in your path:
#
#   * bindgen
#   * rustfmt
#
action("spinel_c_api_header_hashes") {
  script = "${graphics_compute_dir}/scripts/hash_dir.py"
  spinel_headers = "${graphics_compute_dir}/spinel/include"
  sources = [ "spinel.c-api" ]
  inputs = [
    "spinel_vk_rs.h",
    "${spinel_headers}/spinel/spinel.h",
    "${spinel_headers}/spinel/spinel_assert.h",
    "${spinel_headers}/spinel/spinel_opcodes.h",
    "${spinel_headers}/spinel/spinel_result.h",
    "${spinel_headers}/spinel/spinel_types.h",
  ]
  stamp = "$target_gen_dir/$target_name.stamp"
  outputs = [ stamp ]
  args = [ "--header_paths" ] + rebase_path(inputs, root_build_dir) + [
           "--header_dir",
           rebase_path(graphics_compute_dir, root_build_dir),
           "--compare",
           rebase_path("spinel.c-api", root_build_dir),
           "--stamp",
           rebase_path(stamp, root_build_dir),
         ]
}

#
# Force the hash check
#
group("tests") {
  testonly = true
  public_deps = [
    ":spinel_c_api_header_hashes",
    "tests",
  ]
}
