[workspace]
resolver = "2"
default-members = ["libsql-server"]
members = [
  "libsql",
  "bindings/c",
  "bindings/wasm",
  "libsql-sys",
  "libsql-server",
  "bottomless",
  "bottomless-cli",
  "libsql-replication",
  "libsql-ffi",
  "libsql-hrana",

  "vendored/rusqlite",
  "vendored/sqlite3-parser",

  "xtask", "libsql-hrana",
  "libsql-wal",
  "libsql-storage",
  "libsql-storage-server",
]

exclude = [
    "./libsql-sqlite3/ext/crr",
    "./libsql-sqlite3/ext/libsql-wasi",
    "libsql-shell",
    "tools/rebuild-log",
    "tools/fuzz",
]

[profile.release]
codegen-units = 1
panic = "unwind"

[workspace.dependencies]
rusqlite = { package = "libsql-rusqlite", path = "vendored/rusqlite", version = "0.30", default-features = false, features = [
    "libsql-experimental",
    "column_decltype",
    "load_extension",
    "modern_sqlite",
    "functions",
    "limits",
] }

# Config for 'cargo dist'
[workspace.metadata.dist]
# The preferred cargo-dist version to use in CI (Cargo.toml SemVer syntax)
cargo-dist-version = "0.14.1"
# CI backends to support
ci = "github"
# The installers to generate for each app
installers = ["shell", "homebrew"]
# A GitHub repo to push Homebrew formulas to
tap = "libsql/homebrew-sqld"
# Customize the Homebrew formula name
formula = "sqld"
# Target platforms to build apps for (Rust target-triple syntax)
targets = ["aarch64-apple-darwin", "aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"]
# Publish jobs to run in CI
publish-jobs = ["homebrew"]
# Whether cargo-dist should create a Github Release or use an existing draft
create-release = true
# Publish jobs to run in CI
pr-run-mode = "plan"
# A prefix git tags must include for cargo-dist to care about them
tag-namespace = "libsql-server"
# Whether to install an updater program
install-updater = false

[workspace.metadata.dist.github-custom-runners]
aarch64-apple-darwin = "macos-14"
aarch64-unknown-linux-gnu = "buildjet-8vcpu-ubuntu-2204-arm"

# The profile that 'cargo dist' will build with
[profile.dist]
inherits = "release"
lto = "thin"