[package]
name = "ohos-sys"
version = "0.8.5"
edition = "2021"
description = "Bindings to the native API of OpenHarmony OS"
license = "Apache-2.0"
repository = "https://github.com/openharmony-rs/ohos-sys"
keywords = ["OpenHarmony", "HarmonyOS", "ffi"]
readme = "Readme.md"
resolver = "2"
rust-version = "1.78.0"

[workspace]
members = [
    "components/*",
    "components/multimedia/image_framework",
    "components/multimedia/player_framework",
]
exclude = ["components/multimedia", "scripts"]

[workspace.dependencies]
ohos-sys-opaque-types = { version = "0.1.8", path = "components/opaque-types" }

[dependencies]
document-features = { version = "0.2", optional = true }
arkui-sys = { version = "0.3.3", optional = true, path = "components/arkui" }
hilog-sys = { version = "0.1.7", optional = true, path = "components/hilog" }
hitrace-sys = { version = "0.1.7", optional = true, path = "components/hitrace" }
ohos-abilitykit-sys = { version = "0.1.3", optional = true, path = "components/abilitykit" }
ohos-deviceinfo-sys = { version = "0.1.6", optional = true, path = "components/deviceinfo" }
ohos-drawing-sys = { path = "components/drawing", version = "0.3.3", optional = true }
ohos-image-kit-sys = { version = "0.3.4", optional = true, path = "components/multimedia/image_framework" }
ohos-ime-sys = { version = "0.2.3", optional = true, path = "components/inputmethod" }
ohos-input-sys = { version = "0.3.3", optional = true, path = "components/multimodal-input" }
ohos-pasteboard-sys = { version = "0.1.3", optional = true, path = "components/pasteboard" }
ohos-rawfile-sys = { version = "0.1.3", optional = true, path = "components/rawfile" }
ohos-sys-opaque-types = { workspace = true }
ohos-window-sys = { version = "0.1.4", optional = true, path = "components/window" }
ohos-vsync-sys = { version = "0.1.5", optional = true, path = "components/vsync" }
udmf-sys = { version = "0.1.3", optional = true, path = "components/udmf" }
xcomponent-sys = { version = "0.3.5", optional = true, path = "components/xcomponent" }
ohos-window-manager-sys = { version = "0.1.3", optional = true, path = "components/window_manager" }


[features]
default = ["api-10"]
## Enables bindings to the AbilitKit. Re-exports the `ohos-abilitykit-sys` library.
abilitykit = ["dep:ohos-abilitykit-sys"]
## Enables bindings to the native ArkUI module. Re-exports the `arkui-sys` library.
arkui = ["dep:arkui-sys"]
## Enables bindings to `deviceinfo.h`. Re-exports `ohos-deviceinfo-sys`
deviceinfo = ["dep:ohos-deviceinfo-sys"]
## Enables bindings to `native_drawing`. Re-exports `ohos-drawing-sys`.
drawing = ["dep:ohos-drawing-sys", "arkui-sys?/drawing"]
## Enables bindings to `hilog`
hilog = ["dep:hilog-sys"]
## Enables bindings to `hitrace`
hitrace = ["dep:hitrace-sys"]
## Enables bindings to `inputmethod` from the IME-Kit. Empty if API-level < 12.
inputmethod = ["dep:ohos-ime-sys"]
## Bindings to the [Image Kit](https://docs.openharmony.cn/pages/v5.0/en/application-dev/media/image/image-overview.md)
image-kit = ["dep:ohos-image-kit-sys"]
## Bindings to the Multimodal Input kit.
multimodal-input = ["dep:ohos-input-sys"]
## Enables bindings to `napi`
napi = []
## Enables bindings to `native_buffer`
native_buffer = ['dep:ohos-window-sys']
## Enables bindings to `native_image`
native_image = ['dep:ohos-window-sys']
## Enables bindings to `native_window`
native_window = ['dep:ohos-window-sys']
## Enables to the ohos pasteboard (clipboard)
pasteboard = ['dep:ohos-pasteboard-sys']
## Enables bindings to `rawfile`
rawfile = ['ohos-rawfile-sys']
## Enables bindings to the Unified Data Management Framework (UDMF)
udmf = ['dep:udmf-sys']
## Enables bindings to `native_vsync`
vsync = ["dep:ohos-vsync-sys"]
## Enables bindings to `native_xcomponent`
xcomponent = ["dep:xcomponent-sys"]
## Enables bindings to `window_manager`
window_manager = ["dep:ohos-window-manager-sys"]

## Enables all components listed above. Orthogonal to `api-XX` features.
all-components = [
    "abilitykit",
    "arkui",
    "deviceinfo",
    "drawing",
    "hilog",
    "hitrace",
    "inputmethod",
    "image-kit",
    "image-kit-image-packer",
    "image-kit-image-receiver",
    "image-kit-image-source",
    "image-kit-pixelmap",
    "multimodal-input",
    "napi",
    "native_buffer",
    "native_image",
    "native_window",
    "pasteboard",
    "rawfile",
    "xcomponent",
    "udmf",
    "vsync",
    "window_manager",
]

#! ### OpenHarmony API level
#! This crate by default exposes bindings for API-level 10.
#! Optionally enable one of the `api-*` features to get access to bindings for newer
#! OpenHarmony versions.

## No effect. API-10 bindings can't be deselected. The feature exists for internal purposes.
api-10 = []
## Enables bindings for OpenHarmony API-level 11
api-11 = [
    "api-10",
    "hilog-sys?/api-11",
    "hitrace-sys?/api-11",
    "ohos-deviceinfo-sys?/api-11",
    "ohos-drawing-sys?/api-11",
    "ohos-vsync-sys?/api-11",
    "ohos-window-sys?/api-11",
    "ohos-rawfile-sys?/api-11",
    "udmf-sys?/api-11",
    "xcomponent-sys?/api-11",
]
## Enables bindings for OpenHarmony API-level 12
api-12 = [
    "api-11",
    "arkui-sys?/api-12",
    "hilog-sys?/api-12",
    "hitrace-sys?/api-12",
    "ohos-abilitykit-sys?/api-12",
    "ohos-deviceinfo-sys?/api-12",
    "ohos-drawing-sys?/api-12",
    "ohos-image-kit-sys?/api-12",
    "ohos-ime-sys?/api-12",
    "ohos-input-sys?/api-12",
    "ohos-pasteboard-sys?/api-12",
    "ohos-rawfile-sys?/api-12",
    "ohos-vsync-sys?/api-12",
    "ohos-window-sys?/api-12",
    "ohos-window-manager-sys?/api-12",
    "udmf-sys?/api-12",
    "xcomponent-sys?/api-12",
]

## Enables bindings for OpenHarmony API-level 13
api-13 = [
    "api-12",
    "arkui-sys?/api-13",
    "hilog-sys?/api-13",
    "hitrace-sys?/api-13",
    "ohos-abilitykit-sys?/api-13",
    "ohos-deviceinfo-sys?/api-13",
    "ohos-drawing-sys?/api-13",
    "ohos-image-kit-sys?/api-13",
    "ohos-ime-sys?/api-13",
    "ohos-input-sys?/api-13",
    "ohos-pasteboard-sys?/api-13",
    "ohos-rawfile-sys?/api-13",
    "ohos-vsync-sys?/api-13",
    "ohos-window-sys?/api-13",
    "ohos-window-manager-sys?/api-13",
    "udmf-sys?/api-13",
    "xcomponent-sys?/api-13",
]

## Enables bindings for OpenHarmony API-level 14
api-14 = [
    "api-13",
    "arkui-sys?/api-14",
    "hilog-sys?/api-14",
    "hitrace-sys?/api-14",
    "ohos-abilitykit-sys?/api-14",
    "ohos-deviceinfo-sys?/api-14",
    "ohos-drawing-sys?/api-14",
    "ohos-image-kit-sys?/api-14",
    "ohos-ime-sys?/api-14",
    "ohos-input-sys?/api-14",
    "ohos-pasteboard-sys?/api-14",
    "ohos-rawfile-sys?/api-14",
    "ohos-vsync-sys?/api-14",
    "ohos-window-manager-sys?/api-14",
    "ohos-window-sys?/api-14",
    "udmf-sys?/api-14",
    "xcomponent-sys?/api-14",
]

## Enables bindings for OpenHarmony API-level 15
api-15 = [
    "api-14",
    "arkui-sys?/api-15",
    "hilog-sys?/api-15",
    "hitrace-sys?/api-15",
    "ohos-abilitykit-sys?/api-15",
    "ohos-deviceinfo-sys?/api-15",
    "ohos-drawing-sys?/api-15",
    "ohos-image-kit-sys?/api-15",
    "ohos-ime-sys?/api-15",
    "ohos-input-sys?/api-15",
    "ohos-pasteboard-sys?/api-15",
    "ohos-rawfile-sys?/api-15",
    "ohos-vsync-sys?/api-15",
    "ohos-window-manager-sys?/api-15",
    "ohos-window-sys?/api-15",
    "udmf-sys?/api-15",
    "xcomponent-sys?/api-15",
]

