mirror of
https://codeberg.org/armin/wavetable.git
synced 2026-10-11 16:02:19 +02:00
89 lines
3.7 KiB
Makefile
89 lines
3.7 KiB
Makefile
|
|
# Convenience Makefile for Wavetable
|
||
|
|
# Builds via CMake presets (see CMakePresets.json), then installs the plugin
|
||
|
|
# bundles into ~/Library/Audio/Plug-Ins and the factory resources into
|
||
|
|
# /Library/Audio/Presets (see the PRESET_ROOT note below).
|
||
|
|
|
||
|
|
.PHONY: all configure build clean install uninstall uninstall-system pkg
|
||
|
|
|
||
|
|
PRESET ?= $(shell \
|
||
|
|
if command -v xcodebuild >/dev/null 2>&1 && xcodebuild -version >/dev/null 2>&1; then \
|
||
|
|
echo xcode; \
|
||
|
|
else \
|
||
|
|
echo macos; \
|
||
|
|
fi)
|
||
|
|
CONFIG ?= Release
|
||
|
|
|
||
|
|
PLUGIN = Wavetable
|
||
|
|
VENDOR = SocaLabs
|
||
|
|
|
||
|
|
BUILD_DIR = Builds/$(PRESET)
|
||
|
|
CACHE = $(BUILD_DIR)/CMakeCache.txt
|
||
|
|
ARTEFACTS = $(BUILD_DIR)/$(PLUGIN)_artefacts/$(CONFIG)
|
||
|
|
STAGE = $(BUILD_DIR)/install-stage
|
||
|
|
|
||
|
|
# Bundles go in the user directory so no sudo is needed and hosts prefer them.
|
||
|
|
PLUGIN_ROOT = $(HOME)/Library/Audio/Plug-Ins
|
||
|
|
|
||
|
|
# Factory presets and wavetables are only ever read from the system resource
|
||
|
|
# root on macOS (see systemResourceRoot() in PluginProcessor.cpp), so they have
|
||
|
|
# to go to /Library and need sudo.
|
||
|
|
SYSTEM_PLUGIN_ROOT = /Library/Audio/Plug-Ins
|
||
|
|
PRESET_ROOT = /Library/Audio/Presets/$(VENDOR)/$(PLUGIN)
|
||
|
|
|
||
|
|
all: build
|
||
|
|
|
||
|
|
configure: $(CACHE)
|
||
|
|
|
||
|
|
$(CACHE):
|
||
|
|
cmake --preset $(PRESET)
|
||
|
|
|
||
|
|
build: $(CACHE)
|
||
|
|
cmake --build --preset $(PRESET) --config $(CONFIG)
|
||
|
|
|
||
|
|
clean:
|
||
|
|
cmake --build --preset $(PRESET) --target clean 2>/dev/null || true
|
||
|
|
rm -rf $(BUILD_DIR)
|
||
|
|
|
||
|
|
install: build
|
||
|
|
@if [ -d "$(SYSTEM_PLUGIN_ROOT)/Components/$(PLUGIN).component" ] || [ -d "$(SYSTEM_PLUGIN_ROOT)/VST3/$(PLUGIN).vst3" ]; then \
|
||
|
|
echo "WARNING: an older system-wide install still exists in $(SYSTEM_PLUGIN_ROOT)."; \
|
||
|
|
echo " Hosts may load that one instead - run 'make uninstall-system'."; \
|
||
|
|
fi
|
||
|
|
@test -d "$(ARTEFACTS)/AU/$(PLUGIN).component" || { echo "Missing AU artefact in $(ARTEFACTS)"; exit 1; }
|
||
|
|
@test -d "$(ARTEFACTS)/VST3/$(PLUGIN).vst3" || { echo "Missing VST3 artefact in $(ARTEFACTS)"; exit 1; }
|
||
|
|
@test -d "$(ARTEFACTS)/CLAP/$(PLUGIN).clap" || { echo "Missing CLAP artefact in $(ARTEFACTS)"; exit 1; }
|
||
|
|
@echo "Staging $(CONFIG) artefacts..."
|
||
|
|
@rm -rf $(STAGE)
|
||
|
|
@mkdir -p $(STAGE)/Components $(STAGE)/VST3 $(STAGE)/CLAP $(STAGE)/Presets $(STAGE)/Wavetables
|
||
|
|
@cp -R "$(ARTEFACTS)/AU/$(PLUGIN).component" $(STAGE)/Components/
|
||
|
|
@cp -R "$(ARTEFACTS)/VST3/$(PLUGIN).vst3" $(STAGE)/VST3/
|
||
|
|
@cp -R "$(ARTEFACTS)/CLAP/$(PLUGIN).clap" $(STAGE)/CLAP/
|
||
|
|
@find plugin/Resources/Presets -name '*.xml' -type f -exec cp {} $(STAGE)/Presets/ \;
|
||
|
|
@cp -R plugin/Resources/WavetablesFLAC/. $(STAGE)/Wavetables/
|
||
|
|
@echo "Installing bundles to $(PLUGIN_ROOT)..."
|
||
|
|
@mkdir -p $(PLUGIN_ROOT)/Components $(PLUGIN_ROOT)/VST3 $(PLUGIN_ROOT)/CLAP
|
||
|
|
@rsync -a --delete "$(STAGE)/Components/$(PLUGIN).component/" "$(PLUGIN_ROOT)/Components/$(PLUGIN).component/"
|
||
|
|
@rsync -a --delete "$(STAGE)/VST3/$(PLUGIN).vst3/" "$(PLUGIN_ROOT)/VST3/$(PLUGIN).vst3/"
|
||
|
|
@rsync -a --delete "$(STAGE)/CLAP/$(PLUGIN).clap/" "$(PLUGIN_ROOT)/CLAP/$(PLUGIN).clap/"
|
||
|
|
@echo "Installing resources to $(PRESET_ROOT)..."
|
||
|
|
sudo mkdir -p $(PRESET_ROOT)/Presets $(PRESET_ROOT)/Wavetables
|
||
|
|
sudo rsync -a --delete "$(STAGE)/Presets/" "$(PRESET_ROOT)/Presets/"
|
||
|
|
sudo rsync -a --delete "$(STAGE)/Wavetables/" "$(PRESET_ROOT)/Wavetables/"
|
||
|
|
@echo "Done. Restart your DAW to load the new binary."
|
||
|
|
|
||
|
|
uninstall:
|
||
|
|
rm -rf $(PLUGIN_ROOT)/Components/$(PLUGIN).component
|
||
|
|
rm -rf $(PLUGIN_ROOT)/VST3/$(PLUGIN).vst3
|
||
|
|
rm -rf $(PLUGIN_ROOT)/CLAP/$(PLUGIN).clap
|
||
|
|
rm -rf $(HOME)/Library/Audio/Presets/$(VENDOR)/$(PLUGIN)
|
||
|
|
|
||
|
|
# Removes the older system-wide install, otherwise hosts may keep loading it
|
||
|
|
# instead of the copy in ~/Library.
|
||
|
|
uninstall-system:
|
||
|
|
sudo rm -rf $(SYSTEM_PLUGIN_ROOT)/Components/$(PLUGIN).component
|
||
|
|
sudo rm -rf $(SYSTEM_PLUGIN_ROOT)/VST3/$(PLUGIN).vst3
|
||
|
|
sudo rm -rf $(SYSTEM_PLUGIN_ROOT)/CLAP/$(PLUGIN).clap
|
||
|
|
sudo rm -rf $(PRESET_ROOT)
|
||
|
|
|
||
|
|
pkg:
|
||
|
|
./Installer/build.sh
|