Repository navigation
[8/10] Switch builds and packaging to Zig - #371
Merged
Merged
Conversation
added 7 commits
October 15, 2026 16:40
Dependency URLs and pins are fixed for Zig 0.16, with verified SDK downloads and shared target settings. The xmake build stays available while the migration is prepared. The IL2CPP, Unity, SPUD, protobuf, logging and settings sources build as C++23. macOS uses the SDK curl and Windows uses Schannel, so no OpenSSL build is added.
The Swift launcher, librsync bridge and app resources build with Zig, and native archives are repacked with Apple libtool for Swift linking. Updates extract with the system tar instead of the PLzma dependency. ARM64 and Intel outputs merge into universal binaries, and Windows DLL provenance is verified before packaging.
The TOML parser was instantiated in every consumer. It now builds once as a compiled library, and settings and shortcut headers use forward declarations so parser internals stay private. Abseil is limited to the protobuf-lite source closure. Unused components leave the static runtime manifest, while the synchronization, strings and hashing objects stay.
Logging and HTTP sources compile together to avoid repeated dependency-header parsing. Platforms whose CRT headers depend on include order keep separate translation units. Protobuf generation selects only the sync entry points and their transitive field types. Schemas, enum catalogs, wire numbers and retained descriptors are preserved.
Generated image headers held millions of byte initializer expressions. They now use escaped string chunks, preserving the embedded bytes and sizes while cutting Clang parse time. Independent static libraries compile before their dependents finish, and Debug fixtures share release dependencies under a separate test optimization option.
Swift compiles as one module independently of native archive linkage, so native libraries no longer gate the Swift build. Recursive JSON key ordering moves into one translation unit, and macOS release features compile four to a unit to share game-header parsing. Debug and Windows keep single units.
CI builds release artifacts and Debug fixtures in the same Zig graph. The xmake targets, recipes, locks and formatting helpers that Zig replaced are removed. Build docs cover platform commands, output paths, SDK provisioning, packaging and contributor checks.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part 8 of 10 · base
refactor/07-documentation· 7 commitsThe xmake build carries recipes, locks, and vendored package trees that duplicate what a pinned Zig build can hold in one graph. This PR moves the mod, the platform entry points, the macOS launcher, the tests, and release packaging to Zig 0.16, then removes the xmake setup it replaces.
What changes
Testing
Every commit passes
zig build test-il2cpp test-mod test-syncon Zig 0.16, cross-builds the Windows mods with-Dtarget=x86_64-windows-msvc, and builds the macOS mods with-Dtarget=aarch64-macos.14.6. Nothing was run in the game.