Most rustc
cmdline parameters should be supported (e.g. --crate-type
).
The following example should work in the current dev environment:
$ echo > $HOME/scratch/test.rs " pub extern \"C\" fn public_function() { private_function() } fn private_function() {} " $ cd crubit/cc_bindings_from_rs $ bazel run :cc_bindings_from_rs -- \ --h-out=$HOME/scratch/test.h \ --rs-out=$HOME/scratch/test_impl.rs \ --clang-format-exe-path=<path_of_clang_format_executable> -- \ --rustfmt-exe-path=<path_of_rustfmt_executable> -- \ $HOME/scratch/test.rs \ --crate-type=lib $ cat $HOME/scratch/test.h // Automatically @generated C++ bindings for the following Rust crate: // test #pragma once namespace test { extern "C" void public_function(); }
You can inspect the generated bindings files by building the aspect:
bazel build --aspects \ //cc_bindings_from_rs/bazel_support:cc_bindings_from_rust_rule.bzl%cc_bindings_from_rust_aspect \ --output_groups=out \ //some/rust:library