irunes is a modern C11 media player for the Macintosh II targeting System 7.1 and later. It is designed for the MC68020 with optional 68881 FPU support and is inspired by the iTunes UI paradigm adapted for classic Mac OS.
It ships a DAAP client that browses and streams AIFF audio from the sibling
sharon-jones-and-the-daap-king Rust server over MacTCP.
Open Transport support is planned (see todos.md).
- macOS or Linux
- CMake >= 3.23
- Ninja
- Retro68 toolchain built and
RETRO68_ROOTexported (see below)
Install macOS build dependencies (this repo pins them in Brewfile):
brew bundle installThen build the toolchain:
git clone https://github.com/autc04/Retro68
cd Retro68
git submodule update --init
mkdir ../Retro68-build && cd ../Retro68-build
../Retro68/build-toolchain.bash
export RETRO68_ROOT="$(pwd)/toolchain"Expect 30-60 minutes. Add the export to your shell profile.
cmake --preset retro68
cmake --build --preset retro68-debugOutput: build/retro68/app/irunes.APPL, irunes.bin, irunes.dsk
Runs the platform-independent core/ code on the host with the greatest test
harness. No Retro68 needed.
cmake --preset host
cmake --build --preset host-debug
ctest --preset host-testSet -DIRUNES_WERROR=ON on either preset to treat warnings as errors.
core/ - Platform-independent logic: DAAP/DMAP client, HTTP,
AIFF, PCM convert, track/playlist stores, ring buffer,
UTF-8 <-> MacRoman, sine table, log, result, version
platform/include/ - Cross-platform facades (audio, transport)
platform/mac/ - Classic Mac OS: Toolbox, MacTCP, Sound Manager, UI
platform/host/ - Host-side stubs so core links on macOS/Linux for tests
app/ - main() entry point, Apple Event scripting, Rez resources
tests/ - Host-only unit tests (greatest framework)
third_party/ - Vendored dependencies (greatest)
cmake/ - CMake helper modules (Retro68 detection, multilib check)
Using MAME (you must supply Mac II ROMs):
mame macii -flop1 build/retro68/app/irunes.dsk -rp /path/to/romsOn real hardware: copy irunes.bin via BlueSCSI or floppy (future work).
# Format all C sources in-place (requires `shopt -s globstar` in bash, or use fd)
fd -e c -e h . core platform app | xargs clang-format -i
# Lint (host preset only - cross target has no compile_commands for host tools)
clang-tidy -p build/host core/src/version.cOff by default. Enable with -DIRUNES_ENABLE_FPU=ON. Requires Retro68 built with hard-float
multilib; check availability with:
m68k-apple-macos-gcc -print-multi-libIf m68020/m68881 appears in the output, the multilib is present.
The build produces .bin (MacBinary) and .dsk (HFS floppy image) because HFS resource forks
do not survive modern filesystems. The .APPL file is the raw resource fork for use inside
emulators that understand it directly.
MIT - see LICENSE.
