|  | load("@rules_cc//cc:defs.bzl", "cc_library") | 
|  | load("//tools/bazel:rust.bzl", "rust_binary", "rust_library") | 
|  |  | 
|  | rust_library( | 
|  | name = "cxx", | 
|  | srcs = glob(["src/**/*.rs"]), | 
|  | proc_macro_deps = [ | 
|  | ":cxxbridge-macro", | 
|  | ], | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [":core-lib"], | 
|  | ) | 
|  |  | 
|  | rust_binary( | 
|  | name = "codegen", | 
|  | srcs = glob(["gen/cmd/src/**/*.rs"]), | 
|  | data = ["gen/cmd/src/gen/include/cxx.h"], | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | "//third-party:clap", | 
|  | "//third-party:codespan-reporting", | 
|  | "//third-party:proc-macro2", | 
|  | "//third-party:quote", | 
|  | "//third-party:syn", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "core", | 
|  | hdrs = ["include/cxx.h"], | 
|  | include_prefix = "rust", | 
|  | strip_include_prefix = "include", | 
|  | visibility = ["//visibility:public"], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "core-lib", | 
|  | srcs = ["src/cxx.cc"], | 
|  | hdrs = ["include/cxx.h"], | 
|  | ) | 
|  |  | 
|  | rust_library( | 
|  | name = "cxxbridge-macro", | 
|  | srcs = glob(["macro/src/**"]), | 
|  | crate_type = "proc-macro", | 
|  | deps = [ | 
|  | "//third-party:proc-macro2", | 
|  | "//third-party:quote", | 
|  | "//third-party:syn", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | rust_library( | 
|  | name = "build", | 
|  | srcs = glob(["gen/build/src/**/*.rs"]), | 
|  | data = ["gen/build/src/gen/include/cxx.h"], | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | "//third-party:cc", | 
|  | "//third-party:codespan-reporting", | 
|  | "//third-party:lazy_static", | 
|  | "//third-party:proc-macro2", | 
|  | "//third-party:quote", | 
|  | "//third-party:scratch", | 
|  | "//third-party:syn", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | rust_library( | 
|  | name = "lib", | 
|  | srcs = glob(["gen/lib/src/**/*.rs"]), | 
|  | data = ["gen/lib/src/gen/include/cxx.h"], | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | "//third-party:cc", | 
|  | "//third-party:codespan-reporting", | 
|  | "//third-party:proc-macro2", | 
|  | "//third-party:quote", | 
|  | "//third-party:syn", | 
|  | ], | 
|  | ) |