-
Notifications
You must be signed in to change notification settings - Fork 1
SparkBuild In Tree
Audience: Programmers | Mixed
Thread Context: N/A — build-tooling decision.
Platform/Backend Scope: Cross-platform developer tool. Windows external deps: WinHTTP/shell32/COM. Linux/macOS external dep:
pthread. No dependency on any SparkEngine header or library.
SparkBuild is a TUI developer build configurator. Its source was vendored directly into this repository at SparkBuild/ (pinned to Krilliac/SparkBuild@83060506), replacing the prior pattern of committing prebuilt per-platform binaries under tools/ that were refreshed by a weekly workflow. SparkBuild only shells out to cmake; it has zero compile- or link-time dependency on the engine, so hosting it in-tree is not a circular dependency.
In-tree hosting replaced committed binaries. Deleted in the same change:
-
tools/SparkBuild.exe,SparkBuild-linux-gcc,SparkBuild-linux-clang,SparkBuild-macos, and theSparkBuild-linuxsymlink -
tools/update-sparkbuild.sh,tools/update-sparkbuild.ps1 .github/workflows/update-sparkbuild.yml- Matching
.gitignore/.gitattributesentries
The vendored tree now lives at SparkBuild/ with CMakeLists.txt, src/, resources/, README.md, and UPSTREAM.md.
- Committed binaries bloat the repo and are opaque to code review.
- Maintaining two repos added a cross-repo round-trip to every SparkBuild patch.
- SparkBuild only invokes
cmake, so there is no circular dependency. External deps are only WinHTTP/shell32/COM on Windows andpthreadon Linux/macOS.
Bootstrap note: to use SparkBuild you first invoke plain cmake to build it — the same two-stage flow as SparkLauncher, SparkConsole, and SparkShaderCompiler.
-
CMakeLists.txt—option(ENABLE_SPARKBUILD ... ON)(around line 136) -
CMakeLists.txt—add_subdirectory(SparkBuild)guarded by the option (around line 1390) -
CMakeLists.txt— status lineSparkBuild: ${ENABLE_SPARKBUILD}(around line 2158) -
SparkBuild/CMakeLists.txt— C++17, builds${CMAKE_BINARY_DIR}/bin/SparkBuild,install(TARGETS SparkBuild RUNTIME DESTINATION bin)for CPack -
.github/workflows/build.yml— clang-format find list includesSparkBuild/src - The engine's per-platform
cp -r build/bin/*packaging step already captures the binary — no dedicated artifact upload needed.
Independent siblings. SparkLauncher is a GUI ImGui project-picker for end users; SparkBuild is a TUI developer build configurator. Different audiences, UI toolkits, and invocation contexts. A future optional enhancement could add a "Configure Build" button in SparkLauncher that shells out to ./SparkBuild — runtime coupling only, never link-time.
If upstream Krilliac/SparkBuild gets a hotfix worth pulling in-tree, diff-and-port (see SparkBuild/UPSTREAM.md). Do not blind-overwrite the vendored tree, because the project's clang-format style is applied on commit.
-
Original entry date: 2026-04-19 (
sparkbuild-in-tree-2026-04-19.md, type: Decision) - Verified against codebase 2026-06-08.
- Status bullets:
-
Still holds.
SparkBuild/exists withCMakeLists.txt,src/,resources/,README.md,UPSTREAM.md. -
Old binaries gone — no
tools/SparkBuild*artifacts remain. -
add_subdirectory(SparkBuild)confirmed present in the rootCMakeLists.txt(line numbers approximate; the file has shifted since the original note).
-
Still holds.
- Daemon Services Architecture — sibling developer tooling
- Wine Role and Fallback Tiers
Published from ec6571705957. Edit the canonical source in wiki/.
- Documentation
- Docs route
- Wiki index
- Guides
- Tutorials
- Samples
- Examples
- API Reference
- API route
- Reference
- Build Guide
- Dependencies
- FAQ
- Changelog
- Roadmap
- Contributing
- Code of Conduct
- Home
- FAQ
- Getting Started
- Quick-Start Tutorial
- Making Your First Game
- Making Your First Multiplayer Game
- Artist Workflow Guide
- Editor Walkthrough
- Migration Guide
- How SparkEngine Works
- Architecture Overview
- Engine Architecture Flowchart
- Creating a Game Module
- Game Modules (catalog)
- Entity Component System
- Rendering and Graphics
- Physics
- Cloth Simulation
- Audio
- Input System
- Camera System
- Scripting with AngelScript
- Visual Scripting
- AI and Navigation
- Animation
- 2D Systems
- Networking
- Dedicated Server
- Multiplayer Quick Start
- Area Server Architecture
- Scene Management
- Large World Support
- Collaborative Editing
- Coroutine System
- Event System
- Event Response System
- Job System
- UI System
- UI Layout Extensions
- Localization
- Dialogue System
- Destruction System
- Replay System
- Achievement System
- Loading System
- Mod System
- Content Delivery
- Tween System
- Memory Integrity
- Gameplay Systems
- Terrain and Procedural Generation
- Save System
- Persistence System
- Day Night Cycle and Weather
- Cinematic Sequencer
- Runtime Prefabs
- SparkEditor
- Editor Tutorials
- SparkConsole
- SparkDaemon
- Shader Pipeline
- Asset Pipeline
- Asset Validation
- Asset Migration
- Game Packaging
- Online Services
- DataTable System
- Loot and Crafting System
- CSG System
- Font System
- Timer Manager
- Movie Render Pipeline
- HLOD and World Partition
- Remote Debug System
- Selection Manager
- Asset Dependency Graph
- Editor Automation
- File Watcher
- Project Templates
- System Requirements
- VR Support
- Mobile Platform
- Accessibility
- Platform Input
- Cross-Compilation: Wine Testing
- RHI Abstraction Layer
- D3D11 Backend
- D3D12 Backend
- Vulkan Backend
- OpenGL Backend
- Metal Backend
- DXR Raytracing
- Hybrid Ray Tracing
- Upscaling (DLSS/FSR)
- Render Graph
- Shader Graph
- GPU Particles
- GPU-Driven Rendering
- Volumetric Fog
- Volumetric Clouds
- Global Illumination
- Virtual Texturing
- Water Rendering
- Clustered Lighting
- Material System
- Post-Processing
- Shadow System
- Particle System
- Decal System
- Sky and Atmosphere
- Foliage System
- Mesh Shaders
- Neural Rendering
- Configuration Reference
- Performance Tips
- Benchmark Framework
- Threading Model
- Memory Safety
- Memory Management Patterns
- Build System and CMake Modules
- Profiler and Debugging
- Performance Profiling Guide
- Telemetry System
- Golden Image Testing
- Utilities
- Testing
- Codebase Statistics
- Codebase Health
- Error Handling Patterns
- Hot Reload Overview
- Troubleshooting
- Contributing
- Workflow Patterns
- Build Optimizations
- CI Reproducible Builds
- GitHub API and PR Checks
- Git Rebase Conflicts
- Clang-Format
- Code Quality Violations
- AI Bloat Pattern
- MinGW + Wine Cross-Compilation
- Live Editor Testing
- Engine & Renderer Landscape
- DuetOS Portability Catalog
- Five-Engine Analysis
- Eleven-Engine Analysis
- ThorVG / Unity Graphics Analysis
- Advanced Techniques Catalog
- Third-Party Library Evaluation
- Engine Viability Evaluation
- Engine Feature Recommendations
- Project Recommendations
- Mac Compatibility Analysis
- Codebase Observations
- Codebase Bloat Audit
- Test Suite Audit
- Documentation Coverage Audit
- ThirdParty Dependencies Audit
- Load Test Baseline
- Gameplay Systems Status
- SparkGame Module Status
- Stub and Abandoned Features
- Memory Integrity System
- Memory Safety Evaluation
- Hardware Acceleration Systems
- Jolt Physics Integration
- GPU/CPU Separation Plan
- Daemon Services Architecture
- Reflection & Polymorphism Refactoring Plan
- SparkBuild In-Tree
- Wine No-JobSystem Breakthrough
- Wine Role and Fallback Tiers