Skip to content

Cross-build Intel macOS jobs on Apple Silicon - #705

Draft
CoffeeFlux wants to merge 3 commits into
TypesettingTools:masterfrom
CoffeeFlux:macos-intel-cross-build
Draft

Cross-build Intel macOS jobs on Apple Silicon#705
CoffeeFlux wants to merge 3 commits into
TypesettingTools:masterfrom
CoffeeFlux:macos-intel-cross-build

Conversation

@CoffeeFlux

@CoffeeFlux CoffeeFlux commented Sep 5, 2026

Copy link
Copy Markdown
Member

Summary

Draft for consideration after 3.5.0; not intended to block or join that release.

  • Move Intel macOS Release to an Apple Silicon runner using an x86_64 Meson cross file, and drop the Intel Debug lane.
  • Build Release target dependencies from source and exclude Homebrew target-library discovery. Keep native arm64 Debug on Homebrew without packaging, and retain native arm64 Release.
  • Make the FFTW bootstrap use the Meson target architecture, and build native Busted modules for Intel test executables.
  • Run Intel tests through Rosetta, verify executable architectures, and fail if tests are skipped.
  • Document the cross-build setup and testing limitations.

Validation

Locally on Apple Silicon:

  • Release and debugoptimized builds succeeded with FFTW enabled.
  • Both configurations passed all three Aegisub test groups under Rosetta: 367 C++ tests, the Lua compatibility test, and 95 Automation tests.
  • The release app passed the macOS 13.0 deployment-target check and ad-hoc signature verification.
  • DMG creation and checksum verification passed, with the expected x64 artifact name.
  • Workflow structure validation, shell syntax checks, ShellCheck for the FFTW script, and git diff --check passed. Full actionlint reports only pre-existing diagnostics from interpreting Windows PowerShell steps as shell.

All four macOS lanes passed the initial hosted CI run, including Intel architecture checks, Rosetta tests, and Release DMG uploads. Intel Release finished in 26m25s. Intel Debug has since been removed; the reduced six-job matrix passes local workflow validation and awaits its updated CI results. Testing on real Intel hardware remains outstanding; Rosetta testing does not replace a real Intel release smoke test.

Review follow-up

  • Keep FFTW runtime probes enabled on native builds by passing --host only when the build and target CPUs differ. Include the build CPU in the local stamp to invalidate prior configurations.
  • Share pkg-config and CMake dependency-search restrictions through tools/macos-release.ini: a native file for arm64 Release and part of the composed Intel cross files. arm64 Debug is unchanged.
  • Locally validated a fresh native arm64 Release build, all three Aegisub test groups, bundling, the macOS 13.0 deployment target, and ad-hoc signature verification.
  • Validated fresh Intel configuration/reconfiguration, source FFTW selection, both FFTW archive architectures, and a transform smoke test against each library (Intel under Rosetta). Native configure reports cross-compiling=no and working strtod=yes; Intel retains explicit cross-compilation mode.
  • Neither Release configuration has Homebrew paths in its dependency compile/link arguments. ShellCheck, workflow structure validation, and git diff --check passed. Full hosted CI for this follow-up is pending.

Use native Apple Silicon build tools with an x86_64 Meson cross file, source-built target dependencies, and Rosetta test execution. Build FFTW and Busted native modules for the target architecture, and assert Intel outputs and non-skipped tests in CI. Keep arm64 Debug on Homebrew and both Debug lanes unpackaged.
Only pass an Autoconf host triplet for a different build CPU, and include the build CPU in the FFTW stamp. Share pkg-config and CMake search restrictions between native arm64 and cross-built Intel Release without affecting Debug.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant