Cross-compile groundwork: make the tree build for Windows (3.1)
`cargo check --target x86_64-pc-windows-gnu` is now green (only the upstream egui f32:From<f64> warnings). The Linux-only desktop deps are target-gated so the rest of the stack — which already cross-compiles — can build off Linux: - Cargo.toml: ksni and rfd's xdg-portal backend move to [target.'cfg(target_os = "linux")'.dependencies]; non-Linux gets rfd with its native Win32/AppKit backend (default features). - tray.rs: cfg-split. The ksni/SNI implementation stays Linux-only; other OSes get a no-op `start() -> None`, i.e. windowed-only (identical to the Linux no-SNI-host path). TrayEvent/TrayHandle stay cross-platform. - plex.rs: add a Windows `symlink_file` arm to make_symlink (also fixes an unused-variable warning on non-unix). The rest was already portable (disk_space/statvfs, mpv IPC UnixStream, chmod/PermissionsExt guards all cfg(unix)). macOS is Unix so those apply there unchanged. Still not a *shipped* binary: needs a real per-OS tray backend and a linking CI matrix. ROADMAP 3.1 + CLAUDE.md updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
ec8cf6f934
commit
d797f2a698
6 changed files with 80 additions and 18 deletions
24
ROADMAP.md
24
ROADMAP.md
|
|
@ -126,13 +126,25 @@ instead of cascading one handler's panic into a dead server.
|
|||
|
||||
Once we're at parity, we push past Tartube on its own ground.
|
||||
|
||||
### 3.1 Cross-compile macOS + Windows binaries
|
||||
### 3.1 Cross-compile macOS + Windows binaries — GROUNDWORK DONE
|
||||
|
||||
The Linux packaging (1.8) is done; this is the natural next reach. Blocked
|
||||
on abstracting the Linux-only bits behind a per-OS backend — the `ksni`
|
||||
tray and the `rfd` xdg-portal file dialog have no Windows/macOS path yet.
|
||||
Once the tray is a trait with per-OS impls, the rest of the stack
|
||||
(eframe/wgpu, axum, rusqlite-bundled) already cross-compiles.
|
||||
The compile blockers are cleared: `cargo check --target
|
||||
x86_64-pc-windows-gnu` is green (only the upstream egui `f32: From<f64>`
|
||||
warnings). The Linux-only deps are now target-gated in `Cargo.toml` —
|
||||
`ksni` and `rfd`'s `xdg-portal` backend are `cfg(target_os = "linux")`
|
||||
only, with `rfd` falling back to its native Win32/AppKit backend
|
||||
elsewhere. `tray::start` is `cfg`-split: the SNI/ksni implementation on
|
||||
Linux, a no-op `None` stub on other OSes (windowed-only, exactly the
|
||||
no-SNI-host behavior). The rest was already portable — `disk_space`
|
||||
(`statvfs`), `plex` (symlinks; now with a Windows `symlink_file` path),
|
||||
the mpv IPC `UnixStream`, and the `chmod`/`PermissionsExt` guards are all
|
||||
`cfg(unix)`-gated. macOS is Unix, so those paths apply there unchanged.
|
||||
|
||||
Remaining for a shipped binary: a real per-OS tray backend (e.g.
|
||||
`tray-icon`) if the tray is wanted off Linux; a CI matrix that actually
|
||||
*links* (mingw-w64 / an osxcross or macOS runner) and produces artifacts;
|
||||
and runtime testing on each OS. The hard part — making the tree compile
|
||||
off Linux — is done.
|
||||
|
||||
### 3.2 Android client
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue