Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
107 lines (96 loc) · 3.74 KB
/
Copy pathCargo.toml
File metadata and controls
107 lines (96 loc) · 3.74 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
[workspace]
resolver = "3"
members = ["crates/*", "apps/*", "xtask"]
default-members = ["crates/*", "apps/rustgis", "apps/rustgis-cli", "xtask"]
[workspace.package]
version = "0.2.0"
edition = "2024"
license = "Apache-2.0"
rust-version = "1.90"
repository = "https://github.com/opengeos/RustGIS"
[workspace.dependencies]
# internal
rustgis-geom = { path = "crates/geom" }
rustgis-data = { path = "crates/data" }
rustgis-map = { path = "crates/map" }
rustgis-analysis = { path = "crates/analysis" }
rustgis-render = { path = "crates/render" }
rustgis-engine = { path = "crates/engine" }
rustgis-ui-egui = { path = "crates/ui-egui" }
rustgis-geolibre = { path = "crates/geolibre" }
rustgis-plugins = { path = "crates/plugins" }
rustgis-tiles = { path = "crates/tiles" }
rustgis-assistant = { path = "crates/assistant" }
# foundation
thiserror = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
sha2 = "0.10"
log = "0.4"
# std::time that also works in the browser (std panics on wasm32-unknown-unknown).
web-time = "1"
# geo / formats / rendering
geo = "0.33"
shapefile = "0.9"
csv = "1"
tiny-skia = "0.12"
image = { version = "0.25", default-features = false, features = ["png"] }
ab_glyph = "0.2"
# Rasters: GeoTIFF decoding/encoding, and coordinate systems by EPSG code (pure Rust, except the
# Zstandard decoder `rustgis-data` turns on, C that clang compiles for the browser build too).
tiff = "0.11"
# The tests' Zstandard-compressed GeoTIFFs (the version the tiff crate decodes with).
zstd = { version = "0.13", default-features = false }
proj4rs = { version = "0.2", default-features = false }
crs-definitions = { version = "0.6", default-features = false, features = ["proj4"] }
base64 = "0.22"
# Deflate for PDF image streams.
miniz_oxide = "0.8"
roxmltree = "0.21"
epaint_default_fonts = "0.36"
# Vector data providers: GeoParquet (pure Rust, so the browser reads it too), FlatGeobuf and
# GeoPackage (SQLite, desktop only).
# Read without Arrow, which would make the web app's WebAssembly far larger (Arrow is only used
# by the tests, to write sample files).
parquet = { version = "60", default-features = false, features = ["snap", "lz4", "flate2", "flate2-rust_backend"] }
arrow-array = { version = "60", default-features = false }
arrow-schema = { version = "60", default-features = false }
bytes = "1"
flatgeobuf = { version = "6", default-features = false }
geozero = { version = "0.15", default-features = false, features = ["with-wkb"] }
rusqlite = { version = "0.40", features = ["bundled"] }
# Excel and OpenDocument spreadsheets, in pure Rust (the browser too).
calamine = { version = "0.36", default-features = false }
laz = { version = "0.13", default-features = false }
# Zarr chunk codecs, in pure Rust (the browser too): LZ4 (blosc's usual codec; already in the
# build through parquet) and a zstd decoder.
lz4_flex = { version = "0.14", default-features = false, features = ["std", "safe-decode", "checked-decode"] }
ruzstd = { version = "0.9", default-features = false, features = ["std"] }
# ui
egui = "0.36"
egui_extras = { version = "0.36", default-features = false }
eframe = { version = "0.36", default-features = false }
egui_kittest = "0.36"
rfd = "0.17"
[workspace.lints.rust]
unsafe_code = "forbid"
[workspace.lints.clippy]
dbg_macro = "warn"
todo = "warn"
too_many_arguments = "allow"
type_complexity = "allow"
[profile.dev.package."*"]
opt-level = 2
[profile.dev]
opt-level = 1
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 16
# The web app's build (Trunk, `data-cargo-profile` in apps/rustgis-web/index.html): whole-program
# LTO in one codegen unit makes the WebAssembly about a sixth smaller, a quicker download for
# the web app. Slower to build, so native releases keep thin LTO.
[profile.web]
inherits = "release"
lto = "fat"
codegen-units = 1