Target an even older version of Mac OS X

We can, so let's not ask if we should!

More realistically, we can right now so it's nice to mark that we do, but this is subject to be re-evaluated if any later changes conflicts with this.
Note also that this only affects the binaries we distribute with our releases!
It may very well be possible to compile RGBDS on even older versions of Mac OS X if you have the appropriate compiler setup;
we're just not testing it nor offering such binaries ourselves, but third-party packagers are welcome to do so.
(Looking at you, TigerBrew! ;)
This commit is contained in:
Eldred Habert
2026-04-20 14:33:59 +02:00
committed by GitHub
parent 77dceaf43a
commit 6edac50cc4
4 changed files with 21 additions and 5 deletions
+9 -1
View File
@@ -30,10 +30,18 @@ case "${OS%%-*}" in
sudo apt-get install -yq $pkgs
;;
macos)
pkgs=bison
case $TOOLSET in
'' | lld)
pkgs="$pkgs $TOOLSET"
TOOLSET=
;;
esac
# macOS bundles GNU Make 3.81, which doesn't support synced output.
# We leave it as the default in `PATH`, to test that our Makefile works with it.
# However, CMake automatically uses Homebrew's `gmake`, so our CI has synced output.
brew install bison make
# shellcheck disable=SC2086 # (This word splitting is intentional.)
brew install $pkgs make
# Export `bison` to allow using the version we install from Homebrew,
# instead of the outdated one preinstalled on macOS (which doesn't even support `-Wall`...).
export PATH="$(brew --prefix)/opt/bison/bin:$PATH"
@@ -57,12 +57,14 @@ jobs:
uses: actions/checkout@v6
- name: Install deps
run: |
./.github/scripts/install_deps.sh macos
./.github/scripts/install_deps.sh macos lld
- name: Build binaries
run: |
cmake -S . -B build --preset macos-static -DFETCHCONTENT_BASE_DIR="${{ env.DEPS_ROOT_DIR }}"
cmake --build build
strip rgb{asm,link,fix,gfx}
env:
LDFLAGS: -fuse-ld=lld # cmake/macos-static.cmake comments explain why we use lld.
- name: Package binaries
run: |
zip --junk-paths rgbds-macos.zip rgb{asm,link,fix,gfx} man/* .github/scripts/install.sh
+3 -1
View File
@@ -113,7 +113,7 @@ jobs:
uses: actions/checkout@v6
- name: Install deps
run: |
.github/scripts/install_deps.sh macos
.github/scripts/install_deps.sh macos lld
- name: Cache library deps
uses: actions/cache@v5
with:
@@ -124,6 +124,8 @@ jobs:
run: |
cmake -S . -B build --preset macos-static -DFETCHCONTENT_BASE_DIR="${{ env.DEPS_ROOT_DIR }}" -DTESTS_OS_NAME=macos
cmake --build build
env:
LDFLAGS: -fuse-ld=lld # cmake/macos-static.cmake comments explain why we use lld.
- name: Package binaries
run: |
mkdir bins
+6 -2
View File
@@ -2,10 +2,14 @@
# in order to generate executables compatible with old macOS versions.
# See our `macos-static` CMake preset for how it's meant to be used.
# The `-mmacosx-version-min=10.9` flag ensures that the binary only uses APIs available on Mac OS X 10.9 Mavericks.
# Note that targeting old enough versions of Mac OS X on recent enough versions of macOS
# triggers some poorly-tested code paths within Apple's linker, which then crashes.
# This can be worked around by using LLVM's LLD linker and passing `-fuse-ld=lld` when linking.
# The `-mmacosx-version-min=10.4` flag ensures that the binary only uses APIs available on Mac OS X 10.4 Tiger.
# The `-arch` flags build a "fat binary" that works on both Apple architectures:
# older Intel x64 Macs and newer ARM "Apple Silicon" ones.
set(secret_sauce -mmacosx-version-min=10.9 "SHELL:-arch x86_64" "SHELL:-arch arm64") # Avoid `-arch` being dedup'd.
set(secret_sauce -mmacosx-version-min=10.4 "SHELL:-arch x86_64" "SHELL:-arch arm64") # Avoid `-arch` being dedup'd.
add_compile_options(${secret_sauce})
add_link_options(${secret_sauce})
set(PNG_HARDWARE_OPTIMIZATIONS OFF) # These do not play well with a dual-arch build.