load("@rules_cc//cc:defs.bzl", "cc_library") load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_library", "rust_proc_macro") rust_library( name = "cxx", srcs = glob(["src/**/*.rs"]), crate_features = [ "alloc", "std", ], edition = "2024", link_deps = [ ":core-lib", ], proc_macro_deps = [ ":cxxbridge-macro", ], version = module_version(), visibility = ["//visibility:public"], deps = [ "@crates.io//:foldhash", ], ) alias( name = "codegen", actual = ":cxxbridge", visibility = ["//visibility:public"], ) rust_binary( name = "cxxbridge", srcs = glob(["bridge/cmd/src/**/*.rs"]), compile_data = glob(["bridge/cmd/src/bridge/**/*.h"]), edition = "2024", version = module_version(), deps = [ "@crates.io//:clap", "@crates.io//:codespan-reporting", "@crates.io//:indexmap", "@crates.io//:proc-macro2", "@crates.io//:quote", "@crates.io//: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"], linkstatic = True, ) rust_proc_macro( name = "cxxbridge-macro", srcs = glob(["macro/src/**/*.rs"]), edition = "2024", proc_macro_deps = [ "@crates.io//:rustversion", ], version = module_version(), deps = [ "@crates.io//:indexmap", "@crates.io//:proc-macro2", "@crates.io//:quote", "@crates.io//:syn", ], ) rust_library( name = "cxx-build", srcs = glob(["bridge/build/src/**/*.rs"]), compile_data = glob(["bridge/build/src/bridge/**/*.h"]), edition = "2024", version = module_version(), deps = [ "@crates.io//:cc", "@crates.io//:codespan-reporting", "@crates.io//:indexmap", "@crates.io//:proc-macro2", "@crates.io//:quote", "@crates.io//:scratch", "@crates.io//:syn", ], ) rust_library( name = "cxx-gen", srcs = glob(["bridge/lib/src/**/*.rs"]), compile_data = glob(["bridge/lib/src/bridge/**/*.h"]), edition = "2024", version = module_version(), visibility = ["//visibility:public"], deps = [ "@crates.io//:cc", "@crates.io//:codespan-reporting", "@crates.io//:indexmap", "@crates.io//:proc-macro2", "@crates.io//:quote", "@crates.io//:syn", ], )