[workspace]
resolver = "2"
members = [
    "crates/ecolor",
    "crates/egui_demo_app",
    "crates/egui_demo_lib",
    "crates/egui_extras",
    "crates/egui_glow",
    "crates/egui_plot",
    "crates/egui-wgpu",
    "crates/egui-winit",
    "crates/egui",
    "crates/emath",
    "crates/epaint",

    "examples/*",
]

[workspace.package]
edition = "2021"
license = "MIT OR Apache-2.0"
rust-version = "1.72"
version = "0.26.2"


[profile.release]
# lto = true # VERY slightly smaller wasm
# opt-level = 's' # 10-20% smaller wasm compared to `opt-level = 3`
# opt-level = 1 # very slow and big wasm. Don't do this.
opt-level = 2 # fast and small wasm, basically same as `opt-level = 's'`
# opt-level = 3 # unnecessarily large wasm for no performance gain

# debug = true # include debug symbols, useful when profiling wasm

panic = "abort" # This leads to better optimizations and smaller binaries (and is the default in Wasm anyways).


[profile.dev]
# Can't leave this on by default, because it breaks the Windows build. Related: https://github.com/rust-lang/cargo/issues/4897
# split-debuginfo = "unpacked" # faster debug builds on mac
# opt-level = 1                # Make debug builds run faster

panic = "abort" # This leads to better optimizations and smaller binaries (and is the default in Wasm anyways).

[profile.dev.package."*"]
# Optimize all dependencies even in debug builds (does not affect workspace packages):
opt-level = 2


[workspace.dependencies]
emath = { version = "0.26.2", path = "crates/emath", default-features = false }
ecolor = { version = "0.26.2", path = "crates/ecolor", default-features = false }
epaint = { version = "0.26.2", path = "crates/epaint", default-features = false }
egui = { version = "0.26.2", path = "crates/egui", default-features = false }
egui_plot = { version = "0.26.2", path = "crates/egui_plot", default-features = false }
egui-winit = { version = "0.26.2", path = "crates/egui-winit", default-features = false }
egui_extras = { version = "0.26.2", path = "crates/egui_extras", default-features = false }
egui-wgpu = { version = "0.26.2", path = "crates/egui-wgpu", default-features = false }
egui_demo_lib = { version = "0.26.2", path = "crates/egui_demo_lib", default-features = false }
egui_glow = { version = "0.26.2", path = "crates/egui_glow", default-features = false }
eframe = { version = "0.26.2", path = "crates/eframe", default-features = false }

#TODO(emilk): make more things workspace dependencies
ahash = { version = "0.8.6", default-features = false, features = [
    "no-rng", # we don't need DOS-protection, so we let users opt-in to it instead
    "std",
] }
backtrace = "0.3"
criterion = { version = "0.5.1", default-features = false }
document-features = " 0.2.8"
glow = "0.13"
log = { version = "0.4", features = ["std"] }
nohash-hasher = "0.2"
parking_lot = "0.12"
puffin = "0.19"
puffin_http = "0.16"
raw-window-handle = "0.6.0"
thiserror = "1.0.37"
web-time = "0.2" # Timekeeping for native and web
wgpu = { version = "0.19.1", default-features = false, features = [
    # Make the renderer `Sync` even on wasm32, because it makes the code simpler:
    "fragile-send-sync-non-atomic-wasm",
] }
winit = { version = "0.29.4", default-features = false }
