backend-infra-engineer: Post v0.3.9-hotfix7 snapshot (build cleanup)
This commit is contained in:
@@ -1,149 +1,185 @@
|
||||
# Build & Test Quick Reference
|
||||
# Build and Test Quick Reference
|
||||
|
||||
Use this document as the single source of truth for configuring, building, and testing YAZE across
|
||||
platforms. Other guides (README, CLAUDE.md, GEMINI.md, etc.) should link here instead of duplicating
|
||||
steps.
|
||||
This document is the single source of truth for configuring, building, and testing YAZE on all platforms. Other documentation files link here rather than duplicating these instructions.
|
||||
|
||||
## 1. Environment Prep
|
||||
- Clone with submodules: `git clone --recursive https://github.com/scawful/yaze.git`
|
||||
- Run the verifier once per machine:
|
||||
- macOS/Linux: `./scripts/verify-build-environment.sh --fix`
|
||||
- Windows PowerShell: `.\scripts\verify-build-environment.ps1 -FixIssues`
|
||||
---
|
||||
|
||||
## 1. Environment Setup
|
||||
|
||||
### Clone the Repository
|
||||
|
||||
```bash
|
||||
git clone --recursive https://github.com/scawful/yaze.git
|
||||
cd yaze
|
||||
```
|
||||
|
||||
### Verify Your Environment
|
||||
|
||||
Run the verification script once per machine to check dependencies and fix common issues:
|
||||
|
||||
**macOS / Linux:**
|
||||
```bash
|
||||
./scripts/verify-build-environment.sh --fix
|
||||
```
|
||||
|
||||
**Windows (PowerShell):**
|
||||
```powershell
|
||||
.\scripts\verify-build-environment.ps1 -FixIssues
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Build Presets
|
||||
Use `cmake --preset <name>` followed by `cmake --build --preset <name> [--target …]`.
|
||||
|
||||
| Preset | Platform(s) | Notes |
|
||||
|-------------|-------------|-------|
|
||||
| `mac-dbg`, `lin-dbg`, `win-dbg` | macOS/Linux/Windows | Standard debug builds, tests on by default. |
|
||||
| `mac-ai`, `lin-ai`, `win-ai` | macOS/Linux/Windows | Enables gRPC, agent UI, `z3ed`, and AI runtime. |
|
||||
| `mac-rel`, `lin-rel`, `win-rel` | macOS/Linux/Windows | Optimized release builds. |
|
||||
| `mac-dev`, `lin-dev`, `win-dev` | macOS/Linux/Windows | Development builds with ROM-dependent tests enabled. |
|
||||
| `mac-uni` | macOS | Universal binary (ARM64 + x86_64) for distribution. |
|
||||
| `ci-*` presets | Platform-specific | Mirrors CI matrix; see `CMakePresets.json`. |
|
||||
YAZE uses CMake presets for consistent builds. Configure with `cmake --preset <name>`, then build with `cmake --build --preset <name>`.
|
||||
|
||||
**Verbose builds**: add `-v` suffix (e.g., `mac-dbg-v`, `lin-dbg-v`, `win-dbg-v`) to turn off compiler warning suppression.
|
||||
### Available Presets
|
||||
|
||||
## 3. AI/Assistant Build Policy
|
||||
- Human developers typically use `build` or `build_test` directories.
|
||||
- AI assistants **must use dedicated directories** (`build_ai`, `build_agent`, etc.) to avoid
|
||||
clobbering user builds.
|
||||
- When enabling AI features, prefer the `*-ai` presets and target only the binaries you need
|
||||
(`yaze`, `z3ed`, `yaze_test`, …).
|
||||
- Windows helpers: use `scripts/agents/windows-smoke-build.ps1` for quick builds and `scripts/agents/run-tests.sh` (or its PowerShell equivalent) for test runs so preset + generator settings stay consistent.
|
||||
| Preset | Platform | Description |
|
||||
|--------|----------|-------------|
|
||||
| `mac-dbg`, `lin-dbg`, `win-dbg` | macOS / Linux / Windows | Standard debug builds with tests enabled |
|
||||
| `mac-ai`, `lin-ai`, `win-ai` | macOS / Linux / Windows | Full AI stack: gRPC, agent UI, z3ed CLI, AI runtime |
|
||||
| `mac-rel`, `lin-rel`, `win-rel` | macOS / Linux / Windows | Optimized release builds |
|
||||
| `mac-dev`, `lin-dev`, `win-dev` | macOS / Linux / Windows | Development builds with ROM-dependent tests |
|
||||
| `mac-uni` | macOS | Universal binary (ARM64 + x86_64) for distribution |
|
||||
| `mac-test`, `lin-test`, `win-test` | All | Optimized builds for fast test iteration |
|
||||
| `ci-*` | Platform-specific | CI/CD configurations (see CMakePresets.json) |
|
||||
|
||||
## 4. Common Commands
|
||||
**Tip:** Add `-v` suffix (e.g., `mac-dbg-v`) to enable verbose compiler warnings.
|
||||
|
||||
---
|
||||
|
||||
## 3. Build Directory Policy
|
||||
|
||||
| Build Type | Default Directory |
|
||||
|------------|-------------------|
|
||||
| Native (desktop/CLI) | `build/` |
|
||||
| WASM | `build-wasm/` |
|
||||
|
||||
If you need per-user or per-agent isolation, create a local `CMakeUserPresets.json` that points `binaryDir` to a custom path.
|
||||
|
||||
Example:
|
||||
```bash
|
||||
cp CMakeUserPresets.json.example CMakeUserPresets.json
|
||||
export YAZE_BUILD_ROOT="$HOME/.cache/yaze"
|
||||
cmake --preset dev-local
|
||||
cmake --build --preset dev-local --target yaze
|
||||
```
|
||||
|
||||
For AI-enabled builds, use the `*-ai` presets and specify only the targets you need:
|
||||
```bash
|
||||
cmake --build --preset mac-ai --target yaze z3ed
|
||||
```
|
||||
|
||||
**Windows Helper Scripts:**
|
||||
- Quick builds: `scripts/agents/windows-smoke-build.ps1`
|
||||
- Test runs: `scripts/agents/run-tests.sh` (or PowerShell equivalent)
|
||||
|
||||
---
|
||||
|
||||
## 4. Common Build Commands
|
||||
|
||||
### Standard Debug Build
|
||||
|
||||
**macOS:**
|
||||
```bash
|
||||
# Debug GUI build (macOS)
|
||||
cmake --preset mac-dbg
|
||||
cmake --build --preset mac-dbg --target yaze
|
||||
```
|
||||
|
||||
# Debug GUI build (Linux)
|
||||
**Linux:**
|
||||
```bash
|
||||
cmake --preset lin-dbg
|
||||
cmake --build --preset lin-dbg --target yaze
|
||||
```
|
||||
|
||||
# Debug GUI build (Windows)
|
||||
**Windows:**
|
||||
```bash
|
||||
cmake --preset win-dbg
|
||||
cmake --build --preset win-dbg --target yaze
|
||||
```
|
||||
|
||||
# AI-enabled build with gRPC (macOS)
|
||||
### AI-Enabled Build (with gRPC and z3ed CLI)
|
||||
|
||||
**macOS:**
|
||||
```bash
|
||||
cmake --preset mac-ai
|
||||
cmake --build --preset mac-ai --target yaze z3ed
|
||||
```
|
||||
|
||||
# AI-enabled build with gRPC (Linux)
|
||||
**Linux:**
|
||||
```bash
|
||||
cmake --preset lin-ai
|
||||
cmake --build --preset lin-ai --target yaze z3ed
|
||||
```
|
||||
|
||||
# AI-enabled build with gRPC (Windows)
|
||||
**Windows:**
|
||||
```bash
|
||||
cmake --preset win-ai
|
||||
cmake --build --preset win-ai --target yaze z3ed
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Testing
|
||||
|
||||
### Default Tests (Always Available)
|
||||
YAZE uses CTest with GoogleTest. Tests are organized by category using labels.
|
||||
|
||||
Default test suites run automatically with debug/dev presets. Include stable unit/integration tests and GUI smoke tests:
|
||||
### Quick Start
|
||||
|
||||
```bash
|
||||
# Build stable test suite (always included in debug presets)
|
||||
cmake --build --preset mac-dbg --target yaze_test_stable
|
||||
# Run stable tests (fast, no ROM required)
|
||||
ctest --test-dir build -L stable -j4
|
||||
|
||||
# Run with ctest (recommended approach)
|
||||
ctest --preset mac-dbg -L stable # Stable tests only
|
||||
ctest --preset mac-dbg -L gui # GUI smoke tests
|
||||
ctest --test-dir build -L "stable|gui" # Both stable + GUI
|
||||
# Run all enabled tests
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
# Run tests matching a pattern
|
||||
ctest --test-dir build -R "Dungeon"
|
||||
```
|
||||
|
||||
### Optional: ROM-Dependent Tests
|
||||
### Test Categories
|
||||
|
||||
For tests requiring Zelda3 ROM file (ASAR ROM tests, complete edit workflows, ZSCustomOverworld upgrades):
|
||||
| Category | Command | Description |
|
||||
|----------|---------|-------------|
|
||||
| Stable | `ctest --test-dir build -L stable` | Core unit tests, always available |
|
||||
| GUI | `ctest --test-dir build -L gui` | GUI smoke tests |
|
||||
| ROM-dependent | `ctest --test-dir build -L rom_dependent` | Requires a Zelda 3 ROM |
|
||||
| Experimental | `ctest --test-dir build -L experimental` | AI/experimental features |
|
||||
|
||||
### Enabling ROM-Dependent Tests
|
||||
|
||||
```bash
|
||||
# Configure with ROM path
|
||||
cmake --preset mac-dbg -DYAZE_ENABLE_ROM_TESTS=ON -DYAZE_TEST_ROM_PATH=~/zelda3.sfc
|
||||
cmake --preset mac-dev -DYAZE_TEST_ROM_PATH=/path/to/zelda3.sfc
|
||||
|
||||
# Build ROM test suite
|
||||
cmake --build --preset mac-dbg --target yaze_test_rom_dependent
|
||||
|
||||
# Run ROM tests
|
||||
# Build and run
|
||||
cmake --build --preset mac-dev --target yaze_test
|
||||
ctest --test-dir build -L rom_dependent
|
||||
```
|
||||
|
||||
### Optional: Experimental AI Tests
|
||||
|
||||
For AI-powered feature tests (requires `YAZE_ENABLE_AI_RUNTIME=ON`):
|
||||
|
||||
```bash
|
||||
# Use AI-enabled preset
|
||||
cmake --preset mac-ai
|
||||
|
||||
# Build experimental test suite
|
||||
cmake --build --preset mac-ai --target yaze_test_experimental
|
||||
|
||||
# Run AI tests
|
||||
ctest --test-dir build -L experimental
|
||||
```
|
||||
|
||||
### Test Commands Reference
|
||||
|
||||
```bash
|
||||
# Stable tests only (recommended for quick iteration)
|
||||
ctest --test-dir build -L stable -j4
|
||||
|
||||
# All enabled tests (respects preset configuration)
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
# GUI smoke tests
|
||||
ctest --test-dir build -L gui
|
||||
|
||||
# Headless GUI tests (CI mode)
|
||||
ctest --test-dir build -L headless_gui
|
||||
|
||||
# Tests matching pattern
|
||||
ctest --test-dir build -R "Dungeon"
|
||||
|
||||
# Verbose output
|
||||
ctest --test-dir build --verbose
|
||||
```
|
||||
|
||||
### Test Organization by Preset
|
||||
### Test Coverage by Preset
|
||||
|
||||
| Preset | Stable | GUI | ROM-Dep | Experimental |
|
||||
|--------|--------|-----|---------|--------------|
|
||||
| `mac-dbg`, `lin-dbg`, `win-dbg` | Yes | Yes | No | No |
|
||||
| `mac-ai`, `lin-ai`, `win-ai` | Yes | Yes | No | Yes |
|
||||
| `mac-dev`, `lin-dev`, `win-dev` | Yes | Yes | Yes | No |
|
||||
| `mac-rel`, `lin-rel`, `win-rel` | No | No | No | No |
|
||||
|--------|:------:|:---:|:-------:|:------------:|
|
||||
| `*-dbg` | Yes | Yes | No | No |
|
||||
| `*-ai` | Yes | Yes | No | Yes |
|
||||
| `*-dev` | Yes | Yes | Yes | No |
|
||||
| `*-rel` | No | No | No | No |
|
||||
|
||||
### Environment Variables
|
||||
|
||||
- `YAZE_TEST_ROM_PATH` - Set ROM path for ROM-dependent tests (or use `-DYAZE_TEST_ROM_PATH=...` in CMake)
|
||||
- `YAZE_SKIP_ROM_TESTS` - Skip ROM tests if set (useful for CI without ROM)
|
||||
- `YAZE_ENABLE_UI_TESTS` - Enable GUI tests (default if display available)
|
||||
| Variable | Purpose |
|
||||
|----------|---------|
|
||||
| `YAZE_TEST_ROM_PATH` | Path to ROM for ROM-dependent tests |
|
||||
| `YAZE_SKIP_ROM_TESTS` | Skip ROM tests (useful for CI) |
|
||||
| `YAZE_ENABLE_UI_TESTS` | Enable GUI tests (auto-detected if display available) |
|
||||
|
||||
## 6. Troubleshooting & References
|
||||
- Detailed troubleshooting: `docs/public/build/troubleshooting.md`
|
||||
- Platform compatibility: `docs/public/build/platform-compatibility.md`
|
||||
- Internal agents must follow coordination protocol in
|
||||
`docs/internal/agents/coordination-board.md` before running builds/tests.
|
||||
---
|
||||
|
||||
## 6. Further Reading
|
||||
|
||||
- **[Build Troubleshooting](troubleshooting.md)** - Solutions for common build issues
|
||||
- **[Platform Compatibility](platform-compatibility.md)** - Platform-specific notes and CI/CD details
|
||||
- **[CMake Presets Guide](presets.md)** - Complete preset reference
|
||||
- **[Testing Guide](../developer/testing-guide.md)** - Comprehensive testing documentation
|
||||
|
||||
Reference in New Issue
Block a user