## Enables bindings for OpenHarmony API-level 16.
api-16 = ["api-15",
    "arkui-sys?/api-16",
    "hilog-sys?/api-16",
    "hitrace-sys?/api-16",
    "ohos-abilitykit-sys?/api-16",
    "ohos-deviceinfo-sys?/api-16",
    "ohos-drawing-sys?/api-16",
    "ohos-image-kit-sys?/api-16",
    "ohos-ime-sys?/api-16",
    "ohos-input-sys?/api-16",
    "ohos-pasteboard-sys?/api-16",
    "ohos-rawfile-sys?/api-16",
    "ohos-vsync-sys?/api-16",
    "ohos-window-manager-sys?/api-16",
    "ohos-window-sys?/api-16",
    "udmf-sys?/api-16",
    "xcomponent-sys?/api-16",
]
## Enables bindings for OpenHarmony API-level 17.
api-17 = ["api-16",
    "arkui-sys?/api-17",
    "hilog-sys?/api-17",
    "hitrace-sys?/api-17",
    "ohos-abilitykit-sys?/api-17",
    "ohos-deviceinfo-sys?/api-17",
    "ohos-drawing-sys?/api-17",
    "ohos-image-kit-sys?/api-17",
    "ohos-ime-sys?/api-17",
    "ohos-input-sys?/api-17",
    "ohos-pasteboard-sys?/api-17",
    "ohos-rawfile-sys?/api-17",
    "ohos-vsync-sys?/api-17",
    "ohos-window-manager-sys?/api-17",
    "ohos-window-sys?/api-17",
    "udmf-sys?/api-17",
    "xcomponent-sys?/api-17",
]
## Enables bindings for OpenHarmony API-level 18 (5.1.0).
api-18 = ["api-17",
    "arkui-sys?/api-18",
    "hilog-sys?/api-18",
    "hitrace-sys?/api-18",
    "ohos-abilitykit-sys?/api-18",
    "ohos-deviceinfo-sys?/api-18",
    "ohos-drawing-sys?/api-18",
    "ohos-image-kit-sys?/api-18",
    "ohos-ime-sys?/api-18",
    "ohos-input-sys?/api-18",
    "ohos-pasteboard-sys?/api-18",
    "ohos-rawfile-sys?/api-18",
    "ohos-vsync-sys?/api-18",
    "ohos-window-manager-sys?/api-18",
    "ohos-window-sys?/api-18",
    "udmf-sys?/api-18",
    "xcomponent-sys?/api-18",
]
## Enables bindings for OpenHarmony API-level 19
api-19 = ["api-18",
    "arkui-sys?/api-19",
    "hilog-sys?/api-19",
    "hitrace-sys?/api-19",
    "ohos-abilitykit-sys?/api-19",
    "ohos-deviceinfo-sys?/api-19",
    "ohos-drawing-sys?/api-19",
    "ohos-image-kit-sys?/api-19",
    "ohos-ime-sys?/api-19",
    "ohos-input-sys?/api-19",
    "ohos-pasteboard-sys?/api-19",
    "ohos-rawfile-sys?/api-19",
    "ohos-vsync-sys?/api-19",
    "ohos-window-manager-sys?/api-19",
    "ohos-window-sys?/api-19",
    "udmf-sys?/api-19",
    "xcomponent-sys?/api-19",
]
## Enables bindings for OpenHarmony API-level 20
api-20 = ["api-19",
    "arkui-sys?/api-20",
    "hilog-sys?/api-20",
    "hitrace-sys?/api-20",
    "ohos-abilitykit-sys?/api-20",
    "ohos-deviceinfo-sys?/api-20",
    "ohos-drawing-sys?/api-20",
    "ohos-image-kit-sys?/api-20",
    "ohos-ime-sys?/api-20",
    "ohos-input-sys?/api-20",
    "ohos-pasteboard-sys?/api-20",
    "ohos-rawfile-sys?/api-20",
    "ohos-vsync-sys?/api-20",
    "ohos-window-manager-sys?/api-20",
    "ohos-window-sys?/api-20",
    "udmf-sys?/api-20",
    "xcomponent-sys?/api-20",
]
## Enables bindings for OpenHarmony API-level 20
api-21 = ["api-20",
    "arkui-sys?/api-21",
    "hilog-sys?/api-21",
    "hitrace-sys?/api-21",
    "ohos-abilitykit-sys?/api-21",
    "ohos-deviceinfo-sys?/api-21",
    "ohos-drawing-sys?/api-21",
    "ohos-image-kit-sys?/api-21",
    "ohos-ime-sys?/api-21",
    "ohos-input-sys?/api-21",
    "ohos-pasteboard-sys?/api-21",
    "ohos-rawfile-sys?/api-21",
    "ohos-vsync-sys?/api-21",
    "ohos-window-manager-sys?/api-21",
    "ohos-window-sys?/api-21",
    "udmf-sys?/api-21",
    "xcomponent-sys?/api-21",
]

#! ### Features of dependencies
#!
#! Re-exports features of individual component crates of `ohos-sys`.
#! In general, it is recommended to depend on the individual component crates

image-kit-image-packer = ["ohos-image-kit-sys/image-packer"]
image-kit-image-receiver = ["ohos-image-kit-sys/image-receiver"]
image-kit-image-source = ["ohos-image-kit-sys/image-source"]
image-kit-pixelmap = ["ohos-image-kit-sys/pixelmap"]
xcomponent-keyboard-types = ["xcomponent-sys/keyboard-types"]

#! ### Internal features
## Document available features when building the documentation
document-features = ["dep:document-features"]

[package.metadata.docs.rs]
features = ["document-features"]
targets = [
    "aarch64-unknown-linux-ohos",
    "armv7-unknown-linux-ohos",
    "x86_64-unknown-linux-ohos",
]
all-features = true
