-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Jonathan Schwender <[email protected]>
- Loading branch information
Showing
1 changed file
with
23 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/ |