rust-lightning/c-bindings-gen
2021-03-01 18:07:29 -05:00
..
src [bindings] Be explicit when calling trait methods in generated code 2021-02-28 19:44:45 -05:00
Cargo.toml Gen bindings with rustc --pretty=expanded instead of reading files 2021-02-18 12:28:25 -05:00
README.md Add simple README about our C bindings generation stuff 2021-03-01 18:07:29 -05:00

LDK C Bindings Generator

This program parses a Rust crate's AST from a single lib.rs passed in on stdin and generates a second crate which is C-callable (and carries appropriate annotations for cbindgen). It is usually invoked via the genbindings.sh script in the top-level directory, which converts the lightning crate into a single file with a call to RUSTC_BOOTSTRAP=1 cargo rustc --profile=check -- -Zunstable-options --pretty=expanded.

genbindings.sh requires that you have a rustc installed with the wasm32-wasi target available (eg via the libstd-rust-dev-wasm32 package on Debian or rustup target add wasm32-wasi for those using rustup), cbindgen installed via cargo install cbindgen and in your PATH, and clang, clang++, gcc, and g++ available in your PATH. It uses valgrind if it is available to test the generated bindings thoroughly for memory management issues.