xref: /aosp_15_r20/external/angle/build/rust/crubit/BUILD.gn (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1# Copyright 2022 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/rust.gni")
6import("//build/rust/rust_macro.gni")
7import("//build/rust/rust_static_library.gni")
8
9# Common constants.
10_support_dir = "{rust_sysroot}/lib/crubit"
11
12# Dependencies of ..._rs_api.rs files generated by Crubit's
13# `bin/rs_bindings_from_cc` tool.  See also `deps_for_generated_rs_file` in
14# Crubit's `src/rs_bindings_from_cc/BUILD`.
15group("deps_of_rs_api") {
16  public_deps = [
17    ":ctor",
18    ":forward_declare",
19    ":oops",
20    "//third_party/rust/memoffset/v0_6:lib",
21    "//third_party/rust/static_assertions/v1:lib",
22  ]
23}
24
25# Dependencies of ..._rs_api_impl.cc files generated by Crubit's
26# `bin/rs_bindings_from_cc` tool.  See also `deps_for_generated_cc_file` in
27# Crubit's `src/rs_bindings_from_cc/BUILD`.
28source_set("deps_of_rs_api_impl") {
29  sources = [
30    "${_support_dir}/cxx20_backports.h",
31    "${_support_dir}/offsetof.h",
32  ]
33}
34
35# TODO: crbug.com/40226863 - Crubit should publish a Cargo.toml for these
36# crates, then we can generate rules for them dynamically with gnrt.
37rust_static_library("ctor") {
38  crate_root = "${_support_dir}/ctor.rs"
39  sources = [ "${_support_dir}/ctor.rs" ]
40  build_native_rust_unit_tests = true
41  deps = [ ":ctor_proc_macros" ]
42}
43
44rust_macro("ctor_proc_macros") {
45  visibility = [ ":*" ]
46  crate_root = "${_support_dir}/ctor_proc_macros.rs"
47  sources = [ "${_support_dir}/ctor_proc_macros.rs" ]
48  deps = [
49    "//third_party/rust/proc_macro2/v1:lib",
50    "//third_party/rust/quote/v1:lib",
51    "//third_party/rust/syn/v1:lib",
52  ]
53}
54
55rust_static_library("forward_declare") {
56  crate_root = "${_support_dir}/forward_declare.rs"
57  sources = [ "${_support_dir}/forward_declare.rs" ]
58  build_native_rust_unit_tests = true
59  deps = [ ":forward_declare_proc_macros" ]
60}
61
62rust_macro("forward_declare_proc_macros") {
63  visibility = [ ":*" ]
64  crate_root = "${_support_dir}/forward_declare_proc_macros.rs"
65  sources = [ "${_support_dir}/forward_declare_proc_macros.rs" ]
66  deps = [
67    "//third_party/rust/proc_macro2/v1:lib",
68    "//third_party/rust/quote/v1:lib",
69    "//third_party/rust/syn/v1:lib",
70  ]
71}
72
73rust_static_library("oops") {
74  crate_root = "${_support_dir}/oops.rs"
75  sources = [ "${_support_dir}/oops.rs" ]
76  build_native_rust_unit_tests = true
77}
78