Disclaimer: This project is experimental, under heavy development, and should not be used yet.
Most rustc
cmdline parameters should be supported (e.g. --crate-type
).
The following example should work in the current dev environment:
If you're a Googler, set <path_of_rustfmt_executable>
to "$(pwd)/../../unsupported_toolchains/rust/toolchains/nightly/bin/rustfmt"
and the <path_of_clang_format_executable>
to "$(pwd)/../../crosstool/v18/stable/installs/llvm/bin/clang-format"
$ 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_legacy_toolchain_runner -- \ --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 \ --codegen=panic=abort $ cat $HOME/scratch/test.h // Automatically @generated C++ bindings for the following Rust crate: // test #pragma once namespace test { extern "C" void public_function(); }