Skip to content

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 .app bundle
  • Include ROMs and configuration files inside the bundle
  • Build DMG files for simple Mac distribution

Related Links

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!

1 Comment »

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.