aboutsummaryrefslogtreecommitdiff
path: root/docs/WindowsOnLinux.md
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-03-23 12:23:19 +0100
committerGitHub Enterprise <[email protected]>2026-03-23 12:23:19 +0100
commit26aa50677403e4c5ad053b221bc7264fe1d249f2 (patch)
treede196528390e8875b0551d52071038120d969f73 /docs/WindowsOnLinux.md
parentProcess management improvements (#881) (diff)
downloadzen-26aa50677403e4c5ad053b221bc7264fe1d249f2.tar.xz
zen-26aa50677403e4c5ad053b221bc7264fe1d249f2.zip
Documentation updates (#882)
Restructured the docs folder in preparation for more docs. Improved the contents a bit.
Diffstat (limited to 'docs/WindowsOnLinux.md')
-rw-r--r--docs/WindowsOnLinux.md109
1 files changed, 0 insertions, 109 deletions
diff --git a/docs/WindowsOnLinux.md b/docs/WindowsOnLinux.md
deleted file mode 100644
index 540447cb2..000000000
--- a/docs/WindowsOnLinux.md
+++ /dev/null
@@ -1,109 +0,0 @@
-# Cross-Compiling Windows Binaries on Linux
-
-This document describes how to build `zenserver.exe` and `zen.exe` for Windows
-from a Linux host using clang-cl, lld-link, and the Windows SDK fetched via
-[xwin](https://github.com/Jake-Shadle/xwin).
-
-## Prerequisites
-
-- **LLVM/Clang 17+** with the following tools (typically in `/usr/lib/llvm-<ver>/bin/`):
- - `clang` (used as `clang-cl` via `--driver-mode=cl`)
- - `lld-link`
- - `llvm-lib`
- - `llvm-rc`
- - `llvm-ml`
- - `llvm-mt`
-
- On Ubuntu/Debian:
- ```bash
- sudo apt install clang-18 lld-18 llvm-18
- ```
-
-- **xmake** (build system) — see [xmake.io](https://xmake.io) for installation.
-
-## Step 1: Fetch the Windows SDK
-
-Run the provided script to download the Windows SDK and MSVC CRT headers/libs:
-
-```bash
-./scripts/win_cross/get_win_sdk.sh
-```
-
-This downloads the SDK to `~/.xwin-sdk` by default. Override the location with
-an argument or the `$XWIN_SDK_DIR` environment variable:
-
-```bash
-./scripts/win_cross/get_win_sdk.sh /path/to/sdk
-```
-
-The script also creates:
-- Tool wrapper scripts (clang-cl, lld-link, llvm-lib, etc.) in the SDK `bin/` directory
-- An MSVC-compatible directory layout that xmake's built-in clang-cl toolchain can discover
-- Debug CRT lib symlinks so cmake package builds succeed
-
-## Step 2: Configure and Build
-
-```bash
-xmake config -y -p windows -a x64 \
- --toolchain=clang-cl \
- --sdk=$HOME/.xwin-sdk \
- --mrc=$HOME/.xwin-sdk/bin/x64/rc.exe \
- -m release \
- --zensentry=n \
- --zenmimalloc=n
-
-xmake
-```
-
-### Notes
-
-- **`--sdk` must use an absolute path** — `$HOME/.xwin-sdk` works, but
- `~/.xwin-sdk` does not (xmake doesn't expand `~`).
-- **`--mrc`** points to the resource compiler wrapper. Without it, xmake can't
- auto-detect `llvm-rc` (it doesn't support `--version`).
-- **`--zensentry=no`** is recommended — crashpad (used by sentry-native) is
- difficult to cross-compile.
-- **`--zenmimalloc=no`** is recommended initially to reduce the package surface.
-- **LTO is automatically disabled** for cross-compilation builds.
-
-## Step 3: Verify
-
-```bash
-file build/windows/x64/release/zenserver.exe
-# PE32+ executable (console) x86-64, for MS Windows, 12 sections
-
-file build/windows/x64/release/zen.exe
-# PE32+ executable (console) x86-64, for MS Windows, 12 sections
-```
-
-## Running with Wine (optional)
-
-The resulting binaries can be run under Wine for testing:
-
-```bash
-wine build/windows/x64/release/zenserver.exe --help
-```
-
-## Troubleshooting
-
-### Library not found (case sensitivity)
-
-The Windows SDK ships headers and libs with specific casing (e.g. `DbgHelp.h`,
-`ws2_32.lib`). Linux filesystems are case-sensitive, so `#include <Dbghelp.h>`
-won't find `DbgHelp.h`. The codebase uses lowercase includes where possible. If
-you encounter a missing header/lib, check the actual casing in the SDK directory.
-
-### `add_ldflags(...) is ignored`
-
-xmake's auto flag checker may reject MSVC linker flags when using clang-cl. Add
-`{force = true}` to the `add_ldflags()` call.
-
-### Stale build state
-
-If you hit unexpected errors after changing toolchain settings, clean everything:
-
-```bash
-rm -rf .xmake build ~/.xmake
-```
-
-Then reconfigure and rebuild.