Skip to content

Ship self-contained builds that need nothing installed - #6

Merged
kranzky merged 2 commits into
mainfrom
self-contained-builds
Sep 28, 2026
Merged

kranzky merged 2 commits into
mainfrom
self-contained-builds

Conversation

@kranzky

@kranzky kranzky commented Sep 28, 2026

Copy link
Copy Markdown
Owner

The 1.2.0 builds weren't packaged as neatly as before:

  • Windows: lander.exe imported MSVCP140.dll / VCRUNTIME140.dll, so Windows asked players to install the Visual C++ redistributable. CI builds with MSVC, which links its runtime dynamically by default; the old MinGW builds linked it statically.
  • macOS: the app bundled Homebrew's SDL2 (now the sdl2-compat shim) and SDL3, which Homebrew builds for this Mac, so it only ran on macOS 26 on Apple Silicon.

Fix (the approach Augmentinel and blast_radius use):

  • LANDER_VENDOR_SDL2 builds SDL2 2.32.10 from source (hash-pinned) and links it statically. Release builds and CI use it; everyday builds can still use Homebrew's SDL2.
  • Windows: the C/C++ runtime is linked statically (/MT), so the package is a single lander.exe plus sounds/.
  • macOS: a universal (arm64 + x86_64) app for macOS 11 and later, with no bundled dylibs.
  • Checks: CI and the release script fail if the game depends on anything players won't have.
  • Version 1.2.1.

Tested locally: the universal build passes all 14 test suites, links only Apple system frameworks, and runs natively and under Rosetta.

🤖 Generated with Claude Code

kranzky and others added 2 commits September 28, 2026 16:28
The 1.2.0 Windows build needed the Visual C++ redistributable (MSVC's
dynamic runtime), and the Mac build only ran on macOS 26 on Apple Silicon
(it bundled Homebrew's SDL2 and SDL3, built for this machine).

- LANDER_VENDOR_SDL2 builds SDL2 2.32.10 from source (hash-pinned) and
  links it statically; release builds and CI use it
- Link the MSVC C/C++ runtime statically (/MT)
- macOS releases are universal (arm64 + x86_64) for macOS 11 and later,
  with no bundled dylibs
- CI and the release script fail if the game depends on anything players
  won't have
- Version 1.2.1

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kranzky
kranzky merged commit e1cc7ca into main Sep 28, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant