31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
|
libcsp-rust
|
||
|
=========
|
||
|
|
||
|
This project aims to provide libraries and tools to use
|
||
|
[`libcsp`](https://github.com/libcsp/libcsp) in your Rust project.
|
||
|
|
||
|
It provides 2 crates for this:
|
||
|
|
||
|
- [`libcsp-cargo-build`] provides an API to build the `libcsp` using `cargo` with the
|
||
|
[`cc`](https://docs.rs/cc/latest/cc/) crate.
|
||
|
- [`libcsp-rust`] provides the Rust bindings to `libcsp` and a safe and ergonomic Rust interface.
|
||
|
|
||
|
In addition, it provides a workspace to allow updating the `libcsp` and the corresponding bindings
|
||
|
more easily inside the `lib` directory. Some of the examples `libcsp` provides were ported to Rust
|
||
|
and are showcases in the `examples` directory.
|
||
|
|
||
|
## Getting started
|
||
|
|
||
|
We assume that cargo should also take care of building the library.
|
||
|
|
||
|
1. Add the `libcsp-cargo-build` as a build dependency inside your `Cargo.toml`.
|
||
|
2. Add the `libcsp-rust` as a regular dependency inside your `Cargo.toml`.
|
||
|
3. Create a custom `build.rs` script which takes care of building `libcsp` using the API
|
||
|
provided by `libcsp-cargo-build`. You have to provide the source code for `libcsp` inside some
|
||
|
directory and pass that director to a builder API.
|
||
|
4. You can now write regular Rust code and use the API provided by `libcsp-rust` to use `libcsp`
|
||
|
in a safe and Rusty way.
|
||
|
|
||
|
It is recommended to have a look at the [example build script]() which should give you a general
|
||
|
idea of how a build script might look like to integrate `libcsp`.
|