# ChromaFlock — Makefile wrapping CMake
# Usage:
#   make            — configure (if needed) + build Release
#   make debug      — configure + build Debug
#   make clean      — remove build directory
#   make rebuild    — clean + build Release
#   make install    — build + copy plugins to system dirs (make itself never installs)
#   make run        — build Standalone and launch
#   make help       — show help

BUILD_DIR    := build
BUILD_TYPE   := Release
CMAKE_FLAGS  := -DCMAKE_BUILD_TYPE=$(BUILD_TYPE)
UNAME_S      := $(shell uname -s)

# Platform-aware CPU count
ifeq ($(UNAME_S),Darwin)
  JOBS       := $(shell sysctl -n hw.ncpu 2>/dev/null || echo 4)
else
  JOBS       := $(shell nproc 2>/dev/null || echo 4)
endif

# Artefact paths
ifeq ($(UNAME_S),Darwin)
  APP := $(BUILD_DIR)/ChromaFlock_artefacts/$(BUILD_TYPE)/Standalone/ChromaFlock.app
else
  APP := $(BUILD_DIR)/ChromaFlock_artefacts/$(BUILD_TYPE)/Standalone/ChromaFlock
endif

.PHONY: all debug release clean rebuild configure install run help

all: release

release:
	@cmake -B $(BUILD_DIR) $(CMAKE_FLAGS)
	@cmake --build $(BUILD_DIR) --config $(BUILD_TYPE) -j$(JOBS)

debug:
	@cmake -B $(BUILD_DIR) -DCMAKE_BUILD_TYPE=Debug
	@cmake --build $(BUILD_DIR) --config Debug -j$(JOBS)

configure:
	@cmake -B $(BUILD_DIR) $(CMAKE_FLAGS)

clean:
	@rm -rvf $(BUILD_DIR)

rebuild: clean all

install: all
ifeq ($(UNAME_S),Darwin)
	@mkdir -p "$(HOME)/Library/Audio/Plug-Ins/VST3" "$(HOME)/Library/Audio/Plug-Ins/Components"
	@rm -rf "$(HOME)/Library/Audio/Plug-Ins/VST3/ChromaFlock.vst3"
	@cp -R "$(BUILD_DIR)/ChromaFlock_artefacts/$(BUILD_TYPE)/VST3/ChromaFlock.vst3" "$(HOME)/Library/Audio/Plug-Ins/VST3/"
	@rm -rf "$(HOME)/Library/Audio/Plug-Ins/Components/ChromaFlock.component"
	@cp -R "$(BUILD_DIR)/ChromaFlock_artefacts/$(BUILD_TYPE)/AU/ChromaFlock.component" "$(HOME)/Library/Audio/Plug-Ins/Components/"
	@echo "Installed VST3 to ~/Library/Audio/Plug-Ins/VST3/"
	@echo "Installed AU   to ~/Library/Audio/Plug-Ins/Components/"
else ifeq ($(UNAME_S),Linux)
	@mkdir -p $(HOME)/.vst3
	@rm -rf $(HOME)/.vst3/ChromaFlock.vst3
	@cp -r $(BUILD_DIR)/ChromaFlock_artefacts/$(BUILD_TYPE)/VST3/ChromaFlock.vst3 $(HOME)/.vst3/
	@echo "Installed ChromaFlock.vst3 to ~/.vst3/"
else
	@echo "Install paths unknown for this platform."
endif

run: release
ifeq ($(UNAME_S),Darwin)
	open "$(APP)"
else
	"$(APP)" &
endif

help:
	@echo "ChromaFlock Makefile"
	@echo ""
	@echo "  make            — Build Release (VST3/Standalone)"
	@echo "  make debug      — Build Debug"
	@echo "  make clean      — Remove build/"
	@echo "  make rebuild    — Clean + Build Release"
	@echo "  make configure  — Run CMake configure only"
	@echo "  make install    — Install VST3 + AU to system dirs"
	@echo "  make run        — Build and launch Standalone app"
	@echo "  make help       — This message"
