# Copyright 2022 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/rust.gni")
import("//build/rust/rust_macro.gni")
import("//build/rust/rust_static_library.gni")

# Common constants.
_support_dir = "{rust_sysroot}/lib/crubit"

# Dependencies of ..._rs_api.rs files generated by Crubit's
# `bin/rs_bindings_from_cc` tool.  See also `deps_for_generated_rs_file` in
# Crubit's `src/rs_bindings_from_cc/BUILD`.
group("deps_of_rs_api") {
  public_deps = [
    ":ctor",
    ":forward_declare",
    ":oops",
    "//third_party/rust/memoffset/v0_6:lib",
    "//third_party/rust/static_assertions/v1:lib",
  ]
}

# Dependencies of ..._rs_api_impl.cc files generated by Crubit's
# `bin/rs_bindings_from_cc` tool.  See also `deps_for_generated_cc_file` in
# Crubit's `src/rs_bindings_from_cc/BUILD`.
source_set("deps_of_rs_api_impl") {
  sources = [
    "${_support_dir}/cxx20_backports.h",
    "${_support_dir}/offsetof.h",
  ]
}

# TODO: crbug.com/40226863 - Crubit should publish a Cargo.toml for these
# crates, then we can generate rules for them dynamically with gnrt.
rust_static_library("ctor") {
  crate_root = "${_support_dir}/ctor.rs"
  sources = [ "${_support_dir}/ctor.rs" ]
  build_native_rust_unit_tests = true
  deps = [ ":ctor_proc_macros" ]
}

rust_macro("ctor_proc_macros") {
  visibility = [ ":*" ]
  crate_root = "${_support_dir}/ctor_proc_macros.rs"
  sources = [ "${_support_dir}/ctor_proc_macros.rs" ]
  deps = [
    "//third_party/rust/proc_macro2/v1:lib",
    "//third_party/rust/quote/v1:lib",
    "//third_party/rust/syn/v1:lib",
  ]
}

rust_static_library("forward_declare") {
  crate_root = "${_support_dir}/forward_declare.rs"
  sources = [ "${_support_dir}/forward_declare.rs" ]
  build_native_rust_unit_tests = true
  deps = [ ":forward_declare_proc_macros" ]
}

rust_macro("forward_declare_proc_macros") {
  visibility = [ ":*" ]
  crate_root = "${_support_dir}/forward_declare_proc_macros.rs"
  sources = [ "${_support_dir}/forward_declare_proc_macros.rs" ]
  deps = [
    "//third_party/rust/proc_macro2/v1:lib",
    "//third_party/rust/quote/v1:lib",
    "//third_party/rust/syn/v1:lib",
  ]
}

rust_static_library("oops") {
  crate_root = "${_support_dir}/oops.rs"
  sources = [ "${_support_dir}/oops.rs" ]
  build_native_rust_unit_tests = true
}
