[package]
name = "mobench-sdk"
version.workspace = true
edition.workspace = true
license.workspace = true
rust-version.workspace = true
authors = ["Dominik Clemente - dcbuilder.eth <dc@world.org>"]
description = "Rust SDK for mobile benchmarking with timing harness and Android/iOS builders"
repository = "https://github.com/worldcoin/mobile-bench-rs"
documentation = "https://docs.rs/mobench-sdk"
readme = "README.md"
keywords = ["benchmark", "mobile", "android", "ios", "performance"]
categories = ["development-tools::profiling", "development-tools::testing"]

[badges]
maintenance = { status = "actively-developed" }

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
# Build on default target for docs.rs
targets = ["x86_64-unknown-linux-gnu"]

[lib]
crate-type = ["lib"]

[features]
default = ["full"]
# Full SDK with build automation, templates, and registry
full = ["registry", "builders", "codegen"]
# Benchmark macro, inventory registry, and runtime execution without build tooling
registry = ["dep:mobench-macros", "dep:inventory"]
# Mobile build automation; depends on codegen because builders refresh app templates
builders = ["codegen", "dep:toml"]
# Project and mobile template generation
codegen = ["dep:include_dir", "dep:toml"]
# Minimal timing-only mode for mobile binaries (small footprint)
runner-only = []

[dependencies]
# Proc macros (only with full feature)
mobench-macros = { workspace = true, optional = true }

# Registry (only with full feature)
inventory = { workspace = true, optional = true }

# Serialization (always needed for BenchSpec/BenchReport)
serde.workspace = true
serde_json.workspace = true
libc = "0.2"

# Error handling
thiserror.workspace = true

# Template embedding (only with full feature)
include_dir = { workspace = true, optional = true }

# Build automation (only with full feature)
toml = { workspace = true, optional = true }

[dev-dependencies]
# Test dependencies will be added as needed
