]> git.bitcoin.ninja Git - rust-lightning/blob - c-bindings-gen/README.md
Add simple README about our C bindings generation stuff
[rust-lightning] / c-bindings-gen / README.md
1 LDK C Bindings Generator
2 ========================
3
4 This program parses a Rust crate's AST from a single lib.rs passed in on stdin and generates a
5 second crate which is C-callable (and carries appropriate annotations for cbindgen). It is usually
6 invoked via the `genbindings.sh` script in the top-level directory, which converts the lightning
7 crate into a single file with a call to
8 `RUSTC_BOOTSTRAP=1 cargo rustc --profile=check -- -Zunstable-options --pretty=expanded`.
9
10 `genbindings.sh` requires that you have a rustc installed with the `wasm32-wasi` target available
11 (eg via the `libstd-rust-dev-wasm32` package on Debian or `rustup target add wasm32-wasi` for those
12 using rustup), cbindgen installed via `cargo install cbindgen` and in your `PATH`, and `clang`,
13 `clang++`, `gcc`, and `g++` available in your `PATH`. It uses `valgrind` if it is available to test
14 the generated bindings thoroughly for memory management issues.