Building ZEsarUX 12.0 Natively on Apple Silicon (macOS Sequoia ARM64 Guide)
Introduction
If you’ve spent any time around my blog, you’ll know I have a bit of a habit for chasing things down rabbit holes, especially when it comes to getting software running natively on Apple Silicon.
ZEsarUX is one of the most powerful open-source ZX Spectrum, ZX Next, Amstrad, and retro 8-bit emulators available today. With the latest release (12.0 “Bubble Bobble”) bringing major improvements, I wanted to take advantage of my Apple Silicon hardware (M1/M2/M3/M4) to build a fully native ARM64 version, no Rosetta required. That’s fine… but we can do better.
Thankfully, ZEsarUX is open-source:
https://github.com/chernandezba/zesarux
So, in true mucky style, I set out to build it natively on a fresh macOS Sequoia install. No Rosetta. No guesswork. No outdated forum posts. Just a clean, reproducible build you can follow.
I’ve also recorded a full step-by-step video walkthrough showing the entire build process on macOS Sequoia from a completely clean install:
The Goal
- Build ZEsarUX fully native for ARM64
- No Rosetta translation layer
- Fully reproducible from a clean install
- Works on Sequoia (macOS 15), Sonoma, Ventura, etc.
Environment
- macOS Sequoia (Apple Silicon ARM64)
- No Homebrew or Xcode CLI installed initially
- Completely clean and fresh OS Install.
Step-by-Step Build Process
1. Install Xcode Command Line Tools
This is optional, since homebrew will install XCode Command Line tools automatically if not available.
Open Terminal and run:
xcode-select --install
Verify installation:
xcode-select -p
2. Install Homebrew (Apple Silicon path)
Check the latest instructions for installing homebrew from https://brew.sh
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Verify:
brew doctor
brew update
brew upgrade
brew config
Look for:
HOMEBREW_PREFIX: /opt/homebrew
3. Install Required Packages
brew install sdl2 libsndfile pkg-config
4. Clone ZEsarUX Source Code
git clone https://github.com/chernandezba/zesarux.git
cd zesarux/src
5. Export Build Environment Variables
This ensures we correctly point to Homebrew’s ARM64 libraries:
export PKG_CONFIG_PATH="/opt/homebrew/lib/pkgconfig"
export CFLAGS="-arch arm64 -I/opt/homebrew/include -I/opt/homebrew/include/SDL2 -D_THREAD_SAFE"
export LDFLAGS="-arch arm64 -L/opt/homebrew/lib -lSDL2 -lsndfile"
6. Run Configure
./configure
You should see output detecting Cocoa GUI, SDL2, libsndfile, and audio frameworks.
7. Clean (optional but recommended)
make clean
8. Build ZEsarUX (using all CPU cores)
make -j$(sysctl -n hw.logicalcpu)
9. Verify ARM64 Native Build
file ./zesarux
Expected:
zesarux: Mach-O 64-bit executable arm64
Note on libsndfile
On clean Apple Silicon installs, libsndfile may not always propagate perfectly through autotools configure. The environment variables above force correct linking.
Quick Test
Simply run:
./zesarux
Game tested in this video:
Hair Trigger by Microchops
https://chopz.itch.io/hair-trigger
Part 2 (coming soon…)
In Part 2, I’ll show how to:
- Bundle ZEsarUX into a proper native
.appbundle - Include ROMs and configuration files inside the bundle
- Build DMG files for simple Mac distribution
Related Links
- Full YouTube video: https://youtu.be/SaBmhHRxBtI
- ZEsarUX Source Code: https://github.com/chernandezba/zesarux
Summary
Hopefully this guide makes it much easier for anyone wanting a fully native, fully optimised ZEsarUX build on Apple Silicon!
Feedback welcome!
If you hit any roadblocks, feel free to drop comments on the video or blog, the ARM64 quirks are finally tamed!


Hi, thanks.
Jast waiting for bundle ZEsarUX into a proper native
.appwith roms intoLikeLiked by 1 person