extend installation instructions, fix perm
All checks were successful
Rust / build (push) Successful in 3m8s
All checks were successful
Rust / build (push) Successful in 3m8s
This commit is contained in:
parent
77a8a242bf
commit
ed8e362574
37
README.md
37
README.md
|
@ -43,21 +43,46 @@ Please specify the full version including patch in your Cargo.toml until 1.0 is
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Copy the header to your project and compile against.
|
1. Add this repo as a submodule:
|
||||||
|
```bash
|
||||||
|
git submodule add https://git.berlin.ccc.de/servicepoint/servicepoint-binding-c.git
|
||||||
|
git commit -m "add servicepoint-binding-c submodule"
|
||||||
|
```
|
||||||
|
2. Add a build step for the servicepoint library. If you use make, this could look something like this:
|
||||||
|
```
|
||||||
|
dependencies: FORCE
|
||||||
|
cargo build --manifest-path=servicepoint-binding-c/Cargo.toml --release
|
||||||
|
FORCE: ;
|
||||||
|
```
|
||||||
|
3. Link against the library. If you are on linux and linking statically:
|
||||||
|
```
|
||||||
|
${CC} main.c \
|
||||||
|
-I servicepoint-binding-c/include \
|
||||||
|
-L servicepoint-binding-c/target/release \
|
||||||
|
-Wl,-Bstatic -lservicepoint_binding_c \
|
||||||
|
-Wl,-Bdynamic -llzma \
|
||||||
|
-o out/example
|
||||||
|
```
|
||||||
|
|
||||||
You have the choice of linking statically (recommended) or dynamically.
|
You have the choice of linking statically (recommended) or dynamically.
|
||||||
|
|
||||||
- The C example shows how to link statically against the `staticlib` variant.
|
- The C example shows how to link statically against the `staticlib` variant.
|
||||||
- When linked dynamically, you have to provide the `cdylib` at runtime in the _same_ version, as there are no API/ABI guarantees yet.
|
- When linked dynamically, you have to provide the `cdylib` at runtime in the _same_ version, as there are no API/ABI
|
||||||
|
guarantees yet.
|
||||||
|
|
||||||
## Notes on differences to rust library
|
## Notes on differences to rust library
|
||||||
|
|
||||||
- function names are: `sp_` \<struct_name\> \<rust name\>.
|
- function names are: `sp_` \<struct_name\> \<rust name\>.
|
||||||
- Instances get consumed in the same way they do when writing rust code. Do not use an instance after an (implicit!) free.
|
- Instances get consumed in the same way they do when writing rust code. Do not use an instance after an (implicit!)
|
||||||
|
free.
|
||||||
- Option<T> or Result<T, E> turn into nullable return values - check for NULL!
|
- Option<T> or Result<T, E> turn into nullable return values - check for NULL!
|
||||||
- There are no specifics for C++ here yet. You might get a nicer header when generating directly for C++, but it should be usable.
|
- There are no specifics for C++ here yet. You might get a nicer header when generating directly for C++, but it should
|
||||||
|
be usable.
|
||||||
- Reading and writing to instances concurrently is not safe. Only reading concurrently is safe.
|
- Reading and writing to instances concurrently is not safe. Only reading concurrently is safe.
|
||||||
- documentation is included in the header and available [online](https://docs.rs/servicepoint_binding_c/latest/servicepoint_binding_c/)
|
- documentation is included in the header and
|
||||||
|
available [online](https://docs.rs/servicepoint_binding_c/latest/servicepoint_binding_c/)
|
||||||
|
|
||||||
## Everything else
|
## Everything else
|
||||||
|
|
||||||
Look at the main project [README](https://git.berlin.ccc.de/servicepoint/servicepoint/src/branch/main/README.md) for further information.
|
Look at the main project [README](https://git.berlin.ccc.de/servicepoint/servicepoint/src/branch/main/README.md) for
|
||||||
|
further information.
|
||||||
|
|
0
generate-binding.sh
Normal file → Executable file
0
generate-binding.sh
Normal file → Executable file
Loading…
Reference in a new issue