Skip to content

Add native macOS support for Intel and Apple Silicon - #1

Merged
RetroGameDeveloper merged 2 commits into
mainfrom
macos-support
Oct 23, 2026
Merged

RetroGameDeveloper merged 2 commits into
mainfrom
macos-support

Conversation

@RetroGameDeveloper

@RetroGameDeveloper RetroGameDeveloper commented Oct 23, 2026 •

Copy link
Copy Markdown

Summary

Adds native macOS support to the RetroReversing fork of decompdecomp.

  • Cocoa/WKWebView window on Intel and Apple Silicon, using the existing private user-agent token and same-origin navigation rules.
  • Native file/folder pickers, JavaScript dialogs, export save panels, Edit/Reload/Quit menus and project close confirmation.
  • Finder launcher in ~/Applications, preserving the installation's interpreter and helper PATH; Finder folder opening and Homebrew uv discovery.
  • macOS shell installer and Apple Silicon host support. KMC GCC/binutils archives are Intel programs: detect a missing Rosetta runtime before installation or compilation and explain how to install it.
  • For Intel Macs, build modern MIPS binutils from checksum-pinned upstream v0.10 source using Xcode Command Line Tools. Apple Silicon retains its existing pinned binary build.
  • Set Mac background worker QoS per thread, avoiding Darwin's process-wide nice behavior.
  • Keep fork installs and updates pointed at RetroReversing/decompdecomp.
  • Add Intel/Apple Silicon CI, portable regression tests and an opt-in hidden native WebKit test against a fresh real app. Fix upstream test assumptions about Linux-only host GCC, unavailable toolchains, and Mac update-state isolation.

Verification

Locally verified on an Apple Silicon Mac:

  • Full suite with free tools and native Cocoa test enabled: 635 passed, 111 skipped. After correcting the demo prerequisite check, the additional console/struct conformance run passed 29 tests (23 skipped because their compilers are unavailable).
  • Native Mac/toolchain regression run: 36 passed, 1 skipped.
  • Hidden WKWebView loads the real app, rejects unauthenticated browser access, opens external links without the private token, saves an export through WKDownload, and respects both wait and close responses.
  • Generated Finder .app launches its own isolated server and native window, then stops cleanly.
  • Pinned KMC GCC builds the homemade N64 demo ROM.
  • Modern MIPS binutils build successfully from the pinned source. Both the console rebuild test and the export/clean rebuild test pass using those independently built tools: 2 passed, byte-identical output.
  • Ruff, shell syntax, uv lock consistency and Git whitespace checks pass.

Hosted CI now passes on Apple Silicon macOS 15, Intel macOS 15, Linux and Windows for the latest commit.
See the successful workflow run.
Intel Mac CI built the modern MIPS tools from pinned source and passed the native WebKit and N64 rebuild tests
(644 passed, 103 skipped). These additional hosts were tested by CI rather than locally.

Requirements and limits

  • macOS 12 or later. Apple Silicon requires Rosetta for the pinned Intel KMC tools; the app/window and modern Apple Silicon tools run natively.
  • Intel Macs need Xcode Command Line Tools for the first modern MIPS tools build.
  • No proprietary game compiler is installed automatically; IDO and other proprietary compiler consent remains required.
  • Linux-only PS1/PS2 compilers remain unavailable on Mac.
  • Source installation only: signed/notarized Mac distribution and a menu bar tray icon remain future work. Run decomp to reopen a window while helpers keep working.

Use Cocoa and WKWebView for a native Mac window with authenticated navigation, native dialogs, downloads and close confirmation. PyObjC provides the native framework bridge without exposing the private app in a browser.

Support Finder launchers, the shell installer, Apple Silicon host detection and per-thread worker QoS. Keep KMC toolchain archives checksum pinned, explain their Rosetta prerequisite, and build the pinned modern MIPS tools from source on Intel Macs where upstream has no binary release.

Cover the integration points with portable tests and a hidden WebKit test against the real app. Add Intel and Apple Silicon CI, document platform limits, and keep fork updates pointed at RetroReversing.
Disable WSL explicitly in Mac host simulations and compare Homebrew paths using portable separators. The Windows CI run exposed these three test-only assumptions; native Mac behavior is unchanged.
@RetroGameDeveloper
RetroGameDeveloper merged commit 6ef1264 into main Oct 23, 2026
4 checks passed
@RetroGameDeveloper
RetroGameDeveloper deleted the macos-support branch October 23, 2026 14:52
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