novelrt / NovelRT

A cross-platform 2D game engine accompanied by a strong toolset for visual novels.
MIT License
183 stars 43 forks source link

Introduce Universal Binaries for macOS #545

Open capnkenny opened 1 year ago

capnkenny commented 1 year ago

What is the current behaviour? Currently, we only target Intel Apple machines and do not cross build for Apple Silicon.

What is the expected behaviour/change? By setting a CMake flag, we should be able to specify CMake to produce universal binaries for both NovelRT and its dependencies for macOS systems, allowing compatibility on both Apple Silicon and Intel machines without a need to distribute separately.

What is the motivation / use case for changing the behavior? Allowing for targeting both new and older Mac hardware.

Describe alternatives you've considered: Distributing separately - would work, but would require cross-compilation efforts or would require interaction from a separate CI ring.

Are there any potential roadblocks or challenges facing this change? Testing - we'd need an outside contributor with access to a macOS w/ Apple Silicon to test that a sample or the Engine Tests application produced with a Universal Binary is able to function on Apple Silicon (as a maintainer, I can test Apple w/ Intel).

Are there any downsides to implementing this change? macOS binaries may bloat a little, but should not be much in theory.

Additional context Stack Overflow explaining the change to make