mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-04-03 20:03:50 +00:00
Replace the single Ubuntu-based container build with a dedicated Dockerfile, build script, and launcher for each target platform. Infrastructure: - Add .dockerignore to minimize Docker build context - Add container/builder-linux.Dockerfile (Ubuntu 24.04, GCC, native build) - Add container/builder-macos.Dockerfile (multi-stage: SDK fetcher + osxcross/Clang 18) - Add container/builder-windows.Dockerfile (LLVM-MinGW 20240619, vcpkg) - Add container/macos/sdk-fetcher.py (auto-fetch macOS SDK from Apple catalog) - Add container/macos/osxcross-toolchain.cmake (auto-detecting CMake toolchain) - Add container/macos/triplets/arm64-osx-cross.cmake - Add container/macos/triplets/x64-osx-cross.cmake - Remove container/builder-ubuntu.Dockerfile (replaced by per-platform Dockerfiles) - Remove container/build-in-container.sh and container/build-wowee.sh (replaced) Build scripts (run inside containers): - Add container/build-linux.sh (tar copy, FidelityFX clone, cmake/ninja) - Add container/build-macos.sh (arch detection, vcpkg triplet, cross-compile) - Add container/build-windows.sh (Vulkan import lib via dlltool, cross-compile) Launcher scripts (run on host): - Add container/run-linux.sh, run-macos.sh, run-windows.sh (bash) - Add container/run-linux.ps1, run-macos.ps1, run-windows.ps1 (PowerShell) Documentation: - Add container/README.md (quick start, options, file structure, troubleshooting) - Add container/FLOW.md (comprehensive build flow for each platform) CMake changes: - Add macOS cross-compile support (VulkanHeaders, -undefined dynamic_lookup) - Add LLVM-MinGW/Windows cross-compile support - Detect osxcross toolchain and vcpkg triplets Other: - Update vcpkg.json with ffmpeg feature flags - Update resources/wowee.rc version string
119 lines
3.6 KiB
Markdown
119 lines
3.6 KiB
Markdown
# Container Builds
|
|
|
|
Build WoWee for **Linux**, **macOS**, or **Windows** with a single command.
|
|
All builds run inside Docker — no toolchains to install on your host.
|
|
|
|
## Prerequisites
|
|
|
|
- [Docker](https://docs.docker.com/get-docker/) (Docker Desktop on Windows/macOS, or Docker Engine on Linux)
|
|
- ~20 GB free disk space (toolchains + vcpkg packages are cached in the Docker image)
|
|
|
|
## Quick Start
|
|
|
|
Run **from the project root directory**.
|
|
|
|
### Linux (native amd64)
|
|
|
|
```bash
|
|
# Bash / Linux / macOS terminal
|
|
./container/run-linux.sh
|
|
```
|
|
```powershell
|
|
# PowerShell (Windows)
|
|
.\container\run-linux.ps1
|
|
```
|
|
|
|
Output: `build/linux/bin/wowee`
|
|
|
|
### macOS (cross-compile, arm64 default)
|
|
|
|
```bash
|
|
./container/run-macos.sh
|
|
```
|
|
```powershell
|
|
.\container\run-macos.ps1
|
|
```
|
|
|
|
Output: `build/macos/bin/wowee`
|
|
|
|
For Intel (x86_64):
|
|
```bash
|
|
MACOS_ARCH=x86_64 ./container/run-macos.sh
|
|
```
|
|
```powershell
|
|
.\container\run-macos.ps1 -Arch x86_64
|
|
```
|
|
|
|
### Windows (cross-compile, x86_64)
|
|
|
|
```bash
|
|
./container/run-windows.sh
|
|
```
|
|
```powershell
|
|
.\container\run-windows.ps1
|
|
```
|
|
|
|
Output: `build/windows/bin/wowee.exe`
|
|
|
|
## Options
|
|
|
|
| Option | Bash | PowerShell | Description |
|
|
|--------|------|------------|-------------|
|
|
| Rebuild image | `--rebuild-image` | `-RebuildImage` | Force a fresh Docker image build |
|
|
| macOS arch | `MACOS_ARCH=x86_64` | `-Arch x86_64` | Build for Intel instead of Apple Silicon |
|
|
| FidelityFX SDK repo | `WOWEE_FFX_SDK_REPO=<url>` | `$env:WOWEE_FFX_SDK_REPO="<url>"` | Custom FidelityFX SDK git URL |
|
|
| FidelityFX SDK ref | `WOWEE_FFX_SDK_REF=<ref>` | `$env:WOWEE_FFX_SDK_REF="<ref>"` | Custom FidelityFX SDK git ref/tag |
|
|
|
|
## Docker Image Caching
|
|
|
|
The first build takes longer because Docker builds the toolchain image (installing compilers, vcpkg packages, etc.). Subsequent builds reuse the cached image and only run the compilation step.
|
|
|
|
To force a full image rebuild:
|
|
```bash
|
|
./container/run-linux.sh --rebuild-image
|
|
```
|
|
|
|
## Output Locations
|
|
|
|
| Target | Binary | Size |
|
|
|--------|--------|------|
|
|
| Linux | `build/linux/bin/wowee` | ~135 MB |
|
|
| macOS | `build/macos/bin/wowee` | ~40 MB |
|
|
| Windows | `build/windows/bin/wowee.exe` | ~135 MB |
|
|
|
|
## File Structure
|
|
|
|
```
|
|
container/
|
|
├── run-linux.sh / .ps1 # Host launchers (bash / PowerShell)
|
|
├── run-macos.sh / .ps1
|
|
├── run-windows.sh / .ps1
|
|
├── build-linux.sh # Container entrypoints (run inside Docker)
|
|
├── build-macos.sh
|
|
├── build-windows.sh
|
|
├── builder-linux.Dockerfile # Docker image definitions
|
|
├── builder-macos.Dockerfile
|
|
├── builder-windows.Dockerfile
|
|
├── macos/
|
|
│ ├── sdk-fetcher.py # Auto-fetches macOS SDK from Apple's catalog
|
|
│ ├── osxcross-toolchain.cmake # CMake toolchain for osxcross
|
|
│ └── triplets/ # vcpkg cross-compile triplets
|
|
│ ├── arm64-osx-cross.cmake
|
|
│ └── x64-osx-cross.cmake
|
|
├── README.md # This file
|
|
└── FLOW.md # Detailed build flow documentation
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
**"docker is not installed or not in PATH"**
|
|
Install Docker and ensure the `docker` command is available in your terminal.
|
|
|
|
**Build fails on first run**
|
|
Some vcpkg packages (ffmpeg, SDL2) take a while to compile. Ensure you have enough RAM (4 GB+) and disk space.
|
|
|
|
**macOS build: "could not find osxcross compiler"**
|
|
The Docker image may not have built correctly. Run with `--rebuild-image` to rebuild from scratch.
|
|
|
|
**Windows build: linker errors about vulkan-1.dll**
|
|
The build script auto-generates a Vulkan import library. If this fails, ensure the Docker image has `libvulkan-dev` installed (it should, by default).
|