[package]
name = "libmarathon"
version = "0.1.2"
edition.workspace = true
description = "A peer-to-peer game engine development kit with CRDT-based state synchronization"
license = "MIT"
repository = "https://github.com/r3t-studios/marathon"
homepage = "https://github.com/r3t-studios/marathon"
readme = "../../README.md"
keywords = ["gamedev", "p2p", "crdt", "multiplayer", "bevy"]
categories = ["game-engines", "network-programming"]

[dependencies]
anyhow.workspace = true
bevy.workspace = true
rkyv.workspace = true

# Bevy subcrates required by vendored rendering (bevy_render, bevy_core_pipeline, bevy_pbr)
bevy_app = "0.17.2"
bevy_asset = "0.17.2"
bevy_camera = "0.17.2"
bevy_color = "0.17.2"
bevy_derive = "0.17.2"
bevy_diagnostic = "0.17.2"
bevy_ecs = "0.17.2"
bevy_encase_derive = "0.17.2"
bevy_image = "0.17.2"
bevy_light = "0.17.2"
bevy_math = "0.17.2"
bevy_mesh = "0.17.2"
bevy_platform = { version = "0.17.2", default-features = false }
bevy_reflect = "0.17.2"
libmarathon-macros = { version = "0.1.1", path = "../macros" }
bevy_shader = "0.17.2"
bevy_tasks = "0.17.2"
bevy_time = "0.17.2"
bevy_transform = "0.17.2"
bevy_utils = "0.17.2"
bevy_window = "0.17.2"

# Additional dependencies required by vendored rendering crates
wgpu = { version = "26", default-features = false, features = ["dx12", "metal"] }
naga = { version = "26", features = ["wgsl-in"] }
downcast-rs = { version = "2", default-features = false, features = ["std"] }
derive_more = { version = "2", default-features = false, features = ["from"] }
image = { version = "0.25.2", default-features = false }
bitflags = { version = "2.3", features = ["bytemuck"] }
fixedbitset = "0.5"
radsort = "0.1"
nonmax = "0.5"
smallvec = { version = "1", default-features = false }
indexmap = "2.0"
async-channel = "2.3"
offset-allocator = "0.2"
variadics_please = "1.1"
static_assertions = "1.1"

blake3 = "1.5"
blocking = "1.6"
hex.workspace = true
bytemuck = { version = "1.14", features = ["derive"] }
bytes.workspace = true
chrono.workspace = true
crdts.workspace = true
crossbeam-channel.workspace = true
dirs = "5.0"
egui.workspace = true
encase = { version = "0.11", features = ["glam"] }
futures-lite.workspace = true
glam.workspace = true
inventory.workspace = true
iroh = { workspace = true, features = ["discovery-local-network"] }
iroh-gossip.workspace = true
pkarr = "5.0"
itertools = "0.14"
rand.workspace = true
rusqlite.workspace = true
rustc-hash = "2.1"
serde.workspace = true
serde_json.workspace = true
sha2 = "0.10"
thiserror.workspace = true
tokio.workspace = true
tokio-util.workspace = true
toml.workspace = true
tracing.workspace = true
uuid.workspace = true
wgpu-types = "26.0"
winit.workspace = true

[target.'cfg(target_os = "ios")'.dependencies]
tracing-oslog = "0.3"

[dev-dependencies]
tokio.workspace = true
iroh = { workspace = true, features = ["discovery-local-network"] }
iroh-gossip.workspace = true
futures-lite.workspace = true
tempfile.workspace = true
proptest = "1.4"
criterion = "0.5"

[features]
# Feature to skip expensive networking operations in tests
fast_tests = []

[[bench]]
name = "write_buffer"
harness = false

[[bench]]
name = "vector_clock"
harness = false
