wezm / classic-mac-rust

Experiments using Rust code in classic Mac applications

Home Page:https://www.wezm.net/v2/posts/2023/rust-classic-mac-os-app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Rust on Classic Mac OS

This repo includes my experiments running Rust code on PPC classic Mac OS.

Building

Note: these steps have only been tested on Linux (Arch).

Prerequisites

  1. My fork of the Retro68 with updated binutils (binutils branch) built and on $PATH. E.g. export PATH=$PATH:/home/you/path/to/Retro68-build/toolchain/bin
  2. rustup
  3. Docker (if not on Debian based system) or binutils-powerpc-linux-gnu on Debian based systems For non-Debian systems build the binutils docker image: (cd powerpc-binutils && docker build -t binutils-objcopy .)

Prepare

mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=path/to/Retro68-build/toolchain/powerpc-apple-macos/cmake/retroppc.toolchain.cmake
cd ..

Build

Compile the Rust code with:

cargo build --release -Z build-std=core,alloc --target powerpc-apple-macos.json

Convert the static library to XCOFF, either via Docker or powerpc-linux-gnu-objcopy directly:

docker run --rm -it -v $(pwd):/src binutils-objcopy -O aixcoff-rs6000 /src/target/powerpc-apple-macos/release/libclassic_mac_rust.a /src/target/powerpc-apple-macos/release/libclassic_mac_rust.obj

Build the C code, link in the Rust code, and produce the final binary:

cmake --build build --target Dialog_APPL

Running

Dialog.bin is the MacBinary encoded application, you can copy this to a machine or emulator to run it. Retro68 provides the LaunchAAPL tool, which combined with its server counterpart makes this very easy. With the server running on a machine or emulator you can launch the binary directly from you host with:

LaunchAPPL -e tcp --tcp-address 127.0.0.1 build/Dialog.bin

About

Experiments using Rust code in classic Mac applications

https://www.wezm.net/v2/posts/2023/rust-classic-mac-os-app/


Languages

Language:Rust 35.0%Language:C 28.8%Language:R 21.1%Language:CMake 13.8%Language:Dockerfile 1.2%