[package]
name = "cuprate-helper"
version = "0.1.0"
edition = "2021"
description = "Helper functions used around Cuprate."
license = "MIT"
authors = ["hinto-janai <hinto.janai@protonmail.com>", "Boog900"]
repository = "https://github.com/Cuprate/cuprate/tree/main/consensus"


[features]
# All features on by default.
default   = ["std", "atomic", "asynch", "cast", "fs", "num", "map", "time", "thread", "constants"]
std       = []
atomic    = ["dep:crossbeam"]
asynch    = ["dep:futures", "dep:rayon"]
cast      = []
constants = []
fs        = ["dep:dirs"]
num       = []
map       = ["cast", "dep:monero-serai"]
time      = ["dep:chrono", "std"]
thread    = ["std", "dep:target_os_lib"]

[dependencies]
crossbeam    = { workspace = true, optional = true }
chrono       = { workspace = true, optional = true, features = ["std", "clock"] }
dirs         = { workspace = true, optional = true }
futures      = { workspace = true, optional = true, features = ["std"] }
monero-serai = { workspace = true, optional = true }
rayon        = { workspace = true, optional = true }

# This is kinda a stupid work around.
# [thread] needs to activate one of these libs (windows|libc)
# although it depends on what target we're building for.
[target.'cfg(windows)'.dependencies]
target_os_lib = { package = "windows", version = ">=0.51", features = ["Win32_System_Threading", "Win32_Foundation"], optional = true }
[target.'cfg(unix)'.dependencies]
target_os_lib = { package = "libc", version = "0.2.151", optional = true }

[dev-dependencies]
tokio = { workspace = true, features = ["full"] }

[lints]
workspace = true