117 lines
3.9 KiB
TOML
117 lines
3.9 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
# Third-party code kept with local fixes (see vendor/README.md); not linted as ours.
|
|
exclude = ["vendor"]
|
|
|
|
[workspace.package]
|
|
version = "0.10.1"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.95"
|
|
authors = ["SolidCraft contributors"]
|
|
repository = "https://github.com/bherbruck/solidcraft"
|
|
|
|
[workspace.dependencies]
|
|
# internal
|
|
solidcraft-geom = { path = "crates/geom" }
|
|
solidcraft-sketch = { path = "crates/sketch" }
|
|
solidcraft-kernel = { path = "crates/kernel" }
|
|
solidcraft-render = { path = "crates/render" }
|
|
solidcraft-gpu = { path = "crates/gpu" }
|
|
solidcraft-doc = { path = "crates/doc" }
|
|
solidcraft-io = { path = "crates/io" }
|
|
solidcraft-engine = { path = "crates/engine" }
|
|
solidcraft-ui-egui = { path = "crates/ui-egui" }
|
|
solidcraft-mcp = { path = "crates/mcp" }
|
|
|
|
# foundation
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive", "rc"] }
|
|
serde_json = { version = "1", features = ["float_roundtrip"] }
|
|
log = "0.4"
|
|
sha2 = "0.10"
|
|
|
|
# geometry kernel (Apache-2.0; see plan/adr/0001-geometry-kernel.md). Only crates/kernel uses it.
|
|
truck-modeling = "0.6"
|
|
truck-shapeops = { version = "0.4", default-features = false }
|
|
truck-meshalgo = { version = "0.4", default-features = false, features = ["tessellation", "analyzers"] }
|
|
truck-stepio = { version = "0.3", default-features = false }
|
|
truck-topology = "0.6"
|
|
# constrained Delaunay + Ruppert refinement for trimmed faces (MIT OR Apache-2.0); already in the
|
|
# tree through truck-meshalgo.
|
|
spade = { version = "2.15", default-features = false, features = ["std"] }
|
|
rayon = "1.12"
|
|
|
|
# packages (3MF)
|
|
zip = { version = "3", default-features = false, features = ["deflate"] }
|
|
quick-xml = "0.41"
|
|
|
|
# fonts (sketch text outlines; MIT OR Apache-2.0, pure Rust)
|
|
ttf-parser = { version = "0.25", default-features = false, features = ["std"] }
|
|
|
|
# images
|
|
image = { version = "0.25", default-features = false, features = ["png", "hdr"] }
|
|
|
|
# ui
|
|
egui = "0.36"
|
|
eframe = { version = "0.36", default-features = false, features = ["persistence"] }
|
|
# Instant/SystemTime that also work in the browser (std panics on wasm32-unknown-unknown).
|
|
web-time = "1"
|
|
egui-wgpu = "0.36"
|
|
# the wgpu egui-wgpu uses, for compute (crates/gpu); backends come from the apps' features
|
|
wgpu = { version = "30", default-features = false, features = ["std", "wgsl"] }
|
|
naga = { version = "30", default-features = false }
|
|
pollster = "0.4"
|
|
rfd = "0.17"
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
too_many_arguments = "allow"
|
|
type_complexity = "allow"
|
|
# `!(x > tol)` is our idiom for "not a usable number" (NaN-safe).
|
|
neg_cmp_op_on_partial_ord = "allow"
|
|
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
|
|
# Tests and lints (`cargo xtask ci`, GitHub CI): quick to build, quick enough to run. Light
|
|
# optimisation, line tables only (file:line in backtraces), no LTO. Debug assertions are off because
|
|
# truck's debug-only checks reject valid geometry (seam edges, closed edges); that was the only
|
|
# reason the tests used to build with --release, which cost most of CI's time.
|
|
[profile.ci]
|
|
inherits = "dev"
|
|
opt-level = 1
|
|
debug = "line-tables-only"
|
|
debug-assertions = false
|
|
overflow-checks = true
|
|
incremental = false
|
|
|
|
[profile.ci.package."*"]
|
|
opt-level = 2
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 16
|
|
# Line tables only: crash reports name file:line in their backtraces (no runtime cost; a larger
|
|
# binary). See docs/crash-reports.md.
|
|
debug = "line-tables-only"
|
|
|
|
# truck-shapeops with SolidCraft fixes (Apache-2.0, see vendor/truck-shapeops and ATTRIBUTION.md).
|
|
[patch.crates-io]
|
|
truck-shapeops = { path = "vendor/truck-shapeops" }
|
|
truck-stepio = { path = "vendor/truck-stepio" }
|
|
truck-meshalgo = { path = "vendor/truck-meshalgo" }
|
|
matext4cgmath = { path = "vendor/matext4cgmath" }
|
|
|
|
# Keep OpenGL pipelines, resolve textures and CAD callbacks at the same safe sample count.
|
|
egui-wgpu = { path = "vendor/egui-wgpu" }
|