From 9d57fd092d60112626dd60e0e809a71f63411c5c Mon Sep 17 00:00:00 2001 From: Armin Date: Wed, 22 Jul 2026 17:45:43 +0200 Subject: [PATCH] Colorize Makefile build output, use portable getconf for CPU count --- CMakeLists.txt | 2 +- Makefile | 50 +++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6994d15..bb59761 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,4 +91,4 @@ target_link_libraries(Monoslicer ) # Suppress JUCE / VST3 SDK warnings globally for all targets. -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations -Wno-implicit-int-conversion-on-negation") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fcolor-diagnostics -Wno-deprecated-declarations -Wno-implicit-int-conversion-on-negation") diff --git a/Makefile b/Makefile index de52ce7..0e9cbdb 100644 --- a/Makefile +++ b/Makefile @@ -4,34 +4,62 @@ JUCE_TAG := 8.0.9 BUILD_DIR := build CMAKE_ARGS := -DCMAKE_BUILD_TYPE=Release +C_RESET := \033[0m +C_BOLD := \033[1m +C_DIM := \033[2m +C_CYAN := \033[36m +C_GREEN := \033[32m +C_YELLOW := \033[33m + +STEP = @printf '$(C_BOLD)$(C_CYAN)▸$(C_RESET) $(C_BOLD)$(1)$(C_RESET)\n' +INFO = @printf '$(C_DIM) $(1)$(C_RESET)\n' +COLORIZE = sed -E "$$(printf ' \ + s/([0-9]+)%%/\033[92m\\1%%\033[0m/g; \ + s/(Building [A-Z]+ object [^ ]+)/\033[34m\\1\033[0m/g; \ + s/(Linking [A-Z]+ [^ ]+)/\033[35m\\1\033[0m/g; \ + s/(Configuring done)/\033[92m\\1\033[0m/g; \ + s/(Generating done)/\033[92m\\1\033[0m/g; \ + s/(Build files have been written to: .+)/\033[92m\\1\033[0m/g; \ + s/(-- [A-Z].+)/\033[94m\\1\033[0m/g; \ + s/(-- .+ - (done|yes|no))$$/\033[92m\\1\033[0m/g; \ + s/(.*error:.*)$$/\033[1m\\1\033[0m/i \ +')" + .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) + $(call STEP,Fetching JUCE $(JUCE_TAG)) + $(call INFO,cloning $(C_CYAN)juce-framework/JUCE$(C_RESET)$(C_DIM)@$(JUCE_TAG)$(C_RESET)) + git clone --depth 1 --branch $(JUCE_TAG) $(JUCE_REPO) $(JUCE_DIR) | $(COLORIZE) fetch: $(JUCE_DIR)/CMakeLists.txt configure: fetch - @echo ">>> Configuring..." - mkdir -p $(BUILD_DIR) - cmake -B $(BUILD_DIR) -S . $(CMAKE_ARGS) + $(call STEP,Configuring CMake) + $(call INFO,$(C_DIM)cmake -B build -S . -DCMAKE_BUILD_TYPE=Release$(C_RESET)) + cmake -B $(BUILD_DIR) -S . $(CMAKE_ARGS) | $(COLORIZE) build: configure - @echo ">>> Building Monoslicer..." - cmake --build $(BUILD_DIR) -j$$(sysctl -n hw.ncpu) + $(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) install: build - @echo ">>> Installing plugins..." + $(call STEP,Installing plugins) + $(call INFO,$(C_DIM)AU → ~/Library/Audio/Plug-Ins/Components$(C_RESET)) 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/ + $(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/ - @echo ">>> Rescanning Audio Units..." + $(call STEP,Rescanning Audio Units) killall -9 AudioComponentRegistrar 2>/dev/null; true - @echo ">>> Done. Monoslicer installed as AU and VST3." + @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' clean: + $(call STEP,Cleaning) rm -rf $(BUILD_DIR) + $(call INFO,$(C_DIM)removed $(BUILD_DIR)/$(C_RESET)) + @printf ' $(C_GREEN)$(C_BOLD)✓ Clean.$(C_RESET)\n'