Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/mihaip/infinite-mac/llms.txt

Use this file to discover all available pages before exploring further.

Infinite Mac runs classic Macintosh software through WebAssembly builds of several open-source emulator cores. The compiled .wasm and .js binaries are already checked into the repository under src/emulator/worker/emscripten/, so you only need to rebuild them if you are making changes to the emulator source itself. The build environment is fully containerised — a single Docker image bundles the Emscripten SDK, Rust toolchain, and all supporting libraries needed to compile every core.

Emulator Submodules

Each emulator is included as a Git submodule. Their upstream repositories are:
EmulatorRepository
Basilisk IIhttps://github.com/mihaip/macemu
SheepShaverhttps://github.com/mihaip/macemu
Mini vMachttps://github.com/mihaip/minivmac
DingusPPChttps://github.com/mihaip/dingusppc
Previoushttps://github.com/mihaip/previous
PearPChttps://github.com/mihaip/pearpc
SnowRust crate included in the snow submodule; targets wasm32-unknown-emscripten

Build the Docker Image

The Dockerfile at the repository root installs Ubuntu 24.04, the Emscripten SDK (version 4.0.22), Rust 1.95.0, and all C/C++ build dependencies. Build the image once before compiling any emulator:
docker build -t macemu_emsdk .
To rebuild every emulator core in one shot and automatically copy the outputs into src/emulator/worker/emscripten/, run the convenience script from the repository root:
scripts/rebuild-and-import-emulators.sh
This script opens a shell inside the container, runs /scripts/rebuild-all-emulators.sh inside it, and then calls npm run import-emulator for each of the twelve targets (basiliskii, sheepshaver, minivmac-Plus, minivmac-128K, minivmac-512Ke, minivmac-SE, minivmac-II, minivmac-IIx, dingusppc, previous, pearpc, snow).
To open an interactive shell inside the Docker container for manual builds, run:
scripts/docker-shell.sh
All paths referenced in the per-emulator build instructions below are paths inside this container.

Per-Emulator Build Instructions

After building, run npm run import-emulator <name> from the host to copy the compiled output into src/emulator/worker/emscripten/.
Basilisk II requires a bootstrap step to generate the CPU emulator code before the WASM configure and compile steps:
cd /macemu/BasiliskII/src/Unix
# Generate the CPU emulator source
./_embootstrap.sh
# Configure for WASM output
./_emconfigure.sh
# Compile
make -j8
Then from the host:
npm run import-emulator basiliskii

Build docs developers (and LLMs) love