Create the skeleton of the C++ -> Rust migration tool.
PiperOrigin-RevId: 448016954
diff --git a/migrator/rs_from_cc/BUILD b/migrator/rs_from_cc/BUILD
new file mode 100644
index 0000000..834ae10
--- /dev/null
+++ b/migrator/rs_from_cc/BUILD
@@ -0,0 +1,94 @@
+"""Generates equivalent Rust code from C++ code."""
+
+licenses(["notice"])
+
+cc_binary(
+ name = "rs_from_cc",
+ srcs = ["rs_from_cc.cc"],
+ visibility = ["//visibility:public"],
+ deps = [
+ ":rs_from_cc_lib",
+ "@absl//flags:flag",
+ "@absl//flags:parse",
+ "@absl//status",
+ "@absl//status:statusor",
+ "@absl//strings",
+ "//common:check",
+ "//common:file_io",
+ "@llvm///llvm:Support",
+ "@rust//support:rust_okay_here",
+ ],
+)
+
+cc_library(
+ name = "frontend_action",
+ srcs = ["frontend_action.cc"],
+ hdrs = ["frontend_action.h"],
+ deps = [
+ ":ast_consumer",
+ ":converter",
+ "//lifetime_annotations",
+ "@llvm///clang:ast",
+ "@llvm///clang:frontend",
+ ],
+)
+
+cc_library(
+ name = "ast_consumer",
+ srcs = ["ast_consumer.cc"],
+ hdrs = ["ast_consumer.h"],
+ deps = [
+ ":converter",
+ "//common:check",
+ "@llvm///clang:ast",
+ "@llvm///clang:frontend",
+ ],
+)
+
+cc_library(
+ name = "converter",
+ srcs = ["converter.cc"],
+ hdrs = ["converter.h"],
+ deps = [
+ "@absl//container:flat_hash_map",
+ "@absl//container:flat_hash_set",
+ "@absl//status:statusor",
+ "@absl//strings",
+ "@absl//types:span",
+ "//lifetime_annotations",
+ "@llvm///clang:ast",
+ "@llvm///clang:basic",
+ "@llvm///clang:sema",
+ "//third_party/re2",
+ ],
+)
+
+cc_test(
+ name = "rs_from_cc_test",
+ srcs = ["rs_from_cc_lib_test.cc"],
+ deps = [
+ ":rs_from_cc_lib",
+ "//testing/base/public:gunit_main",
+ "@absl//status",
+ "@absl//strings",
+ "@llvm///clang:ast",
+ ],
+)
+
+cc_library(
+ name = "rs_from_cc_lib",
+ srcs = ["rs_from_cc_lib.cc"],
+ hdrs = ["rs_from_cc_lib.h"],
+ deps = [
+ ":converter",
+ ":frontend_action",
+ "@absl//container:flat_hash_map",
+ "@absl//status",
+ "@absl//status:statusor",
+ "@absl//strings",
+ "@absl//types:span",
+ "@llvm///clang:basic",
+ "@llvm///clang:frontend",
+ "@llvm///clang:tooling",
+ ],
+)