mirror of
https://codeberg.org/armin/terion.git
synced 2026-10-11 16:41:53 +02:00
init
This commit is contained in:
parent
7e21684497
commit
5d4134966f
11 changed files with 996 additions and 0 deletions
108
Makefile
Normal file
108
Makefile
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# Terion — stereo analyzer VST3/AU
|
||||
# A thin wrapper around CMake, with macOS signing / un-quarantining helpers.
|
||||
|
||||
BUILD_DIR ?= build
|
||||
LOCAL_JUCE ?= third_party/JUCE
|
||||
HOME_JUCE := $(HOME)/JUCE
|
||||
CMAKE ?= cmake
|
||||
CONFIG ?= Release
|
||||
JUCE_REPO ?= https://github.com/juce-framework/JUCE.git
|
||||
JOBS ?= $(shell sysctl -n hw.ncpu 2>/dev/null || nproc 2>/dev/null || echo 4)
|
||||
# Codesign identity: leave empty for ad-hoc ("-") signing.
|
||||
CODESIGN_ID ?=
|
||||
|
||||
VST3_DIR := $(HOME)/Library/Audio/Plug-Ins/VST3/Terion.vst3
|
||||
AU_DIR := $(HOME)/Library/Audio/Plug-Ins/Components/Terion.component
|
||||
|
||||
# Prefer ~/JUCE if present, otherwise use the vendored copy in the repo.
|
||||
ifeq ($(strip $(JUCE_DIR)),)
|
||||
ifneq ($(wildcard $(HOME_JUCE)/CMakeLists.txt),)
|
||||
JUCE_DIR := $(HOME_JUCE)
|
||||
else
|
||||
JUCE_DIR := $(LOCAL_JUCE)
|
||||
endif
|
||||
endif
|
||||
|
||||
.PHONY: all juce configure build install sign unquarantine uninstall clean deepclean help
|
||||
|
||||
all: configure
|
||||
$(CMAKE) --build $(BUILD_DIR) --config $(CONFIG) -j$(JOBS)
|
||||
|
||||
# Ensure a JUCE source tree is available: use ~/JUCE, else clone into third_party/.
|
||||
juce:
|
||||
@if [ ! -f "$(JUCE_DIR)/CMakeLists.txt" ]; then \
|
||||
if [ ! -d "$(dir $(JUCE_DIR))" ]; then mkdir -p "$(dir $(JUCE_DIR))"; fi; \
|
||||
echo "JUCE not found at $(JUCE_DIR) — cloning into it..."; \
|
||||
git clone --depth 1 "$(JUCE_REPO)" "$(JUCE_DIR)"; \
|
||||
else \
|
||||
echo "JUCE already present at $(JUCE_DIR)."; \
|
||||
fi
|
||||
|
||||
# The build target auto-installs plugins via JUCE's COPY_PLUGIN_AFTER_BUILD.
|
||||
configure: juce
|
||||
$(CMAKE) -S . -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=$(CONFIG) -DTERION_JUCE_DIR=$(JUCE_DIR)
|
||||
|
||||
build:
|
||||
$(CMAKE) --build $(BUILD_DIR) --config $(CONFIG) -j$(JOBS)
|
||||
@echo "Plugins built into $(BUILD_DIR)/Terion_artefacts/$(CONFIG)."
|
||||
|
||||
# Ad-hoc (or identity) codesign both plugin bundles, recursively.
|
||||
sign:
|
||||
@if [ -d "$(VST3_DIR)" ]; then \
|
||||
echo "Signing VST3 ..."; \
|
||||
codesign --force --deep --sign "$(if $(CODESIGN_ID),$(CODESIGN_ID),-)" "$(VST3_DIR)"; \
|
||||
else \
|
||||
echo "VST3 bundle not found at $(VST3_DIR) — run 'make build' first."; \
|
||||
fi
|
||||
@if [ -d "$(AU_DIR)" ]; then \
|
||||
echo "Signing AU ..."; \
|
||||
codesign --force --deep --sign "$(if $(CODESIGN_ID),$(CODESIGN_ID),-)" "$(AU_DIR)"; \
|
||||
else \
|
||||
echo "AU bundle not found at $(AU_DIR) — run 'make build' first."; \
|
||||
fi
|
||||
|
||||
# Strip Gatekeeper quarantine / provenance attributes from the installed bundles.
|
||||
unquarantine:
|
||||
@if [ -d "$(VST3_DIR)" ]; then \
|
||||
echo "Removing quarantine from VST3 ..."; \
|
||||
xattr -dr com.apple.quarantine "$(VST3_DIR)" 2>/dev/null || true; \
|
||||
xattr -dr com.apple.provenance "$(VST3_DIR)" 2>/dev/null || true; \
|
||||
fi
|
||||
@if [ -d "$(AU_DIR)" ]; then \
|
||||
echo "Removing quarantine from AU ..."; \
|
||||
xattr -dr com.apple.quarantine "$(AU_DIR)" 2>/dev/null || true; \
|
||||
xattr -dr com.apple.provenance "$(AU_DIR)" 2>/dev/null || true; \
|
||||
fi
|
||||
|
||||
install: build sign unquarantine
|
||||
@echo "Terion VST3/AU installed, signed, and un-quarantined."
|
||||
@echo " VST3: $(VST3_DIR)"
|
||||
@echo " AU: $(AU_DIR)"
|
||||
|
||||
uninstall:
|
||||
rm -rf "$(VST3_DIR)"
|
||||
rm -rf "$(AU_DIR)"
|
||||
@echo "Uninstalled Terion from the user Audio Plug-Ins directories."
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
# Fully remove generated artefacts, including the vendored JUCE copy.
|
||||
deepclean: clean
|
||||
rm -rf build Terion_artefacts third_party
|
||||
|
||||
help:
|
||||
@echo "Targets:"
|
||||
@echo " all configure + build"
|
||||
@echo " juce clone JUCE into third_party/JUCE if missing (else use ~/JUCE)"
|
||||
@echo " configure run CMake configure against $(BUILD_DIR)"
|
||||
@echo " build compile the configured tree"
|
||||
@echo " sign codesign both installed plugin bundles (ad-hoc by default)"
|
||||
@echo " unquarantine strip Gatekeeper quarantine/provenance xattrs"
|
||||
@echo " install build + sign + unquarantine into ~/Library/Audio/Plug-Ins"
|
||||
@echo " uninstall remove installed plugins"
|
||||
@echo " clean remove $(BUILD_DIR)"
|
||||
@echo " deepclean remove build dir, artefacts, and third_party/"
|
||||
@echo ""
|
||||
@echo "Variables: BUILD_DIR= JUCE_DIR= CONFIG= JOBS= CMAKE= JUCE_REPO="
|
||||
@echo " CODESIGN_ID= (e.g. 'Developer ID Application: X' — empty = ad-hoc)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue