mirror of
https://codeberg.org/armin/wavetable.git
synced 2026-10-11 16:02:19 +02:00
add Makefile, macOS Ninja preset, optional VST2 SDK
Build with a plain "make install": it builds via CMake presets, installs the AU/VST3/CLAP bundles into ~/Library/Audio/Plug-Ins and syncs the factory presets and wavetables to /Library/Audio/Presets, which is the only location the plugin reads them from on macOS. Adds a macOS Ninja Multi-Config preset for faster incremental builds, and drops the VST format when the non-redistributable plugin_sdk submodule is not checked out so the remaining formats still build.
This commit is contained in:
parent
0399fa39dc
commit
8488acaaf9
3 changed files with 126 additions and 1 deletions
|
|
@ -57,7 +57,17 @@ endif()
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
set (FORMATS Standalone VST VST3 LV2)
|
set (FORMATS Standalone VST VST3 LV2)
|
||||||
else()
|
else()
|
||||||
set (FORMATS Standalone VST VST3 AU LV2)
|
set (FORMATS Standalone VST3 AU LV2)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# The VST2 SDK is an optional, non-redistributable submodule. Drop the VST
|
||||||
|
# format when it isn't checked out so the remaining formats still build.
|
||||||
|
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/modules/plugin_sdk/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h")
|
||||||
|
if (NOT WIN32)
|
||||||
|
list (INSERT FORMATS 1 VST)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message (STATUS "VST2 SDK not found — skipping the VST format")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_property (GLOBAL PROPERTY USE_FOLDERS YES)
|
set_property (GLOBAL PROPERTY USE_FOLDERS YES)
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,32 @@
|
||||||
"patch": 0
|
"patch": 0
|
||||||
},
|
},
|
||||||
"version": 5,
|
"version": 5,
|
||||||
|
"configurePresets": [
|
||||||
|
{
|
||||||
|
"condition": {
|
||||||
|
"lhs": "${hostSystemName}",
|
||||||
|
"rhs": "Darwin",
|
||||||
|
"type": "equals"
|
||||||
|
},
|
||||||
|
"displayName": "Build with Ninja on macOS",
|
||||||
|
"generator": "Ninja Multi-Config",
|
||||||
|
"inherits": "base",
|
||||||
|
"name": "macos"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buildPresets": [
|
||||||
|
{
|
||||||
|
"condition": {
|
||||||
|
"lhs": "${hostSystemName}",
|
||||||
|
"rhs": "Darwin",
|
||||||
|
"type": "equals"
|
||||||
|
},
|
||||||
|
"configurePreset": "macos",
|
||||||
|
"displayName": "Build with Ninja on macOS",
|
||||||
|
"inherits": "base",
|
||||||
|
"name": "macos"
|
||||||
|
}
|
||||||
|
],
|
||||||
"include": [
|
"include": [
|
||||||
"modules/gin/ci/toolchains/xcode.json",
|
"modules/gin/ci/toolchains/xcode.json",
|
||||||
"modules/gin/ci/toolchains/vs.json",
|
"modules/gin/ci/toolchains/vs.json",
|
||||||
|
|
|
||||||
89
Makefile
Normal file
89
Makefile
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
# 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue