content: [package]
  name = "subspace-farmer"
  description = "Farmer for the Subspace Network Blockchain"
  license = "0BSD"
  version = "0.1.0"
  authors = ["Nazar Mokrynskyi <nazar@mokrynskyi.com>"]
  edition = "2024"
  include = [
      "/src",
      "/Cargo.toml",
      "/README.md",
  ]
  
  [[bin]]
  name = "subspace-farmer"
  required-features = ["binary"]
  
  [dependencies]
  ab-cli-utils = { workspace = true, optional = true }
  ab-core-primitives = { workspace = true }
  ab-data-retrieval = { workspace = true }
  ab-direct-io-file = { workspace = true }
  ab-erasure-coding = { workspace = true }
  ab-farmer-components = { workspace = true }
  ab-proof-of-space = { workspace = true }
  anyhow = { workspace = true }
  async-lock = { workspace = true }
  async-nats = { workspace = true, optional = true }
  async-trait = { workspace = true }
  backoff = { workspace = true, features = ["futures", "tokio"] }
  base58 = { workspace = true }
  blake2 = { workspace = true }
  blake3 = { workspace = true }
  bytes = { workspace = true }
  bytesize = { workspace = true }
  clap = { workspace = true, features = ["derive"], optional = true }
  criterion = { workspace = true, features = ["rayon", "async"], optional = true }
  derive_more = { workspace = true, features = ["full"] }
  ed25519-zebra = { workspace = true }
  event-listener = { workspace = true }
  event-listener-primitives = { workspace = true }
  fdlimit = { workspace = true, optional = true }
  fs4 = { workspace = true }
  futures = { workspace = true }
  hex = { workspace = true, features = ["serde"] }
  hwlocality = { workspace = true, features = ["vendored"], optional = true }
  jsonrpsee = { workspace = true, features = ["ws-client"] }
  mimalloc = { workspace = true, optional = true }
  num_cpus = { workspace = true }
  ouroboros = { workspace = true }
  parity-scale-codec = { workspace = true }
  parking_lot = { workspace = true }
  pin-project = { workspace = true }
  prometheus-client = { workspace = true }
  rand = { workspace = true }
  rayon = { workspace = true }
  serde = { workspace = true, features = ["derive"] }
  serde_json = { workspace = true }
  ss58-registry = { workspace = true }
  subspace-metrics = { workspace = true, optional = true }
  subspace-networking = { workspace = true }
  subspace-proof-of-space-gpu = { workspace = true, optional = true }
  subspace-rpc-primitives = { workspace = true }
  subspace-verification = { workspace = true }
  tempfile = { workspace = true }
  thiserror = { workspace = true }
  thread-priority = { workspace = true }
  tokio = { workspace = true, features = ["macros", "parking_lot", "rt-multi-thread", "signal", "sync", "time"] }
  tokio-stream = { workspace = true, features = ["sync"] }
  tracing = { workspace = true }
  ulid = { workspace = true, features = ["serde"] }
  zeroize = { workspace = true }
  
  [features]
  default = ["default-library", "binary"]
  cluster = ["dep:async-nats"]
  numa = ["dep:hwlocality"]
  # Only Volta+ architectures are supported (GeForce RTX 16xx consumer GPUs and newer)
  cuda = ["_gpu", "subspace-proof-of-space-gpu/cuda"]
  # TODO: ROCm can't be enabled at the same time as `cuda` feature at the moment
  # Seems to support RDNA 2+, at least on Linux
  rocm = ["_gpu", "subspace-proof-of-space-gpu/rocm"]
  # Internal feature, shouldn't be used directly
  _gpu = []
  
  # TODO: This is a hack for https://github.com/rust-lang/cargo/issues/1982, `default-library` is what would essentially
  #  be default, but because binary compilation will require explicit feature to be specified without `binary` feature we
  #  make `binary` the default feature and allow user of the library to opt-out when then need just a library instead,
  #  while still being able to leverage default feature
  default-library = ["cluster", "numa"]
  binary = [
      "dep:ab-cli-utils",
      "dep:clap",
      "dep:criterion",
      "dep:fdlimit",
      "dep:mimalloc",
      "dep:subspace-metrics",
  ]
  