Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 1 | """Generates Rust bindings from C++ headers.""" |
| 2 | |
| 3 | load( |
| 4 | "//rs_bindings_from_cc/bazel_support:deps_for_bindings.bzl", |
| 5 | "deps_for_bindings", |
| 6 | ) |
| 7 | load( |
| 8 | "//rs_bindings_from_cc/bazel_support:with_cc_toolchain_flags.bzl", |
| 9 | "with_cc_toolchain_flags", |
| 10 | ) |
| 11 | load( |
| 12 | "//rs_bindings_from_cc/bazel_support:rust_bindings_from_cc_binary.bzl", |
| 13 | "rust_bindings_from_cc_binary", |
| 14 | ) |
| 15 | load( |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 16 | "@rules_rust//rust:defs.bzl", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 17 | "rust_library", |
| 18 | "rust_test", |
| 19 | ) |
| 20 | load( |
| 21 | "//rs_bindings_from_cc/bazel_support:toolchain_headers.bzl", |
| 22 | "bindings_for_toolchain_headers", |
| 23 | ) |
| 24 | |
| 25 | licenses(["notice"]) |
| 26 | |
| 27 | with_cc_toolchain_flags( |
| 28 | name = "test_wrapper", |
| 29 | binary = ":rs_bindings_from_cc", |
| 30 | extra_args = [ |
| 31 | "--rs_out=/tmp/rs_api.rs", |
| 32 | "--cc_out=/tmp/rs_api_impl.cc", |
| 33 | "--ir_out=/tmp/ir.json", |
| 34 | ], |
| 35 | ) |
| 36 | |
| 37 | rust_bindings_from_cc_binary( |
| 38 | name = "rs_bindings_from_cc", |
| 39 | binary = ":rs_bindings_from_cc_impl", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 40 | visibility = ["//third_party/crubit:__subpackages__"], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 41 | ) |
| 42 | |
| 43 | deps_for_bindings( |
| 44 | name = "deps_for_bindings", |
| 45 | deps_for_generated_cc_file = [ |
| 46 | "//rs_bindings_from_cc/support:rs_api_impl_support", |
| 47 | ], |
| 48 | deps_for_generated_rs_file = [ |
| 49 | # Required for struct layout assertions added to the generated |
| 50 | # Rust code. |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 51 | "@crates_io//memoffset/v0_6:memoffset_unstable_const", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 52 | "//rs_bindings_from_cc/support:ctor", |
Devin Jeanpierre | 2745013 | 2022-04-11 13:52:01 -0700 | [diff] [blame] | 53 | "//rs_bindings_from_cc/support:forward_declare", |
Devin Jeanpierre | b368e68 | 2022-05-03 02:23:44 -0700 | [diff] [blame] | 54 | "//rs_bindings_from_cc/support:oops", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 55 | "@crates_io//pin_project/v1:pin_project", # used by ctor macros |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 56 | # Required for `Copy` trait assertions added to the generated Rust |
| 57 | # code. |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 58 | "@crates_io//static_assertions/v1:static_assertions", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 59 | ], |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 60 | visibility = ["//third_party/crubit:__subpackages__"], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 61 | ) |
| 62 | |
| 63 | cc_binary( |
| 64 | name = "rs_bindings_from_cc_impl", |
| 65 | srcs = ["rs_bindings_from_cc.cc"], |
| 66 | visibility = ["//visibility:public"], |
| 67 | deps = [ |
| 68 | ":bazel_types", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 69 | ":cc_ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 70 | ":cmdline", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 71 | ":ir_from_cc", |
| 72 | ":src_code_gen", |
Marco Poletti | 6669c69 | 2022-04-07 14:42:56 -0700 | [diff] [blame] | 73 | "//common:file_io", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 74 | "//common:status_macros", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 75 | "@absl//container:flat_hash_map", |
| 76 | "@absl//flags:parse", |
| 77 | "@absl//status", |
| 78 | "@absl//status:statusor", |
| 79 | "@absl//strings", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 80 | "@llvm///llvm:Support", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 81 | "@rust//support:rust_okay_here", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 82 | ], |
| 83 | ) |
| 84 | |
| 85 | cc_library( |
| 86 | name = "bazel_types", |
| 87 | hdrs = ["bazel_types.h"], |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 88 | deps = ["//common:string_type"], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 89 | ) |
| 90 | |
| 91 | cc_library( |
| 92 | name = "cmdline", |
| 93 | srcs = ["cmdline.cc"], |
| 94 | hdrs = ["cmdline.h"], |
| 95 | deps = [ |
| 96 | ":bazel_types", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 97 | ":cc_ir", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 98 | "//common:status_macros", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 99 | "@absl//container:flat_hash_map", |
| 100 | "@absl//flags:flag", |
| 101 | "@absl//status:statusor", |
| 102 | "@absl//strings", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 103 | "@llvm///llvm:Support", |
| 104 | ], |
| 105 | ) |
| 106 | |
| 107 | cc_test( |
| 108 | name = "cmdline_test", |
| 109 | srcs = ["cmdline_test.cc"], |
| 110 | deps = [ |
| 111 | ":bazel_types", |
| 112 | ":cmdline", |
| 113 | "//testing/base/public:gunit_main", |
| 114 | ], |
| 115 | ) |
| 116 | |
| 117 | cc_library( |
Michael Forster | b3503e0 | 2022-04-25 00:24:14 -0700 | [diff] [blame] | 118 | name = "decl_importer", |
| 119 | hdrs = ["decl_importer.h"], |
| 120 | visibility = ["//third_party/crubit:__subpackages__"], |
| 121 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 122 | "cc_ir", |
Michael Forster | b3503e0 | 2022-04-25 00:24:14 -0700 | [diff] [blame] | 123 | ":bazel_types", |
| 124 | "//lifetime_annotations", |
| 125 | "@absl//container:flat_hash_map", |
| 126 | "@absl//status:statusor", |
| 127 | ], |
| 128 | ) |
| 129 | |
| 130 | cc_library( |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 131 | name = "frontend_action", |
| 132 | srcs = ["frontend_action.cc"], |
| 133 | hdrs = ["frontend_action.h"], |
| 134 | deps = [ |
| 135 | ":ast_consumer", |
| 136 | ":importer", |
| 137 | "//lifetime_annotations", |
| 138 | "@llvm///clang:ast", |
| 139 | "@llvm///clang:frontend", |
| 140 | ], |
| 141 | ) |
| 142 | |
| 143 | cc_library( |
| 144 | name = "ast_consumer", |
| 145 | srcs = ["ast_consumer.cc"], |
| 146 | hdrs = ["ast_consumer.h"], |
| 147 | deps = [ |
| 148 | ":importer", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 149 | "//common:check", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 150 | "@llvm///clang:ast", |
| 151 | "@llvm///clang:frontend", |
| 152 | ], |
| 153 | ) |
| 154 | |
| 155 | cc_library( |
| 156 | name = "importer", |
| 157 | srcs = ["importer.cc"], |
| 158 | hdrs = ["importer.h"], |
| 159 | deps = [ |
| 160 | ":ast_convert", |
| 161 | ":bazel_types", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 162 | ":cc_ir", |
Michael Forster | b3503e0 | 2022-04-25 00:24:14 -0700 | [diff] [blame] | 163 | ":decl_importer", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 164 | "//common:check", |
| 165 | "//common:status_macros", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 166 | "//lifetime_annotations:type_lifetimes", |
Michael Forster | b3503e0 | 2022-04-25 00:24:14 -0700 | [diff] [blame] | 167 | "//rs_bindings_from_cc/importers:class_template", |
Michael Forster | c0bc926 | 2022-04-25 00:30:26 -0700 | [diff] [blame] | 168 | "//rs_bindings_from_cc/importers:cxx_record", |
Michael Forster | 4fa849d | 2022-04-25 00:32:59 -0700 | [diff] [blame] | 169 | "//rs_bindings_from_cc/importers:enum", |
Michael Forster | 7e4244a | 2022-04-25 00:39:01 -0700 | [diff] [blame] | 170 | "//rs_bindings_from_cc/importers:function", |
Michael Forster | 350d531 | 2022-04-25 00:36:31 -0700 | [diff] [blame] | 171 | "//rs_bindings_from_cc/importers:function_template", |
Michael Forster | 284fb5a | 2022-04-25 00:41:14 -0700 | [diff] [blame] | 172 | "//rs_bindings_from_cc/importers:namespace", |
Michael Forster | c60df1e | 2022-04-25 00:55:44 -0700 | [diff] [blame] | 173 | "//rs_bindings_from_cc/importers:typedef_name", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 174 | "@absl//container:flat_hash_map", |
| 175 | "@absl//container:flat_hash_set", |
| 176 | "@absl//status", |
| 177 | "@absl//status:statusor", |
| 178 | "@absl//strings", |
| 179 | "@absl//strings:cord", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 180 | "@llvm///clang:ast", |
| 181 | "@llvm///clang:basic", |
| 182 | "@llvm///clang:sema", |
| 183 | "@llvm///llvm:Support", |
| 184 | ], |
| 185 | ) |
| 186 | |
| 187 | cc_test( |
| 188 | name = "importer_test", |
| 189 | srcs = ["importer_test.cc"], |
| 190 | deps = [ |
| 191 | ":bazel_types", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 192 | ":cc_ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 193 | ":ir_from_cc", |
| 194 | "//testing/base/public:gunit_main", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 195 | "@absl//status", |
| 196 | "@absl//status:statusor", |
| 197 | "@absl//strings", |
| 198 | "@absl//types:span", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 199 | "@llvm///clang:ast", |
| 200 | ], |
| 201 | ) |
| 202 | |
| 203 | cc_library( |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 204 | name = "cc_ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 205 | srcs = ["ir.cc"], |
| 206 | hdrs = ["ir.h"], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 207 | deps = [ |
| 208 | ":bazel_types", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 209 | "//common:check", |
| 210 | "//common:strong_int", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 211 | "@absl//strings", |
Michael Forster | c0bc926 | 2022-04-25 00:30:26 -0700 | [diff] [blame] | 212 | "@llvm///clang:ast", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 213 | "@llvm///llvm:Support", |
| 214 | ], |
| 215 | ) |
| 216 | |
| 217 | rust_library( |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 218 | name = "ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 219 | srcs = ["ir.rs"], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 220 | deps = [ |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 221 | "@crates_io//anyhow/v1:anyhow", |
Lukasz Anforowicz | 4f6dfc6 | 2022-04-14 14:15:26 -0700 | [diff] [blame] | 222 | "@crates_io//itertools/v0_10:itertools", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 223 | "@crates_io//proc_macro2/v1:proc_macro2", |
| 224 | "@crates_io//quote/v1:quote", |
| 225 | "@crates_io//serde/v1:serde", |
| 226 | "@crates_io//serde_json/v1:serde_json", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 227 | ], |
| 228 | ) |
| 229 | |
| 230 | rust_test( |
| 231 | name = "rs_ir_test", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 232 | crate = ":ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 233 | ) |
| 234 | |
| 235 | rust_library( |
| 236 | name = "ir_testing", |
| 237 | testonly = 1, |
| 238 | srcs = ["ir_testing.rs"], |
| 239 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 240 | ":ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 241 | ":json_from_cc", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 242 | "//common:ffi_types", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 243 | "@crates_io//anyhow/v1:anyhow", |
Lukasz Anforowicz | 4f6dfc6 | 2022-04-14 14:15:26 -0700 | [diff] [blame] | 244 | "@crates_io//itertools/v0_10:itertools", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 245 | ], |
| 246 | ) |
| 247 | |
| 248 | cc_library( |
| 249 | name = "ir_from_cc", |
| 250 | srcs = ["ir_from_cc.cc"], |
| 251 | hdrs = ["ir_from_cc.h"], |
| 252 | deps = [ |
| 253 | ":bazel_types", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 254 | ":cc_ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 255 | ":frontend_action", |
| 256 | ":importer", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 257 | "//common:check", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 258 | "@absl//container:flat_hash_map", |
| 259 | "@absl//status", |
| 260 | "@absl//status:statusor", |
| 261 | "@absl//strings", |
| 262 | "@absl//types:span", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 263 | "@llvm///clang:basic", |
| 264 | "@llvm///clang:frontend", |
| 265 | "@llvm///clang:tooling", |
| 266 | ], |
| 267 | ) |
| 268 | |
| 269 | cc_library( |
| 270 | name = "json_from_cc", |
| 271 | srcs = ["json_from_cc.cc"], |
| 272 | deps = [ |
| 273 | ":bazel_types", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 274 | ":cc_ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 275 | ":ir_from_cc", |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 276 | "//common:cc_ffi_types", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 277 | "@absl//status:statusor", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 278 | "@llvm///llvm:Support", |
| 279 | ], |
| 280 | ) |
| 281 | |
| 282 | rust_test( |
| 283 | name = "ir_from_cc_test", |
| 284 | srcs = ["ir_from_cc_test.rs"], |
| 285 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 286 | ":ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 287 | ":ir_testing", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 288 | ":token_stream_matchers", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 289 | "@crates_io//anyhow/v1:anyhow", |
Lukasz Anforowicz | 4f6dfc6 | 2022-04-14 14:15:26 -0700 | [diff] [blame] | 290 | "@crates_io//itertools/v0_10:itertools", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 291 | "@crates_io//quote/v1:quote", |
| 292 | "@rust//support:rust_okay_here", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 293 | ], |
| 294 | ) |
| 295 | |
| 296 | cc_library( |
| 297 | name = "src_code_gen", |
| 298 | srcs = ["src_code_gen.cc"], |
| 299 | hdrs = ["src_code_gen.h"], |
| 300 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 301 | ":cc_ir", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 302 | ":src_code_gen_impl", # buildcleaner: keep |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 303 | "//common:cc_ffi_types", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 304 | "@llvm///clang:format", |
| 305 | "@llvm///llvm:Support", |
| 306 | ], |
| 307 | ) |
| 308 | |
| 309 | rust_library( |
| 310 | name = "src_code_gen_impl", |
| 311 | srcs = ["src_code_gen.rs"], |
| 312 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 313 | ":ir", |
| 314 | "//common:ffi_types", |
Marcel Hlopko | 7f14b4c | 2022-04-13 00:54:45 -0700 | [diff] [blame] | 315 | "//common:token_stream_printer", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 316 | "@crates_io//anyhow/v1:anyhow", |
Lukasz Anforowicz | 4f6dfc6 | 2022-04-14 14:15:26 -0700 | [diff] [blame] | 317 | "@crates_io//itertools/v0_10:itertools", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 318 | "@crates_io//proc_macro2/v1:proc_macro2", |
| 319 | "@crates_io//quote/v1:quote", |
| 320 | "@crates_io//serde_json/v1:serde_json", |
| 321 | "@crates_io//syn/v1:syn", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 322 | ], |
| 323 | ) |
| 324 | |
| 325 | rust_test( |
| 326 | name = "src_code_gen_impl_test", |
| 327 | crate = ":src_code_gen_impl", |
| 328 | data = [ |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 329 | "@rust//toolchains/nightly:bin/rustfmt", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 330 | "@rustfmt//:rustfmt.toml", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 331 | ], |
| 332 | deps = [ |
| 333 | ":ir_testing", |
| 334 | ":token_stream_matchers", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 335 | "@crates_io//static_assertions/v1:static_assertions", |
| 336 | "@rust//support:rust_okay_here", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 337 | ], |
| 338 | ) |
| 339 | |
| 340 | cc_library( |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 341 | name = "ast_convert", |
| 342 | srcs = ["ast_convert.cc"], |
| 343 | hdrs = ["ast_convert.h"], |
Michael Forster | c0bc926 | 2022-04-25 00:30:26 -0700 | [diff] [blame] | 344 | visibility = ["//rs_bindings_from_cc:__subpackages__"], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 345 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 346 | ":cc_ir", |
Marco Poletti | c61bcc4 | 2022-04-08 12:54:30 -0700 | [diff] [blame] | 347 | "//common:check", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 348 | "@absl//functional:function_ref", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 349 | "@llvm///clang:ast", |
| 350 | "@llvm///clang:basic", |
| 351 | ], |
| 352 | ) |
| 353 | |
| 354 | rust_library( |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 355 | name = "token_stream_matchers", |
| 356 | srcs = ["token_stream_matchers.rs"], |
| 357 | deps = [ |
Googler | 0611ea7 | 2022-05-04 07:03:07 -0700 | [diff] [blame^] | 358 | ":ir", |
Marcel Hlopko | 7f14b4c | 2022-04-13 00:54:45 -0700 | [diff] [blame] | 359 | "//common:token_stream_printer", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 360 | "@crates_io//anyhow/v1:anyhow", |
Lukasz Anforowicz | 4f6dfc6 | 2022-04-14 14:15:26 -0700 | [diff] [blame] | 361 | "@crates_io//itertools/v0_10:itertools", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 362 | "@crates_io//proc_macro2/v1:proc_macro2", |
| 363 | "@crates_io//quote/v1:quote", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 364 | ], |
| 365 | ) |
| 366 | |
| 367 | rust_test( |
| 368 | name = "token_stream_matchers_test", |
| 369 | crate = ":token_stream_matchers", |
| 370 | data = [ |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 371 | "@rust//toolchains/nightly:bin/rustfmt", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 372 | "@rustfmt//:rustfmt.toml", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 373 | ], |
| 374 | deps = [ |
| 375 | ":ir_testing", |
Marcel Hlopko | 9a94fc4 | 2022-04-06 23:35:36 -0700 | [diff] [blame] | 376 | "@rust//support:rust_okay_here", |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 377 | ], |
| 378 | ) |
| 379 | |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 380 | STD_HEADERS = [ |
| 381 | "cstddef", |
| 382 | "cstdlib", |
| 383 | "version", |
| 384 | "limits", |
| 385 | "climits", |
| 386 | "cfloat", |
| 387 | "cstdint", |
| 388 | "new", |
| 389 | "typeinfo", |
| 390 | "source_location", |
| 391 | "exception", |
| 392 | "initializer_list", |
| 393 | "compare", |
| 394 | "csignal", |
| 395 | "csetjmp", |
| 396 | "cstdarg", |
| 397 | "string", |
| 398 | "memory", |
| 399 | "stdint.h", |
| 400 | "stddef.h", |
| 401 | "stdlib.h", |
| 402 | ] |
| 403 | |
| 404 | config_setting( |
| 405 | name = "llvm_unstable", |
| 406 | values = { |
| 407 | "crosstool_top": "@clang//:everything", |
| 408 | }, |
| 409 | ) |
| 410 | |
| 411 | filegroup( |
| 412 | name = "toolchain_headers", |
| 413 | srcs = select({ |
| 414 | ":llvm_unstable": ["@clang//:cc-std-headers"], |
| 415 | "//conditions:default": ["@clang//:cc-std-headers"], |
| 416 | }) + [ |
| 417 | "//third_party/grte/v5_x86/release/usr/grte/v5:compile", |
| 418 | ], |
Googler | 6c3de12 | 2022-03-28 11:40:41 +0000 | [diff] [blame] | 419 | ) |
| 420 | |
| 421 | filegroup( |
| 422 | name = "builtin_headers", |
| 423 | srcs = [ |
| 424 | "@llvm///clang:builtin_headers_filegroup", |
| 425 | "@llvm///compiler-rt:fuzzer_filegroup", |
| 426 | "@llvm///compiler-rt:sanitizer_filegroup", |
| 427 | ], |
| 428 | visibility = ["//visibility:public"], |
| 429 | ) |
| 430 | |
| 431 | bindings_for_toolchain_headers( |
| 432 | name = "cc_std", |
| 433 | hdrs = ":toolchain_headers", |
| 434 | public_hdrs = STD_HEADERS, |
| 435 | visibility = ["//visibility:public"], |
| 436 | ) |