[package]
name = "powdr-openvm"
version.workspace = true
edition.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true

[features]
default = []
tco = ["openvm-sdk/tco", "powdr-openvm-hints-circuit/tco"]
metrics = ["openvm-sdk/metrics", "openvm-stark-backend/metrics", "openvm-stark-sdk/metrics"]
cuda = ["openvm-sdk/cuda", "openvm-circuit-primitives/cuda", "dep:openvm-cuda-backend", "dep:openvm-cuda-common", "dep:openvm-cuda-builder"]

[dependencies]
openvm.workspace = true
openvm-build.workspace = true
openvm-rv32im-circuit.workspace = true
openvm-rv32im-transpiler.workspace = true
openvm-rv32im-guest.workspace = true
openvm-transpiler.workspace = true
openvm-circuit.workspace = true
openvm-circuit-derive.workspace = true
openvm-circuit-primitives.workspace = true
openvm-circuit-primitives-derive.workspace = true
openvm-instructions.workspace = true
openvm-instructions-derive.workspace = true
openvm-sdk.workspace = true
openvm-ecc-circuit.workspace = true
openvm-ecc-transpiler.workspace = true
openvm-keccak256-circuit.workspace = true
openvm-keccak256-transpiler.workspace = true
openvm-sha256-circuit.workspace = true
openvm-sha256-transpiler.workspace = true
openvm-algebra-circuit.workspace = true
openvm-algebra-transpiler.workspace = true
openvm-bigint-circuit.workspace = true
openvm-bigint-transpiler.workspace = true
openvm-pairing-circuit.workspace = true
openvm-pairing-transpiler.workspace = true
openvm-native-circuit.workspace = true
openvm-native-recursion.workspace = true

openvm-stark-sdk.workspace = true
openvm-stark-backend.workspace = true
openvm-cuda-backend = { workspace = true, optional = true }
openvm-cuda-common = { workspace = true, optional = true }

powdr-expression.workspace = true
powdr-number.workspace = true
powdr-riscv-elf.workspace = true
powdr-autoprecompiles.workspace = true
powdr-constraint-solver.workspace = true

powdr-openvm-hints-transpiler.workspace = true
powdr-openvm-hints-circuit.workspace = true

eyre = "0.6.12"
serde = "1.0.217"
derive_more = { version = "2.0.1", default-features = false, features = [
  "from",
] }
itertools = "0.14.0"

tracing = "0.1.40"
tracing-subscriber = { version = "0.3.17", features = ["std", "env-filter"] }

clap = { version = "^4.3", features = ["derive"] }

log = "0.4.17"
struct-reflection = { git = "https://github.com/gzanitti/struct-reflection-rs.git" }

metrics = "0.23.0"
toml = "0.8.14"

rustc-demangle = "0.1.25"

cfg-if = "1.0.0"

[dev-dependencies]
flate2 = "1.1.2"
test-log = "0.2.12"
tempfile = "3.20.0"
pretty_assertions = "1.4.0"
openvm-ecc-circuit.workspace = true
openvm-algebra-circuit.workspace = true
openvm-bigint-circuit.workspace = true
openvm-pairing-circuit.workspace = true
openvm-pairing-transpiler.workspace = true
serde_cbor = "0.11.2"
expect-test = "1.5.1"
criterion = { version = "0.4", features = ["html_reports"] }
tracing-log = "0.2.0"

[build-dependencies]
openvm-cuda-builder = { workspace = true, optional = true }

[lib]
bench = false # See https://github.com/bheisler/criterion.rs/issues/458

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