Skip to content

Commit

Permalink
Update the Readme
Browse files Browse the repository at this point in the history
Signed-off-by: Jonathan Schwender <[email protected]>
  • Loading branch information
jschwe committed Jul 15, 2024
1 parent b3c167c commit cbcdb48
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions Readme.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,33 @@
# ohos-sys

FFI-bindings for the native API of OpenHarmony OS.
FFI-bindings for the native API of OpenHarmony OS. See the [documentation] for a list of supported components.
This crate is under active development, and not officially affiliated with OpenHarmony OS.

## Development

The current bindings are generated with `bindgen` using `scripts/generate_bindings.sh` with version
`4.0.10.13` of the OpenHarmony SDK.
The current bindings are generated with `bindgen` using `scripts/generate_bindings.sh`.
A separate file is generated for each API version, and (assuming no breaking changes) the new additions are
manually copied to an `apiXX_additions.rs` file, which is included as a module if `feature = api-XX` is selected.
The generated file `drawing_apiXX.rs` should be committed to version control, so we can easily rerun the script on a
patch-release for a given API-level and see what changed.
The file itself is however not needed, and will be excluded from `crates.io` releases.

# Contributing

There are still quite a few OpenHarmony APIs missing. Feel free to contribute missing APIs, but be sure to adapt
the script, so your bindings are reproducible!
Please also check the following:

- Ensure that opaque struct definitions do not derive `Copy`, `Clone` and `Debug`.
- Blocklist all unnecessary type definitions, e.g. from the C standard library.
- Preferably generate the bindings with libclang in `C` mode. However, if a header file is not C-compliant
due to an issue of the OpenHarmony SDK, then setting `libclang` to C++ mode is fine.
- Be sure to guard the new component behind a cargo feature and document the feature in Cargo.toml.
- If you did not generate the bindings with API-level 10, specify which API-level you generated the bindings with
and guard the generated module behind the corresponding api-level feature flag.

## License

This crate is licensed under the Apache-2.0 license, matching the OpenHarmony OS SDK.

[documentation]: https://docs.rs/ohos-sys/latest/ohos_sys/

0 comments on commit cbcdb48

Please sign in to comment.