[package]
# --- Bumpversion match - do not reorder
name = "veilid-flutter"
version = "0.4.3"
# ---
description = "Flutter/Dart bindings for Veilid"
resolver = "2"
repository.workspace = true
authors.workspace = true
license.workspace = true
edition.workspace = true
rust-version.workspace = true

[lib]
crate-type = ["cdylib", "staticlib", "rlib"]
path = "src/lib.rs"

[features]
default = ["rt-tokio", "veilid-core/default"]
crypto-test = ["rt-tokio", "veilid-core/crypto-test"]
rt-async-std = [
    "veilid-core/rt-async-std",
    "async-std",
    "opentelemetry/rt-async-std",
    "opentelemetry-otlp/grpc-sys",
]
rt-tokio = [
    "veilid-core/rt-tokio",
    "tokio",
    "tokio-stream",
    "tokio-util",
    "opentelemetry/rt-tokio",
]
debug-load = ["dep:ctor", "dep:libc-print", "dep:android_log-sys", "dep:oslog"]

[dependencies]
veilid-core = { path = "../../veilid-core", default-features = false }
tracing = { version = "0.1.40", features = ["log", "attributes"] }
tracing-subscriber = "0.3.19"
parking_lot = "0.12.3"
backtrace = "0.3.71"
serde_json = "1.0.120"
serde = "1.0.204"
futures-util = { version = "0.3.30", default-features = false, features = [
    "alloc",
] }
cfg-if = "1.0.0"
data-encoding = { version = "2.6.0" }
tracing-flame = "0.2.0"

# Dependencies for native builds only
# Linux, Windows, Mac, iOS, Android
[target.'cfg(not(all(target_arch = "wasm32", target_os = "unknown")))'.dependencies]
tracing-opentelemetry = "0.21"
opentelemetry = { version = "0.20" }
opentelemetry-otlp = { version = "0.13" }
opentelemetry-semantic-conventions = "0.12"
async-std = { version = "1.12.0", features = ["unstable"], optional = true }
tokio = { version = "1.38.1", features = ["full"], optional = true }
tokio-stream = { version = "0.1.15", features = ["net"], optional = true }
tokio-util = { version = "0.7.11", features = ["compat"], optional = true }
allo-isolate = "0.1.25"
ffi-support = "0.4.4"
lazy_static = "1.5.0"
hostname = "0.3.1"
ctor = { version = "0.2.8", optional = true }
libc-print = { version = "0.1.23", optional = true }


# Dependencies for WASM builds only
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies]

# Dependencies for Android builds only
[target.'cfg(target_os = "android")'.dependencies]
jni = "0.21.1"
paranoid-android = "0.2.2"
android_log-sys = { version = "0.3.1", optional = true }

# Dependencies for iOS builds only
[target.'cfg(target_os = "ios")'.dependencies]
oslog = { version = "0.2.0", default-features = false, optional = true }

[lints]
workspace = true
