blob: 327992a08bbe7c518ec36c705edc46acd0225a2d [file] [log] [blame]
Marco Polettib5239c92022-05-11 09:46:05 -07001"""Generates equivalent Rust code from C++ code."""
2
3licenses(["notice"])
4
5cc_binary(
6 name = "rs_from_cc",
7 srcs = ["rs_from_cc.cc"],
8 visibility = ["//visibility:public"],
9 deps = [
10 ":rs_from_cc_lib",
Googler75c7ad02022-05-23 13:27:49 -070011 "@absl//absl/flags:flag",
12 "@absl//absl/flags:parse",
Lukasz Anforowicz2c34cae2022-08-26 07:19:20 -070013 "@absl//absl/log:check",
Googler75c7ad02022-05-23 13:27:49 -070014 "@absl//absl/status",
15 "@absl//absl/status:statusor",
16 "@absl//absl/strings",
Marco Polettib5239c92022-05-11 09:46:05 -070017 "//common:file_io",
Googler75c7ad02022-05-23 13:27:49 -070018 "@llvm-project//llvm:Support",
19 "//common:rust_allocator_shims",
Marco Polettib5239c92022-05-11 09:46:05 -070020 ],
21)
22
23cc_library(
24 name = "frontend_action",
25 srcs = ["frontend_action.cc"],
26 hdrs = ["frontend_action.h"],
27 deps = [
28 ":ast_consumer",
29 ":converter",
30 "//lifetime_annotations",
Googler75c7ad02022-05-23 13:27:49 -070031 "@llvm-project//clang:ast",
32 "@llvm-project//clang:frontend",
Marco Polettib5239c92022-05-11 09:46:05 -070033 ],
34)
35
36cc_library(
37 name = "ast_consumer",
38 srcs = ["ast_consumer.cc"],
39 hdrs = ["ast_consumer.h"],
40 deps = [
41 ":converter",
Lukasz Anforowicz2c34cae2022-08-26 07:19:20 -070042 "@absl//absl/log:check",
Googler75c7ad02022-05-23 13:27:49 -070043 "@llvm-project//clang:ast",
44 "@llvm-project//clang:frontend",
Marco Polettib5239c92022-05-11 09:46:05 -070045 ],
46)
47
48cc_library(
49 name = "converter",
50 srcs = ["converter.cc"],
51 hdrs = ["converter.h"],
52 deps = [
Googler75c7ad02022-05-23 13:27:49 -070053 "@absl//absl/container:flat_hash_map",
54 "@absl//absl/container:flat_hash_set",
55 "@absl//absl/status:statusor",
56 "@absl//absl/strings",
57 "@absl//absl/types:span",
Marco Polettib5239c92022-05-11 09:46:05 -070058 "//lifetime_annotations",
Googler75c7ad02022-05-23 13:27:49 -070059 "@llvm-project//clang:ast",
60 "@llvm-project//clang:basic",
61 "@llvm-project//clang:sema",
Marco Polettib5239c92022-05-11 09:46:05 -070062 "//third_party/re2",
63 ],
64)
65
66cc_test(
67 name = "rs_from_cc_test",
68 srcs = ["rs_from_cc_lib_test.cc"],
69 deps = [
70 ":rs_from_cc_lib",
Luca Versaric21d92f2022-05-25 00:56:30 -070071 "@com_google_googletest//:gtest_main",
Googler75c7ad02022-05-23 13:27:49 -070072 "@absl//absl/status",
73 "@absl//absl/strings",
Luca Versaric21d92f2022-05-25 00:56:30 -070074 "//common:status_test_matchers",
Googler75c7ad02022-05-23 13:27:49 -070075 "@llvm-project//clang:ast",
Marco Polettib5239c92022-05-11 09:46:05 -070076 ],
77)
78
79cc_library(
80 name = "rs_from_cc_lib",
81 srcs = ["rs_from_cc_lib.cc"],
82 hdrs = ["rs_from_cc_lib.h"],
83 deps = [
84 ":converter",
85 ":frontend_action",
Googler75c7ad02022-05-23 13:27:49 -070086 "@absl//absl/container:flat_hash_map",
87 "@absl//absl/status",
88 "@absl//absl/status:statusor",
89 "@absl//absl/strings",
90 "@absl//absl/types:span",
91 "@llvm-project//clang:basic",
92 "@llvm-project//clang:frontend",
93 "@llvm-project//clang:tooling",
Marco Polettib5239c92022-05-11 09:46:05 -070094 ],
95)