JUCE_REPO    := https://github.com/juce-framework/JUCE.git
JUCE_DIR     := lib/JUCE
JUCE_TAG     := 8.0.9
BUILD_DIR    := build
CMAKE_ARGS   := -DCMAKE_BUILD_TYPE=Release

.PHONY: all clean fetch configure build install

all: install

$(JUCE_DIR)/CMakeLists.txt:
	@echo ">>> Fetching JUCE $(JUCE_TAG)..."
	git clone --depth 1 --branch $(JUCE_TAG) $(JUCE_REPO) $(JUCE_DIR)

fetch: $(JUCE_DIR)/CMakeLists.txt

configure: fetch
	@echo ">>> Configuring..."
	mkdir -p $(BUILD_DIR)
	cmake -B $(BUILD_DIR) -S . $(CMAKE_ARGS)

build: configure
	@echo ">>> Building MonoSlicer..."
	cmake --build $(BUILD_DIR) -j$$(sysctl -n hw.ncpu)

install: build
	@echo ">>> Installing plugins..."
	mkdir -p ~/Library/Audio/Plug-Ins/Components
	mkdir -p ~/Library/Audio/Plug-Ins/VST3
	cp -R $(BUILD_DIR)/MonoSlicer_artefacts/Release/AU/MonoSlicer.component ~/Library/Audio/Plug-Ins/Components/
	cp -R $(BUILD_DIR)/MonoSlicer_artefacts/Release/VST3/MonoSlicer.vst3 ~/Library/Audio/Plug-Ins/VST3/
	@echo ">>> Rescanning Audio Units..."
	killall -9 AudioComponentRegistrar 2>/dev/null; true
	@echo ">>> Done. MonoSlicer installed as AU and VST3."

clean:
	rm -rf $(BUILD_DIR)
