-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCargo.toml
More file actions
76 lines (70 loc) · 3.48 KB
/
Copy pathCargo.toml
File metadata and controls
76 lines (70 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
[workspace]
members = [
"crates/plyphon",
"crates/plyphon-buffers",
"crates/plyphon-cli",
"crates/plyphon-dsp",
"crates/plyphon-osc",
"crates/plyphon-rt",
"crates/plyphon-unit",
"crates/rt-alloc",
"crates/scgf",
"crates/example-audio",
"crates/examples/*",
]
# `plyphon-cli` (the `plyphon` binary) is the repo's default build/run target, so a bare
# `cargo run`/`cargo build` at the workspace root drives it rather than erroring on ambiguity.
default-members = ["crates/plyphon-cli"]
resolver = "3"
[workspace.package]
authors = ["nannou-org"]
edition = "2024"
homepage = "https://github.com/nannou-org/plyphon"
license = "GPL-3.0-or-later"
repository = "https://github.com/nannou-org/plyphon"
[workspace.dependencies]
# Internal crates. Default features (which include `std`) are disabled here so a dependent's
# own `std` feature drives the whole graph: cargo forbids a member from disabling an inherited
# dependency's default features, so the toggle has to live at the workspace level. Crates that
# want `std` (the library crates by default, and every example) re-enable it via `<crate>/std`.
plyphon = { version = "0.1.2", path = "crates/plyphon", default-features = false }
plyphon-buffers = { version = "0.1.2", path = "crates/plyphon-buffers", default-features = false }
plyphon-dsp = { version = "0.1.0", path = "crates/plyphon-dsp", default-features = false }
plyphon-osc = { version = "0.1.2", path = "crates/plyphon-osc", default-features = false }
plyphon-rt = { version = "0.1.1", path = "crates/plyphon-rt", default-features = false }
plyphon-unit = { version = "0.1.1", path = "crates/plyphon-unit", default-features = false }
rt-alloc = { version = "0.1.0", path = "crates/rt-alloc" }
scgf = { version = "0.1.0", path = "crates/scgf", default-features = false }
# Shared cpal output-stream glue for the example crates (native + web AudioWorklet).
example-audio = { version = "0.1.0", path = "crates/example-audio" }
# Shared dependencies.
# Safe, no_std byte/slice reinterpretation - backs Pod ugen state in the rt-pool.
bytemuck = { version = "1", features = ["derive"] }
cpal = "0.18"
# Lock-free SPSC ring for control -> RT command delivery (wait-free, no_std-friendly).
# `default-features = false` drops its `std` feature; re-enabled via each crate's `std`.
rtrb = { version = "0.3", default-features = false }
# OSC encoding/decoding for the SuperCollider-compatible command front-end. Its `std` feature
# (which also pulls in the std-only `time` crate) is left off and re-enabled via `std`.
rosc = { version = "0.11", default-features = false }
# Ergonomic error types. Without `std` the derive targets `core::error::Error`.
thiserror = { version = "2", default-features = false }
# Web (wasm) example dependencies.
console_error_panic_hook = "0.1"
wasm-bindgen = "0.2"
# Native release: fat LTO + one codegen unit so the many small cross-crate DSP kernels
# (plyphon-dsp math/ops, the unit inner loops) inline into the per-block hot path.
[profile.release]
lto = "fat"
codegen-units = 1
# The web examples' profile (each web/*.html selects it via `data-cargo-profile-release`).
# Speed-optimized: the DSP hot path runs on the audio thread, where `opt-level = 'z'` size
# optimization would pessimize the per-sample loops; lto/strip still trim the bundle.
[profile.wasm_release]
inherits = "release"
opt-level = 3
lto = true # Enable link-time optimization
codegen-units = 1
panic = 'abort' # Remove panic unwinding to reduce size
strip = true # Remove debug symbols
debug = false