mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
Add .github/workflows/build-all.yml: one push builds PC macOS-arm64, PC Linux-arm64 (reusing existing reusable workflows), Android APK, and iOS .app, each uploading an individual artifact. Android/iOS jobs are continue-on-error until the collapsed-core builds first go green. Add REFACTOR_STATUS.md documenting decisions, measured branch reality, what is done, and the remaining work (compile-green iteration, ~250-file shared-core reconciliation, 3 arm64 JIT fixes to port, 3rdparty dedup, windows-arm64, remote finalize). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.2 KiB
4.2 KiB
ARMSX2 monorepo refactor — status & roadmap
Goal: one shared PCSX2 core (arm64 JIT) at the repository root, with the Android and iOS frontends as thin subfolders that consume it, and CI that builds every target on every commit.
Branch: refactor/monorepo (off macOS). Nothing on the remote has been
changed yet.
Decisions (locked)
| Topic | Decision |
|---|---|
| Canonical core | macOS branch (127 unique arm64-JIT commits, newest). Becomes main. |
| Core strategy | Single shared core. Mobile core forks collapsed; vendored copies deleted. |
| Mobile history | Snapshot (squash) into subfolders; full history stays on the archived branches. |
| Layout | platforms/android/, platforms/ios/. |
| Old branches | macOS → default main; master → master-archive (non-destructive); other branches left as-is. |
| Build wiring | Rewire mobile builds onto the root core immediately; delete vendored copies. |
Branch reality (measured)
master: old upstream PCSX2, 22,653 commits behindmacOS→ archive.refresh-experimental(Android): full core fork at root + a 2nd vendored core underARMSX2/app/src/main/cpp+ a 2nd vendored3rdparty.iOS-refresh: React-Native shell with a full vendored core underapp/src/main/cpp(12,782 files, 93% of the branch).- Android arm64 JIT: only 7 unique commits (3 real fixes) vs
macOS's 127. Thearm64/mac/*IR-VU backend + splitaVU0/aDMAC/aVTLB/aR5900COP*are a superseded experimentmacOSalready consolidated past → dropped.
Done
platforms/android/— Android app snapshotted; vendored core deleted; 24 Android-only core additions relocated into the root core behindif(ANDROID); on-device arm64 test harnesses preserved; thin CMake sources the root core. (commit: "move Android frontend …")platforms/ios/— iOS app snapshotted; vendored core + vendored 3rdparty deleted; iOS-only additions relocated behindARMSX2_IOS; NEON SPU2 shared by both arm64 mobile targets; cruft dropped; CMake rewired to root core viaARMSX2_ROOT, iOS-SDK/bundle/entitlement config preserved. (commit: "move iOS frontend …").github/workflows/build-all.yml— one push builds PC macOS-arm64, PC Linux-arm64, Android APK, iOS .app; each uploads its own artifact.
Remaining (the long pole — needs real toolchains / CI iteration)
- Compile-green each platform. None of the collapsed-core builds has been
compiled yet (this was done in a shell without NDK/Xcode/mac-Qt). The
build-all.ymlAndroid + iOS jobs arecontinue-on-error: trueon purpose — they are the mechanism to surface and fix the remaining issues. Flip to blocking once green. - Shared-file reconciliation (~250 files). The Android core fork also
modified shared files (FullscreenUI, Achievements, GS device backends,
VMManager, MemoryCardFile). Those deltas are not yet merged — only the
net-new Android/iOS files were relocated. Diff each against the root core and
fold in the genuinely mobile-specific changes behind platform guards; discard
stale-upstream noise. Source of truth for the deltas:
git diff macOS refresh-experimental -- pcsx2 common. - arm64 JIT fixes to port (3 real Android commits):
45b4b68d10(microVU PQ lanes),75351e8545(FTOI NaN / SQRT clamp),ec06302ccf(skip microVU emit on jump-cache hits). - 3rdparty de-duplication.
platforms/android/.../cpp/3rdparty(adrenotools- others) is still vendored for the NDK build. Keep adrenotools/oboe
(Android-only); evaluate sourcing the rest from root
3rdparty/once the NDK build is green.
- others) is still vendored for the NDK build. Keep adrenotools/oboe
(Android-only); evaluate sourcing the rest from root
common/PNGStub.cpp(iOS) is relocated but not yet wired intocommon/CMakeLists.txt— add under an iOS guard if the iOS build references it.- Windows-on-arm64 PC build: no reusable
windows_build_qt.ymlexists on this branch. Add one and apc-windows-arm64job inbuild-all.yml. - Finalize remote (destructive — confirm before pushing):
- Promote
macOS/this branch to the defaultmain. - Rename
master→master-archiveon the remote. - Leave the other stale branches untouched.
- Promote