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

48 lines
1.7 KiB
Markdown

# 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](https://rustup.rs) (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](https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads)
- [Homebrew](https://brew.sh)
- 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!