[workspace]

resolver = "2"

members = [
  "number",
  "constraint-solver",
  "expression",
  "riscv-elf",
  "riscv-types",
  "isa-utils",
  "syscalls",
  "autoprecompiles",
  "openvm",
  "cli-openvm",
  "openvm/extensions/hints-guest",
  "openvm/extensions/hints-transpiler",
  "openvm/extensions/hints-circuit",
]

exclude = ["riscv-runtime"]

[workspace.package]
version = "0.1.4"
edition = "2021"
license = "MIT"
homepage = "https://powdr.org"
repository = "https://github.com/powdr-labs/powdr"

[workspace.dependencies]
# workspace crates
powdr-constraint-solver = { path = "./constraint-solver", version = "0.1.4" }
powdr-isa-utils = { path = "./isa-utils", version = "0.1.4" }
powdr-expression = { path = "./expression", version = "0.1.4" }
powdr-number = { path = "./number", version = "0.1.4" }
powdr-riscv-elf = { path = "./riscv-elf", version = "0.1.4" }
powdr-riscv-types = { path = "./riscv-types", version = "0.1.4" }
powdr-syscalls = { path = "./syscalls", version = "0.1.4" }
powdr-autoprecompiles = { path = "./autoprecompiles", version = "0.1.4" }
powdr-openvm = { path = "./openvm", version = "0.1.4" }
powdr-cli-openvm = { path = "./cli-openvm", version = "0.1.4" }

powdr-openvm-hints-guest = { path = "./openvm/extensions/hints-guest", version = "0.1.4" }
powdr-openvm-hints-transpiler = { path = "./openvm/extensions/hints-transpiler", version = "0.1.4" }
powdr-openvm-hints-circuit = { path = "./openvm/extensions/hints-circuit", version = "0.1.4" }

# openvm
openvm = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-build = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-rv32im-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-rv32im-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-rv32im-guest = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6", default-features = false }
openvm-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-circuit-derive = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-circuit-primitives = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-circuit-primitives-derive = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-instructions = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-instructions-derive = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-sdk = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6", default-features = false, features = [
  "parallel",
  "jemalloc",
  "nightly-features",
  "bench-metrics",
] }
openvm-ecc-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-ecc-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-keccak256-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-keccak256-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-sha256-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-sha256-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-algebra-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-algebra-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-bigint-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-bigint-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-pairing-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-pairing-transpiler = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-native-circuit = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6", default-features = false }
openvm-native-recursion = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6", default-features = false }
openvm-platform = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }
openvm-custom-insn = { git = "https://github.com/powdr-labs/openvm.git", rev = "dcf8ee6" }

# stark-backend
openvm-stark-sdk = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "ee4e22b", default-features = false, features = [
  "parallel",
  "jemalloc",
  "nightly-features",
  "bench-metrics",
] }
openvm-stark-backend = { git = "https://github.com/powdr-labs/stark-backend.git", rev = "ee4e22b", default-features = false, features = [
  "parallel",
  "jemalloc",
  "bench-metrics",
] }

[profile.pr-tests]
inherits = "dev"
opt-level = 3
debug = "line-tables-only"
debug-assertions = true
overflow-checks = true
panic = 'unwind'
incremental = true         # This is true because target is cached
codegen-units = 256

[profile.release-with-debug]
inherits = "release"
debug = true

[workspace.lints.clippy]
print_stdout = "deny"
uninlined_format_args = "deny"
iter_over_hash_type = "deny"

# Uncomment both patches below for local stark-backend and openvm.
# The local openvm also needs to have stark-backend patched so all types match.
# [patch."https://github.com/powdr-labs/stark-backend.git"]
# openvm-stark-sdk = { path = "../stark-backend/crates/stark-sdk", default-features = false }
# openvm-stark-backend = { path = "../stark-backend/crates/stark-backend", default-features = false }

# [patch."https://github.com/powdr-labs/openvm.git"]
# openvm = { path = "../openvm/crates/toolchain/openvm" }
# openvm-build = { path = "../openvm/crates/toolchain/build" }
# openvm-rv32im-circuit = { path = "../openvm/extensions/rv32im/circuit/" }
# openvm-rv32im-transpiler = { path = "../openvm/extensions/rv32im/transpiler" }
# openvm-rv32im-guest = { path = "../openvm/extensions/rv32im/guest" }
# openvm-transpiler = { path = "../openvm/crates/toolchain/transpiler" }
# openvm-circuit = { path = "../openvm/crates/vm" }
# openvm-circuit-derive = { path = "../openvm/crates/vm/derive" }
# openvm-circuit-primitives = { path = "../openvm/crates/circuits/primitives" }
# openvm-circuit-primitives-derive = { path = "../openvm/crates/circuits/primitives/derive" }
# openvm-instructions = { path = "../openvm/crates/toolchain/instructions" }
# openvm-instructions-derive = { path = "../openvm/crates/toolchain/instructions/derive" }
# openvm-sdk = { path = "../openvm/crates/sdk" }
# openvm-ecc-circuit = { path = "../openvm/extensions/ecc/circuit" }
# openvm-ecc-transpiler = { path = "../openvm/extensions/ecc/transpiler" }
# openvm-keccak256-circuit = { path = "../openvm/extensions/keccak256/circuit" }
# openvm-keccak256-transpiler = { path = "../openvm/extensions/keccak256/transpiler" }
# openvm-sha256-circuit = { path = "../openvm/extensions/sha256/circuit" }
# openvm-sha256-transpiler = { path = "../openvm/extensions/sha256/transpiler" }
# openvm-algebra-circuit = { path = "../openvm/extensions/algebra/circuit" }
# openvm-algebra-transpiler = { path = "../openvm/extensions/algebra/transpiler" }
# openvm-bigint-circuit = { path = "../openvm/extensions/bigint/circuit" }
# openvm-bigint-transpiler = { path = "../openvm/extensions/bigint/transpiler" }
# openvm-pairing-circuit = { path = "../openvm/extensions/pairing/circuit" }
# openvm-pairing-transpiler = { path = "../openvm/extensions/pairing/transpiler" }
# openvm-native-circuit = { path = "../openvm/extensions/native/circuit" }
# openvm-native-recursion = { path = "../openvm/extensions/native/recursion" }
