# RMX-19 build & install Makefile (macOS arm64 and Linux) # # make configure + build (VST3 everywhere; AU additionally on macOS) # make install build and install the VST3 (and AU on macOS). macOS bundles # are ad-hoc codesigned and de-quarantined; on Linux the plug-in # is copied to ~/.vst3 # make uninstall remove installed bundles # make clean delete the CMake build tree # # Note (macOS): after install, restart (or cold-start) the audio host so it # rescans AudioComponents. A fresh AU/AUv3 may first appear after a host relaunch. BUILD_DIR ?= build CONFIG ?= Release PLUGIN_BASE = RMX-19 CMAKE := cmake BUILD_DIR_ABSPATH := $(abspath $(BUILD_DIR)) ARTEFACTS := $(BUILD_DIR)/RMX19_artefacts/$(CONFIG) JUCE_DIR := $(BUILD_DIR)/JUCE JUCE_REPO := https://github.com/juce-framework/JUCE.git JUCE_TAG := 8.0.4 VST3_SRC := $(ARTEFACTS)/VST3/$(PLUGIN_BASE).vst3 AU_SRC := $(ARTEFACTS)/AU/$(PLUGIN_BASE).component UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Darwin) VST3_DEST := $(HOME)/Library/Audio/Plug-Ins/VST3/$(PLUGIN_BASE).vst3 AU_DEST := $(HOME)/Library/Audio/Plug-Ins/Components/$(PLUGIN_BASE).component USER_PLUGIN_DIRS := $(HOME)/Library/Audio/Plug-Ins/VST3 $(HOME)/Library/Audio/Plug-Ins/Components else # Linux/BSD: the VST3 SDK scans ~/.vst3 by default. No AU, no codesigning. VST3_DEST := $(HOME)/.vst3/$(PLUGIN_BASE).vst3 AU_DEST := USER_PLUGIN_DIRS := $(HOME)/.vst3 endif .EXPORT_ALL_VARIABLES: CMAKE_BUILD_TYPE := $(CONFIG) .PHONY: all configure build install uninstall clean info juce all: build build: configure $(CMAKE) --build $(BUILD_DIR) --config $(CONFIG) --parallel juce: @if [ ! -d "$(JUCE_DIR)" ]; then \ echo "Fetching JUCE $(JUCE_TAG)..."; \ git clone -c advice.detachedHead=false --branch $(JUCE_TAG) --depth 1 $(JUCE_REPO) $(JUCE_DIR); \ else \ echo "JUCE already present at $(JUCE_DIR)"; \ fi # Re-run cmake on every invocation: it is cheap when nothing changed and keeps # the footer's git branch/hash and local build timestamp fresh. configure: juce $(CMAKE) -S . -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=$(CONFIG) -DJUCE_ROOT=$(JUCE_DIR) ifeq ($(UNAME_S),Darwin) install: build @codesign --force --deep --sign - "$(VST3_SRC)" >/dev/null 2>&1 || true @codesign --force --deep --sign - "$(AU_SRC)" >/dev/null 2>&1 || true @mkdir -p $(USER_PLUGIN_DIRS) @cp -Rf "$(VST3_SRC)" "$(HOME)/Library/Audio/Plug-Ins/VST3/" @cp -Rf "$(AU_SRC)" "$(HOME)/Library/Audio/Plug-Ins/Components/" @xattr -dr com.apple.quarantine "$(VST3_DEST)" 2>/dev/null || true @xattr -dr com.apple.quarantine "$(AU_DEST)" 2>/dev/null || true @echo "installed:" @echo " $(VST3_DEST)" @echo " $(AU_DEST)" @echo "" @echo "audiosignature:" @codesign -dv "$(VST3_DEST)" 2>&1 | head -1 @echo "" @echo "Restart your DAW / AudioHost to make the AU rescan." else install: build @mkdir -p $(USER_PLUGIN_DIRS) @rm -rf "$(VST3_DEST)" @cp -Rf "$(VST3_SRC)" "$(USER_PLUGIN_DIRS)/" @echo "installed:" @echo " $(VST3_DEST)" endif uninstall: @rm -rf "$(VST3_DEST)" "$(AU_DEST)" @echo "removed RMX-19 from user plug-in folder(s)." clean: @rm -rf $(BUILD_DIR) @echo "removed $(BUILD_DIR)." info: @echo "BUILD_DIR : $(BUILD_DIR_ABSPATH)" @echo "CONFIG : $(CONFIG)" @echo "VST3 : $(VST3_SRC)" @echo "AU : $(AU_SRC)"