Files
spacedrive/Cargo.toml
StarbirdTech 5c4b000765 build: add mobile-dev profile, fix metro watcher and NDK config
Add a mobile-dev Cargo profile for faster mobile development builds
(parallel codegen, no LTO, opt-level 2) — available opt-in via
`cargo build --profile mobile-dev`. Production builds use --release.

Fix NDK host_tag to always use darwin-x86_64 on macOS since Google
ships universal binaries under that path. Make aws-lc-sys cache
cleaning opt-in via CLEAN_AWS_LC=1 to enable incremental iOS builds.

Scope Metro file watcher to src/ and packages/ instead of the entire
monorepo (avoids watching 4.5GB+ Rust target/ dirs) and fix React
resolution to use workspace root where bun hoists packages.

Apply tembo review feedback from #3011: fix SVG type declarations to
avoid DOM dependency, add sound asset type flexibility, and add public
subpath exports to ts-client.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 03:34:44 -05:00

156 lines
4.8 KiB
TOML

[workspace]
exclude = ["crates/json-sample-derive", "extensions/*"]
members = [
# "apps/cloud",
# "apps/desktop/crates/*",
# "apps/desktop/src-tauri",
# "apps/mobile/modules/sd-core/android/crate",
# "apps/mobile/modules/sd-core/core",
# "apps/mobile/modules/sd-core/ios/crate",
"apps/mobile/modules/sd-mobile-core/core",
"apps/server",
"apps/cli",
# "apps/gpui-photo-grid",
"apps/tauri/sd-tauri-core",
"apps/tauri/src-tauri",
"core",
"core/benchmarks",
"crates/*",
"xtask"
]
# Exclude Tauri from default builds - it requires frontend to be built first
# Use `cd apps/tauri && bun run tauri:dev` to run the Tauri app
default-members = [
"apps/server",
"apps/cli",
"core",
"core/benchmarks",
"crates/*",
"xtask"
]
resolver = "2"
[workspace.package]
edition = "2021"
license = "AGPL-3.0-only"
repository = "https://github.com/spacedriveapp/spacedrive"
rust-version = "1.81"
[workspace.dependencies]
# First party dependencies
# sd-cloud-schema = { git = "https://github.com/spacedriveapp/cloud-services-schema", rev = "515ba740ea" }
# Third party dependencies used by one or more of our crates
anyhow = "1.0.94"
async-channel = "2.3"
async-stream = "0.3.6"
async-trait = "0.1.83"
axum = "0.7.9"
axum-extra = "0.9.6"
base64 = "0.22.1"
blake3 = "1.5.5"
bytes = "1.9.0"
chrono = "0.4.39"
ed25519-dalek = "2.1"
flume = "0.11.0"
futures = "0.3.31"
futures-concurrency = "7.6.2"
globset = "0.4.15"
http = "1.2.0"
hyper = "1.5.2"
image = "0.25.5"
iroh = "0.95.1"
itertools = "0.13.0"
lending-stream = "1.0"
libc = "0.2.169"
mimalloc = "0.1.43"
normpath = "1.3"
pin-project-lite = "0.2.15"
quic-rpc = "0.17.3"
rand = "0.9.0-alpha.2"
regex = "1.11.1"
reqwest = { version = "0.12.9", default-features = false }
rmp = "0.8.14"
rmp-serde = "1.3"
rmpv = { version = "1.3", features = ["with-serde"] }
serde = "1.0.216"
serde_json = "1.0.133"
specta = { git = "https://github.com/jamiepine/specta", branch = "main" }
strum = "0.26"
strum_macros = "0.26"
tempfile = "3.14.0"
thiserror = "2.0.8"
tokio = "1.42.0"
tokio-stream = "0.1.17"
tokio-util = "0.7.13"
tracing = "0.1.41"
tracing-subscriber = "0.3.19"
tracing-test = "0.2.5"
uhlc = "0.8.0" # Must follow version used by specta
uuid = "1.10" # Must follow version used by specta
webp = "0.3.0"
zeroize = "1.8"
# Proper IOS Support
# TODO: Fix the fork - it has compilation errors with TimerFuture
# [patch.crates-io.if-watch]
# git = "https://github.com/spacedriveapp/if-watch.git"
# rev = "a92c17d3f8"
# Patches removed - project migrated from libp2p to iroh
[profile.dev]
# Make compilation faster on macOS
codegen-units = 256
debug = 0
incremental = true
lto = false
opt-level = 0
split-debuginfo = "unpacked"
strip = "none"
[profile.dev-debug]
inherits = "dev"
# Enables debugger
codegen-units = 256
debug = "full"
incremental = true
lto = "off"
opt-level = 0
# split-debuginfo = "none"
strip = "none"
# Set the settings for build scripts and proc-macros.
[profile.dev.build-override]
opt-level = 3
# Set the default for dependencies, except workspace members.
[profile.dev.package."*"]
incremental = false
opt-level = 3
# Set the default for dependencies, except workspace members.
[profile.dev-debug.package."*"]
debug = "full"
incremental = false
inherits = "dev"
opt-level = 3
# Optimize release builds
[profile.release]
codegen-units = 1 # Compile crates one after another so the compiler can optimize better
lto = true # Enables link to optimizations
opt-level = "s" # Optimize for binary size
panic = "unwind" # Sadly we need unwind to avoid unexpected crashes on third party crates
strip = true # Remove debug symbols
# Fast mobile development profile - trades binary size for build speed
# Use with: cargo build --profile mobile-dev
# For production mobile releases, use --release instead
[profile.mobile-dev]
inherits = "release"
codegen-units = 16 # Allow parallel compilation (vs 1 in release)
lto = false # Disable link-time optimization (saves 15-20 min per arch)
opt-level = 2 # Good optimization without extreme size focus
strip = true # Still remove debug symbols