mirror of
https://codeberg.org/armin/monoslicer.git
synced 2026-10-11 21:11:53 +02:00
Add drag-and-drop regression test and build targets
This commit is contained in:
parent
ca6f1ff0ee
commit
f28e4d37c5
7 changed files with 329 additions and 39 deletions
69
Makefile
69
Makefile
|
|
@ -2,7 +2,32 @@ 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
|
||||
TEST_BUILD_DIR := build-tests
|
||||
BUILD_TYPE := Release
|
||||
CMAKE_ARGS := -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 || nproc 2>/dev/null || echo 4)
|
||||
else
|
||||
JOBS := $(shell nproc 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 4)
|
||||
endif
|
||||
|
||||
ARTEFACTS := $(BUILD_DIR)/Monoslicer_artefacts/$(BUILD_TYPE)
|
||||
VST3 := $(ARTEFACTS)/VST3/Monoslicer.vst3
|
||||
|
||||
# AU only exists on macOS; Standalone is a .app on macOS, a plain binary elsewhere
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
AU := $(ARTEFACTS)/AU/Monoslicer.component
|
||||
AU_DIR := ~/Library/Audio/Plug-Ins/Components
|
||||
VST3_DIR := ~/Library/Audio/Plug-Ins/VST3
|
||||
FORMATS := AU and VST3
|
||||
else
|
||||
AU :=
|
||||
VST3_DIR := ~/.vst3
|
||||
FORMATS := VST3
|
||||
endif
|
||||
|
||||
C_RESET := \033[0m
|
||||
C_BOLD := \033[1m
|
||||
|
|
@ -25,9 +50,9 @@ COLORIZE = sed -E "$$(printf ' \
|
|||
s/(.*error:.*)$$/\033[1m\\1\033[0m/i \
|
||||
')"
|
||||
|
||||
.PHONY: all clean fetch configure build install
|
||||
.PHONY: all clean fetch configure build install test
|
||||
|
||||
all: install
|
||||
all: build
|
||||
|
||||
$(JUCE_DIR)/CMakeLists.txt:
|
||||
$(call STEP,Fetching JUCE $(JUCE_TAG))
|
||||
|
|
@ -38,28 +63,42 @@ fetch: $(JUCE_DIR)/CMakeLists.txt
|
|||
|
||||
configure: fetch
|
||||
$(call STEP,Configuring CMake)
|
||||
$(call INFO,$(C_DIM)cmake -B build -S . -DCMAKE_BUILD_TYPE=Release$(C_RESET))
|
||||
$(call INFO,$(C_DIM)cmake -B $(BUILD_DIR) -S . $(CMAKE_ARGS)$(C_RESET))
|
||||
cmake -B $(BUILD_DIR) -S . $(CMAKE_ARGS) | $(COLORIZE)
|
||||
|
||||
build: configure
|
||||
$(call STEP,Building Monoslicer)
|
||||
$(call INFO,$(C_DIM)$(C_YELLOW)$(shell getconf _NPROCESSORS_ONLN)$(C_RESET)$(C_DIM) parallel jobs$(C_RESET))
|
||||
cmake --build $(BUILD_DIR) -j$(shell getconf _NPROCESSORS_ONLN) | $(COLORIZE)
|
||||
$(call INFO,$(C_DIM)$(C_YELLOW)$(JOBS)$(C_RESET)$(C_DIM) parallel jobs$(C_RESET))
|
||||
cmake --build $(BUILD_DIR) -j$(JOBS) | $(COLORIZE)
|
||||
|
||||
install: build
|
||||
$(call STEP,Installing plugins)
|
||||
$(call INFO,$(C_DIM)AU → ~/Library/Audio/Plug-Ins/Components$(C_RESET))
|
||||
mkdir -p ~/Library/Audio/Plug-Ins/Components
|
||||
cp -R $(BUILD_DIR)/Monoslicer_artefacts/Release/AU/Monoslicer.component ~/Library/Audio/Plug-Ins/Components/
|
||||
$(call INFO,$(C_DIM)VST3 → ~/Library/Audio/Plug-Ins/VST3$(C_RESET))
|
||||
mkdir -p ~/Library/Audio/Plug-Ins/VST3
|
||||
cp -R $(BUILD_DIR)/Monoslicer_artefacts/Release/VST3/Monoslicer.vst3 ~/Library/Audio/Plug-Ins/VST3/
|
||||
ifeq ($(UNAME_S),Darwin)
|
||||
$(call INFO,AU → $(AU_DIR))
|
||||
mkdir -p $(AU_DIR)
|
||||
cp -R $(AU) $(AU_DIR)/
|
||||
$(call INFO,VST3 → $(VST3_DIR))
|
||||
mkdir -p $(VST3_DIR)
|
||||
cp -R $(VST3) $(VST3_DIR)/
|
||||
$(call STEP,Rescanning Audio Units)
|
||||
killall -9 AudioComponentRegistrar 2>/dev/null; true
|
||||
@printf '\n $(C_GREEN)$(C_BOLD)✓ Done.$(C_RESET) $(C_GREEN)Monoslicer$(C_RESET)$(C_DIM) installed as AU and VST3$(C_RESET)\n\n'
|
||||
else
|
||||
$(call INFO,VST3 → $(VST3_DIR))
|
||||
mkdir -p $(VST3_DIR)
|
||||
cp -R $(VST3) $(VST3_DIR)/
|
||||
endif
|
||||
@printf '\n $(C_GREEN)$(C_BOLD)✓ Done.$(C_RESET) $(C_GREEN)Monoslicer$(C_RESET)$(C_DIM) installed as $(FORMATS)$(C_RESET)\n\n'
|
||||
|
||||
clean:
|
||||
$(call STEP,Cleaning)
|
||||
rm -rf $(BUILD_DIR)
|
||||
$(call INFO,$(C_DIM)removed $(BUILD_DIR)/$(C_RESET))
|
||||
rm -rf $(BUILD_DIR) $(TEST_BUILD_DIR)
|
||||
$(call INFO,$(C_DIM)removed $(BUILD_DIR)/ and $(TEST_BUILD_DIR)/$(C_RESET))
|
||||
@printf ' $(C_GREEN)$(C_BOLD)✓ Clean.$(C_RESET)\n'
|
||||
|
||||
# Tests live in their own build dir so `make` stays fast.
|
||||
test:
|
||||
$(call STEP,Building and running tests)
|
||||
$(call INFO,$(C_DIM)separate build dir → $(TEST_BUILD_DIR)$(C_RESET))
|
||||
cmake -B $(TEST_BUILD_DIR) -S . $(CMAKE_ARGS) -DMONOSLICER_BUILD_TESTS=ON > /dev/null
|
||||
cmake --build $(TEST_BUILD_DIR) -j$(JOBS) --target MonoslicerDnDTest > /dev/null
|
||||
$(TEST_BUILD_DIR)/MonoslicerDnDTest_artefacts/$(BUILD_TYPE)/MonoslicerDnDTest
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue