Files
NerdNextDoor 0904a1994c Introduce experimental macOS build support
Tested on my M4 MacBook Air, builds fine.
2025-11-30 21:15:30 +00:00
..

Experimental macOS build scripts

This is the folder for experimental macOS build support on Apple Silicon (we do not plan to support x86_64 macOS).

These scripts are not guaranteed to work and are not actively supported by the maintainer or other contributors. If you do have any issues, please mention @IAmTheNerdNextDoor in GitHub Issues.

Dependencies

Regardless of stdlib, you will need:

  • Rustup (DO NOT install Rustup from Homebrew as you will incur conflicts. If you have Rustup installed from Homebrew, uninstall it and reinstall from the Rustup site.)
  • aarch64-none-elf
  • Homebrew
  • QEMU (brew install qemu)
  • dosfstools (brew install dosfstools)

If building for the GNU library:

  • aarch64-unknown-linux-gnu (brew tap messense/macos-cross-toolchains && brew install aarch64-unknown-linux-gnu)

If building for the Musl library:

  • Zig (brew install zig)

We use Zig to cross-compile to Linux musl on macOS.

When it comes to Rust, you need the nightly toolchain. To install it, run: rustup default nightly

Building

You can start building the initrd programs using this script: ./scripts/mac-experimental/build-deps.sh

musl programs are built by default.

If you want GNU program builds: stdlib=gnu ./scripts/mac-experimental/build-deps.sh

After building, you can make the initrd with: ./scripts/mac-experimental/create-image.sh

The initrd should now be at ./moss.img.

You can then build and run moss with: cargo run --release

If you get an error about aarch64-unknown-none-softfloat during building, you need to install the target: rustup target install aarch64-unknown-none-softfloat

Have fun!