e58f06d9fa
Stripped upstream git history; starting point for replacing the native SWELL/Win32 mapping UI with something more suited to bulk editing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
258 lines
9.4 KiB
TOML
258 lines
9.4 KiB
TOML
[package]
|
|
name = "helgobox"
|
|
version = "2.18.3-pre.1"
|
|
authors = ["Benjamin Klum <benjamin.klum@helgoboss.org>"]
|
|
edition = "2021"
|
|
build = "build.rs"
|
|
license = "GPL-3.0"
|
|
rust-version = "1.84.0"
|
|
publish = false
|
|
|
|
[features]
|
|
default = []
|
|
|
|
# Builds ReaLearn together with the Playtime Clip Engine. This should only be enabled if you have access to the
|
|
# private playtime-clip-engine repository, otherwise the build will fail.
|
|
playtime = ["dep:playtime-clip-engine"]
|
|
|
|
# Activates license checks for Playtime Clip Engine. If not enabled, license checks will always fail.
|
|
licensing = ["playtime", "playtime-clip-engine/licensing"]
|
|
|
|
# Enables a bunch of features that need the egui user interface framework to work.
|
|
egui = ["dep:baseview", "dep:egui-baseview", "dep:egui", "dep:egui_extras", "pot-browser"]
|
|
|
|
# Regenerate bindings (for dialog resource IDs and EEL functions)
|
|
generate = []
|
|
|
|
[dependencies]
|
|
# Own
|
|
base.workspace = true
|
|
reaper-rx.workspace = true
|
|
reaper-high = { workspace = true, features = ["sentry"] }
|
|
reaper-medium.workspace = true
|
|
reaper-common-types = { workspace = true, features = ["color-macros", "palette"] }
|
|
reaper-low.workspace = true
|
|
reaper-macros.workspace = true
|
|
swell-ui.workspace = true
|
|
rx-util.workspace = true
|
|
pot.workspace = true
|
|
helgobox-api.workspace = true
|
|
# For obtaining dialog constants from dialog crate
|
|
helgobox-dialogs.workspace = true
|
|
# In future (when helgoboss-learn has matured), this will become a crates.io dependency
|
|
helgoboss-learn.workspace = true
|
|
helgoboss-midi.workspace = true
|
|
helgoboss-license-api.workspace = true
|
|
playtime-api.workspace = true
|
|
playtime-clip-engine = { workspace = true, optional = true }
|
|
|
|
# 3rd-party
|
|
# For easier error handling
|
|
anyhow.workspace = true
|
|
# For being able to (de)serialize using FromStr and Display
|
|
serde_with.workspace = true
|
|
# For panicking when accessing something from the wrong thread
|
|
fragile.workspace = true
|
|
# For acting as DAW plug-in
|
|
vst.workspace = true
|
|
rxrust.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
serde_repr.workspace = true
|
|
derive_more.workspace = true
|
|
num_enum.workspace = true
|
|
crossbeam-channel.workspace = true
|
|
scopeguard.workspace = true
|
|
uuid = { workspace = true, features = ["v4", "serde"] }
|
|
# New logging (for Playtime matrix)
|
|
tracing.workspace = true
|
|
tracing-core.workspace = true
|
|
tracing-subscriber = { workspace = true, features = ["env-filter"] }
|
|
# For interacting with the OS clipboard
|
|
arboard.workspace = true
|
|
once_cell.workspace = true
|
|
# For being able to exclude fields from the derived Debug implementation
|
|
derivative.workspace = true
|
|
chrono.workspace = true
|
|
smallvec.workspace = true
|
|
regex.workspace = true
|
|
enum-map.workspace = true
|
|
# For generating controller file names from controller names
|
|
slug.workspace = true
|
|
# For generating random session IDs
|
|
nanoid.workspace = true
|
|
# For ReaLearn's servers
|
|
futures.workspace = true
|
|
tokio.workspace = true
|
|
tokio-stream.workspace = true
|
|
tower.workspace = true
|
|
# For ReaLearn's http server (used for projection)
|
|
axum = { workspace = true, features = ["ws"] }
|
|
# Use "tls-rustls-no-provider" instead of "tls-rustls" because we want to use "ring" for
|
|
# cryptography instead of "aws-lc-rs" (because the latter causes build issues on Windows)
|
|
axum-server = { workspace = true, features = ["tls-rustls-no-provider"] }
|
|
rustls = { workspace = true, features = ["ring"] }
|
|
tower-http = { workspace = true, features = ["cors"] }
|
|
# For ReaLearn's gRPC server
|
|
tonic.workspace = true
|
|
prost.workspace = true
|
|
# For generating projection QR code
|
|
qrcode.workspace = true
|
|
# For rendering projection QR code to PNG
|
|
image = { workspace = true, features = ["png"] }
|
|
# For generating self-signed certificate for projection web server
|
|
rcgen.workspace = true
|
|
# For showing different ways of connecting to this computer (projection feature)
|
|
dns-lookup.workspace = true
|
|
hostname.workspace = true
|
|
# For rendering projection setup HTML page template
|
|
askama.workspace = true
|
|
# For persisting app configuration
|
|
serde_ini.workspace = true
|
|
# For opening projection setup page and companion app in local browser
|
|
webbrowser.workspace = true
|
|
# For writing generated projection setup page to disk
|
|
tempfile.workspace = true
|
|
# For adding firewall rules
|
|
runas.workspace = true
|
|
# For building URls, e.g. companion web app URL
|
|
url.workspace = true
|
|
# For grouping mappings by virtual control elements and grouping outgoing OSC messages by device
|
|
itertools.workspace = true
|
|
# For being able to configure logging via environment variable RUST_LOG
|
|
env_logger.workspace = true
|
|
# To open user guide in local PDF app
|
|
open.workspace = true
|
|
# For comparing ReaLearn versions in order to determine if preset migration is necessary
|
|
semver.workspace = true
|
|
# Maybe better asynchronous channel than in futures or tokio (basically the async version of crossbeam)
|
|
async-channel.workspace = true
|
|
# For displaying snapshot sizes
|
|
bytesize.workspace = true
|
|
# For OSC
|
|
rosc.workspace = true
|
|
# For letting the user edit advanced mapping settings
|
|
edit.workspace = true
|
|
# For parsing/formatting advanced mapping settings
|
|
serde_yaml.workspace = true
|
|
# For parsing hexadecimal data notation to byte vector (for system-exclusive lifecycle MIDI messages)
|
|
hex.workspace = true
|
|
# For evaluation of <Dynamic> formulas
|
|
fasteval = { workspace = true, default-features = false }
|
|
# For wildcard support when using "By name" selector
|
|
wildmatch.workspace = true
|
|
# For creating HashSet literals for projection feedback and in unit tests
|
|
maplit.workspace = true
|
|
# For easier support of named virtual control elements
|
|
ascii.workspace = true
|
|
# For using bit flags in the reaper-rs API.
|
|
enumflags2.workspace = true
|
|
# For detecting undesired (de)allocation in real-time threads.
|
|
helgobox-allocator.workspace = true
|
|
# For being able to cleanly implement targets in separate files without needing to resort to dynamic dispatch.
|
|
enum_dispatch.workspace = true
|
|
# For processing mappings in user-defined order
|
|
indexmap = { workspace = true }
|
|
# For comparing floating point numbers in tests
|
|
approx.workspace = true
|
|
# For the API (ReaLearn Script) and MIDI scripts
|
|
mlua.workspace = true
|
|
# For convenient converting prop key to prop enum variant
|
|
strum.workspace = true
|
|
metrics.workspace = true
|
|
metrics-exporter-prometheus = { workspace = true, default-features = false }
|
|
# For parsing OSC argument value ranges
|
|
nom.workspace = true
|
|
# For being able to return iterators of different types
|
|
either.workspace = true
|
|
# For reading preset directories recursively
|
|
walkdir.workspace = true
|
|
# For egui graphics
|
|
egui-baseview = { workspace = true, optional = true }
|
|
baseview = { workspace = true, optional = true }
|
|
egui = { workspace = true, optional = true }
|
|
egui_extras = { workspace = true, optional = true }
|
|
# Pot Browser
|
|
pot-browser = { workspace = true, optional = true }
|
|
# For decompressing App
|
|
zstd = "0.13.0"
|
|
tar = "0.4.40"
|
|
# For loading App
|
|
libloading.workspace = true
|
|
# For embedding factory presets into the binary
|
|
include_dir.workspace = true
|
|
# For prefixing preset IDs with the user name
|
|
whoami.workspace = true
|
|
# For passing MIDI device inquiry replies from audio thread to main thread
|
|
tinyvec.workspace = true
|
|
# For not having to deal with non-UTF8 paths if we are sure we don't have them
|
|
camino.workspace = true
|
|
# For not having to manually implement Lua module finder trait for smart pointers
|
|
auto_impl.workspace = true
|
|
# For some color in the otherwise boring GUI
|
|
palette.workspace = true
|
|
# For parsing/formatting enum-like target values from/to a stable and ID-like representation
|
|
serde_plain.workspace = true
|
|
# For sharing variables between main thread and real-time threads
|
|
atomic.workspace = true
|
|
# For making sure that sharing global audio state uses atomics
|
|
static_assertions.workspace = true
|
|
# For Stream Deck support
|
|
streamdeck.workspace = true
|
|
# For Stream Deck support
|
|
ab_glyph.workspace = true
|
|
# For Stream Deck support
|
|
hidapi.workspace = true
|
|
# For caching button images for Stream Deck
|
|
cached.workspace = true
|
|
# For drawing knobs for Stream Deck button
|
|
imageproc.workspace = true
|
|
# For relativizing paths for Stream Deck button images
|
|
pathdiff.workspace = true
|
|
# For fetching Helgobox remote config.
|
|
# Important to not use default features because we want to avoid the libssl dependency on Linux.
|
|
reqwest = { workspace = true, default-features = false, features = ["rustls-tls-no-provider"] }
|
|
# For MIDI clock processing
|
|
simple_moving_average.workspace = true
|
|
|
|
[target.'cfg(any(target_os = "windows", target_os = "macos"))'.dependencies]
|
|
# For speech source
|
|
tts.workspace = true
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
# For detecting the Windows version (to determine whether special characters can be displayed)
|
|
sys-info.workspace = true
|
|
# For converting virtual umlaut/special keys into character codes (keyboard source)
|
|
winapi = { workspace = true, features = ["winuser"] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
# For taking screenshots for docs
|
|
xcap.workspace = true
|
|
# For taking screenshots for docs
|
|
dirs.workspace = true
|
|
|
|
|
|
[build-dependencies]
|
|
# For making Git commit hash available to code
|
|
built = { workspace = true, features = ["git2", "chrono"] }
|
|
# For generating bindings (for dialog resource IDs and EEL functions)
|
|
bindgen.workspace = true
|
|
# For compiling EEL and SWELL dialog resources
|
|
cc.workspace = true
|
|
# For embedding dialog resource files on Windows
|
|
embed-resource.workspace = true
|
|
# For RC dialog file generation
|
|
helgobox-dialogs.workspace = true
|
|
|
|
[dev-dependencies]
|
|
# For the EEL memory consumption test
|
|
sysinfo.workspace = true
|
|
|
|
[lib]
|
|
name = "helgobox"
|
|
crate-type = ["cdylib"]
|
|
|
|
|
|
[lints.clippy]
|
|
# TODO-high-refactoring Activate at some point. For now it's just too much to handle.
|
|
#enum_glob_use = "deny" |