Skip to content

macMAKE v0.1.1 — Linux Release

Latest

Choose a tag to compare

@mplsllc mplsllc released this 18 Oct 22:01
· 2 commits to main since this release

macMAKE v0.1.1 — Linux Release

macMAKE is a Linux-native development toolchain for creating Classic Macintosh applications. macMAKE v0.1.1 delivers seven release enhancements, verified Mac OS 9.2.2 runtime acceptance, independent native Motorola 68000 application building, external Rust/XCOFF interop, CodeWarrior XML importing, profile-driven QEMU emulation, and full telemetry opt-out.

Included capabilities and enhancements

  1. Installer and First Application: Fixed case-sensitive library lookup to match the actual layout in macMAKELibs repository (MSL_C/MSL_MacOS/Lib/PPC/MSL_C_Carbon.Lib, MSL_Runtime_PPC_D.Lib, MSL_Extras/MSL_MacOS/Lib/PPC/MSL_Extras_Carbon.Lib). Verified safe extraction, SHA-256 validation, incremental rebuilds, and clean unprivileged onboarding.
  2. Streamlined SDK Setup: Added macmake sdk fetch --minimal using sparse git checkout to retrieve the pinned Universal Interfaces subset with SHA-256 validation. Provided setup-user-msl.sh helper to verify and stage user-supplied MSL archives without redistributing proprietary SDK materials.
  3. Independent Native Motorola 68000 Application Backend: Bundled GNU GCC 12.2.0 and GNU Binutils 2.46.1 for target m68k-unknown-elf, building bounded C89 applications with CODE 0/1 segments, Toolbox veneers, Finder metadata, and MacBinary II packaging without Retro68. Documented a sequenced roadmap separating toolchain capabilities from application-specific observations.
  4. External Rust-to-Classic XCOFF Interop: Added examples/classic-rust-interop, demonstrating consumption of big-endian PowerPC XCOFF objects emitted by external pinned Rust nightly (powerpc-apple-macos.json), with macMAKE handling native CFM/PEF linking, resources, and MacBinary packaging.
  5. CodeWarrior XML Import & Classilla Build Boundary: Added macmake import-cw-xml feature matrix and practical workflow guide in docs/codewarrior-xml-and-classilla.md for converting historical XML project exports into macmake.toml. Documented the Classilla 128-target inventory and package assembly boundaries.
  6. Optional Emulator Execution (macmake run): Added profile-driven QEMU Mac OS 9.2.2 runner with copy-on-write disk protection, P6 PPM screenshot capture and validation, and structured run reports. Known nonblocking issue: prompt repetition on 250ms timeouts during interactive wait.
  7. Analytics Opt-Out: Provided complete telemetry opt-out via --no-analytics installer flag, MACMAKE_DISABLE_ANALYTICS=1 environment variable, and persistent configuration preference marker.

Verified Mac OS 9.2.2 runtime acceptance

macMAKE v0.1.1 has verified real-guest runtime acceptance:

  • Environment: QEMU 8.2.2, mac99 / G4, 1 GiB RAM, 800×600 guest display, running Mac OS 9.2.2.
  • Application fixture: makePAD MacBinary (SHA-256 505a3b1deb62ffc396537b1010c8f23921f4ae4308ac6ee989ccf7cd285ca3d1).
  • Runtime observations: The application launched from the guest volume, interactive text entry was confirmed ("rc7 runtime ok"), the application window rendered the text, File > Quit invoked the unsaved-changes dialog, choosing "Don't Save" closed the dialog, and the guest returned cleanly to Finder.
  • Screenshot evidence: Unmodified P6 PPM captures at guest_boot.ppm (SHA-256 7dc1fce7441346067023e89d542dc95e9c2e91006e26703769a4326a7c8e6ab2) and application_state.ppm (SHA-256 2fc378da228afdb12490e3079eb913d2e485f79c8e87966758e152cf61de8bf1).
  • Disk integrity: Base guest disk hash unchanged (SHA-256 5998d787dea695734948a52285e7b57d6cae840f2681a174f98e33ec9e8045e8).

Support boundaries and current limitations

  • Host platform: Linux x86-64 only. macOS and Windows hosts are not supported.
  • Qualified primary target: Classic Mac OS 9 PowerPC CFM/PEF applications, primarily in C.
  • Experimental 68K profile: C89, one near-model CODE 1 segment, CODE 0 jump table/startup, bounded PC-relative file-backed data, and no external linked libraries. CFM-68K and multi-segment A5 applications are not supported in v0.1.1.
  • Rust integration: Demonstrates CLI integration with external big-endian PowerPC XCOFF objects from a pinned Rust nightly compiler. macMAKE does not bundle rustc or compile Rust source directly.
  • C++ support: Limited to preview syntax without Itanium ABI runtime parity, general RTTI, exception handling, or libstdc++.
  • CodeWarrior XML import: Handles project structure, source membership, and access paths from XML exports; does not read proprietary binary .mcp files.
  • Third-party SDK material: Apple Universal Interfaces and Metrowerks MSL are proprietary historical materials. Users must supply files they are authorized to use.

Working examples

The release includes reproducible, inspectable examples:

Installation

Install macMAKE for the current Linux user:

curl -fsSL https://macmake.dev/install.sh | bash

To opt out of post-install completion telemetry:

curl -fsSL https://macmake.dev/install.sh | bash -s -- --no-analytics

To fetch the versioned minimal SDK subset during installation (requires authorization for Apple Universal Interfaces):

curl -fsSL https://macmake.dev/install.sh | bash -s -- --with-sdk

Licensing and corresponding source

The macMAKE CLI executable and proprietary core are closed-source software under the macMAKE Proprietary Binary License v1.0. It permits free development, testing, agentic coding, and commercial software creation while restricting redistribution of the proprietary binary. Developers retain complete ownership of applications they build with macMAKE.

The toolchain bundles GNU GCC 12.2.0 and GNU Binutils 2.46.1 executables for PowerPC and Motorola 68000 targets. These remain licensed under the GPL and their respective terms. The matching GNU corresponding source release is published at:
macmake-v0.1.1-rc4-toolchain-sources (archive SHA-256 ddd3b20cbaf3e2cbdca4ed5f61f34946065f71089b9ea7a99bac188213145433).

Release Assets

  • macmake-v0.1.1-linux-x86_64.tar.xz (73,934,728 bytes)
    SHA-256: d83c173d4184a67738df3bad7d0cadb2b6eab45fa2cc06df89f9f7eff4bd0656
  • macmake-v0.1.1-linux-x86_64.tar.xz.sha256
  • macmake-v0.1.1-component-manifest.json
  • macmake-v0.1.1-file-inventory.txt