Skip to content

Add native ARM64 macOS support using shared Android host services - #61

Closed
pfista wants to merge 3 commits into
OpenCommunityEdition:mainfrom
pfista:codex/macos-upstream-port
Closed

pfista wants to merge 3 commits into
OpenCommunityEdition:mainfrom
pfista:codex/macos-upstream-port

Conversation

@pfista

@pfista pfista commented Oct 3, 2026 •

Copy link
Copy Markdown

Adds a native Apple Silicon macOS target for the existing 32-bit game ABI. The build reuses Android's guest compiler pipeline, runtime and host services, plus Linux's file helpers; the macOS executable runs ARM64 instructions while game pointers and data layouts remain 32-bit.

The app keeps SDL/ANGLE Metal rendering, keyboard/mouse and controller input, audio, networking, native first-launch Xbox game-data selection/import, saved data selection, and an ad-hoc signed drag-to-Applications DMG. Game assets remain external. No app icon is included in the PR or packaged app; macOS supplies its generic application icon.

Review by commit

Commit Scope
ca1bde14 Shared guest/host reuse, desktop platform hooks and renderer compatibility
abc5faba Mac memory/OS adapters, minimal native app, importer and packaging
e45041cd Mac build/package CI and installation instructions

Total: 3,621 additions / 80 deletions across 58 files: 3,484 implementation lines, 53 CI lines, and 84 documentation lines. The game retains its existing data structures and the Windows/Linux architectures stay the same.

Automatic updates/Sparkle, signed/notarized release automation, expanded native settings, profiling, experimental geometry caching and iOS-specific paths are deferred. The native app menu provides About, Choose Game Data on Next Launch, Open Saves Folder and Quit; display and controls use the game's settings.

Validation

  • Full local Mac guest/host/app build, strict signature verification, and startup from the read-only DMG passed.
  • Additional runtime probes passed on the same implementation at 1dcb7edc: guest ABI/rebasing/libc, memory/syscalls, UDP, SDL audio, rendering, native import/persistence/rollback, and packaging. Those test sources are outside this PR's scope; current CI retains build and package verification.
  • The compiler pass produced identical IR to the earlier Mac path for four game/runtime modules; errno translation matched the earlier implementation in the tested cases.
  • Local LAN and encrypted-invite matches passed with two instances, two players and bidirectional gameplay updates. A remote internet invite also joined successfully during user playtesting. Broader NAT configurations and physical controllers need further playtesting.
  • Fresh Linux/Windows/Android CI and macOS build/package CI pass at e45041cd.

Build, install and verification instructions. One standard macos-26 job builds, audits the bundle, verifies the DMG checksum, ARM64 architecture and strict signatures, and uploads halo-macos-arm64-dmg; no signing credentials are required. The separate community-map PR #63 is independent of this contribution.

@pfista
pfista force-pushed the codex/macos-upstream-port branch from d61ed2d to 1dcb7ed Compare October 4, 2026 03:36
@pfista pfista changed the title Add native Apple Silicon macOS support Add native ARM64 macOS support using shared Android host services Oct 4, 2026
@pfista
pfista force-pushed the codex/macos-upstream-port branch from 1dcb7ed to 71fdcfa Compare October 4, 2026 04:02
@pfista
pfista force-pushed the codex/macos-upstream-port branch from 71fdcfa to e45041c Compare October 4, 2026 04:27
@MrMilenko MrMilenko added enhancement New feature or request priority: low Nice to have / when time allows labels Oct 5, 2026
@cybersecurity

Copy link
Copy Markdown
Collaborator

macOS support cannot be officially added due to the github runners for them costing 10x as much as Linux runners (I also don't own any apple products so I cannot do testing). Long term, I will likely link one of the MacOS / IOS forks in the main repo for people to find.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: low Nice to have / when time allows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants