Skip to content

update build system to work on modern tools, add macOS Apple Silicon#28

Open
jbsohn wants to merge 2 commits into
7800-devtools:masterfrom
jbsohn:modernize-build
Open

update build system to work on modern tools, add macOS Apple Silicon#28
jbsohn wants to merge 2 commits into
7800-devtools:masterfrom
jbsohn:modernize-build

Conversation

@jbsohn
Copy link
Copy Markdown

@jbsohn jbsohn commented Apr 26, 2026

Changes made to support modern hardware, compilers, and scripting environments across Windows, macOS, and Linux.

Apple Silicon Support (macOS arm64)

  • Added the new macosx_arm64 build target.
  • The emulator now runs natively on Apple Silicon Macs without requiring Rosetta 2 translation.
  • Updated SDL2 linking logic to support both static and shared library configurations on macOS.

3rdparty

  • Update to the latest SDL2

Universal Python 3 Migration

  • Compatibility: All internal build scripts have been updated to be fully compatible with Python 3.11+.
  • Fixes:
    • Replaced deprecated tostring() method calls with tobytes().
    • Removed the unsupported rU (Universal Newlines) file opening mode.
    • Updated msgfmt.py, verinfo.py, m6502make.py, and png.py.

Modern GCC 15 / C++ Readiness

  • Header Cleanup: Added explicit #include <string> to files like effect.h where modern GCC no longer provides them transitively.
  • Template Disambiguation: Resolved template overload ambiguities in the sol2 Lua wrapper to satisfy the strict requirements of GCC 15.

4. Windows (MSYS2/UCRT64) Robustness

  • GENie Fix: Patched the genie project generator to prevent path concatenation errors (mangled paths) when archiving large libraries on Windows.
  • Git Housekeeping: Updated .gitignore to properly hide Windows-specific artifacts (.exe, ui.ini) and generated folders (cfg/, history/).

Build Information

  • Windows Build: MSYS2 with the UCRT64 toolchain.
  • Default Renderer: Set to OpenGL/GLSL for non-macOS systems to improve out-of-the-box performance.

Other Information

  • I have verified basic functionality across Linux, Windows, and macOS. Given the variety of possible configurations, I would appreciate community validation to catch any edge cases.
  • Despite the large diff, the majority of this PR is a dependency refresh within 3rdparty. The actual emulator logic changes are minimal, specifically targeting compatibility with GCC 15 and Python 3.11+.
  • I've intentionally kept YM2149 on-cart support in a separate branch (ym2149) to ensure this PR remains focused strictly on updates to work with modern tools.

@jbsohn jbsohn marked this pull request as ready for review April 29, 2026 04:10
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