tree: c81ccf64b652f0af1541a81618ba048bf560d4c4 [path history] [tgz]
  1. test/
  2. bindings.rs
  3. BUILD
  4. cc_bindings_from_rs.rs
  5. cc_bindings_from_rs_legacy_toolchain_runner.sh
  6. cc_bindings_from_rs_sh_test.sh
  7. cmdline.rs
  8. legacy_toolchain_test_wrapper.sh
  9. README.md
cc_bindings_from_rs/README.md

cc_bindings_from_rs

Disclaimer: This project is experimental, under heavy development, and should not be used yet.

Invoking the tool

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_legacy_toolchain_runner -- \
    --h-out=$HOME/scratch/test.h -- \
    $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();
}

Contributing

See rs_bindings_from_cc/README.md.