Skip to content

MacOS build#1

Merged
justonem0reuser merged 3 commits intojustonem0reuser:masterfrom
dredozubov:macos-build
Dec 23, 2025
Merged

MacOS build#1
justonem0reuser merged 3 commits intojustonem0reuser:masterfrom
dredozubov:macos-build

Conversation

@dredozubov
Copy link
Contributor

Add macOS Build Support & Modernize CMake

Summary

  • Add macOS CI build job for VST3 and Audio Unit plugins (Universal Binary)
  • Modernize CMake to use FetchContent for automatic dependency management
  • Add comprehensive build documentation

Changes

CMakeLists.txt

  • Replace manual ../JUCE and ../AlgLib paths with CMake FetchContent
  • Dependencies are now downloaded automatically during configure
  • No external setup required - just clone and build

CI Pipeline (.github/workflows/build.yml)

  • Add build-macos job running on macos-latest
  • Build Universal Binary (x86_64 + arm64) for Intel and Apple Silicon
  • Upload VST3 and AU plugin artifacts

Documentation

  • Add BUILDING.md with prerequisites and build instructions for macOS, Linux, and Windows
  • Include installation paths for each platform

.gitignore

  • Add build/ directory

Test Plan

  • Verify macOS CI build completes successfully
  • Verify Linux CI build still works with FetchContent
  • Verify Windows CI build still works

@dredozubov dredozubov force-pushed the macos-build branch 2 times, most recently from 6735d0f to 221cc47 Compare December 21, 2025 13:53
@justonem0reuser
Copy link
Owner

justonem0reuser commented Dec 23, 2025

Thank you for the contribution - this is a really great improvement!

I'll merge it and then apply a follow-up commit to:

  • fetch external dependencies into external folders to make them reusable;
  • use raw download and unzip commands for AlgLib to prevent CMake files creating and keep both JUCE and AlgLib in theirs version-specific folders;
  • add running an external script (if exists) to the "install" target - for example, to run a DAW;
  • avoid caching JUCE build on Linux to prevent external dependency versions conflicts (cached JUCE vs MatchingCompressor);
  • add VST3 installer for Windows artefact using Inno Setup;
  • add a job for MasOS dev-only release.

I'll document these changes in more detail in the follow-up commit.

Thanks again!

@justonem0reuser justonem0reuser merged commit 5d7df62 into justonem0reuser:master Dec 23, 2025
6 checks passed
justonem0reuser added a commit that referenced this pull request Dec 24, 2025
CMakeLists.txt:
1. External dependencies are fetched into external folders to make them reusable.
2. Raw download and unzip commands for AlgLib are used  instead of FetchContent_Declare to prevent CMake files creating and keep both JUCE and AlgLib in theirs version-specific folders.
3. "Install" is added as a custom target to be displayed in the IDE (if MSVS is used).
4. Running an external script (if exists) is added to the "install" target - for example, to run a DAW.

build.yml:
1. JUCE and AlgLib dependency versions are read from CMakeLists.txt to avoid hard-coding them.
2. JUCE build result is not cached for Linux. The reason is that compiling both JUCE and MatchingCompressor under Linux requires external dependencies installation. If they don't match (older versions from JUCE cache and newer ones from "Install dependencies" step) then MatchingCompressor build will fail. Therefore, for Linux only JUCE and AlgLib sources are cached.
3. Windows VST3 installer release (Inno Setup) is restored.
4. MacOS dev-only release step is added with the necessary note in readme.txt.

BUILDING.md -> docs/build.md:
1. Building via Projucer section is added from docs/setup.txt.
2. Install commands a changed as cmake_install.cmake is created in /build/Release folder.
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.

2 participants