From 62767a4397db51cc38a15cdac6e9d02cecd4dac6 Mon Sep 17 00:00:00 2001 From: Stefano D'Angelo Date: Sun, 16 Jun 2024 11:18:29 +0200 Subject: [PATCH] improved vst3 makefile --- templates/vst3-make/Makefile | 150 +++++++++++++++++------------------ 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/templates/vst3-make/Makefile b/templates/vst3-make/Makefile index 7dc97c2..75ba37f 100644 --- a/templates/vst3-make/Makefile +++ b/templates/vst3-make/Makefile @@ -21,28 +21,28 @@ include vars.mk ifeq ($(OS), Windows_NT) - DLL_SUFFIX = .vst3 - PLATFORM = x86_64-win - VST3DIR = $(shell echo '${COMMONPROGRAMFILES}' | sed 's:\\:/:g')/VST3 - VST3DIR_USER = $(shell echo '${LOCALAPPDATA}' | sed 's:\\:/:g')/Programs/Common/VST3 - CC = gcc - CXX = g++ + DLL_SUFFIX := .vst3 + PLATFORM := x86_64-win + VST3DIR := $(shell echo '$(COMMONPROGRAMFILES)' | sed 's:\\:/:g')/VST3 + VST3DIR_USER := $(shell echo '$(LOCALAPPDATA)' | sed 's:\\:/:g')/Programs/Common/VST3 + CC := gcc + CXX := g++ else - UNAME_S = $(shell uname -s) + UNAME_S := $(shell uname -s) ifeq ($(UNAME_S), Darwin) - DLL_SUFFIX = - PLATFORM = MacOS - VST3DIR = /Library/Audio/Plug-Ins/VST3 - VST3DIR_USER = ${HOME}/Library/Audio/Plug-Ins/VST3 - CC = clang - CXX = clang++ + DLL_SUFFIX := + PLATFORM := MacOS + VST3DIR := /Library/Audio/Plug-Ins/VST3 + VST3DIR_USER := $(HOME)/Library/Audio/Plug-Ins/VST3 + CC := clang + CXX := clang++ else - DLL_SUFFIX = .so - PLATFORM = $(shell uname -m)-linux - VST3DIR = /usr/local/lib/vst3 - VST3DIR_USER = ${HOME}/.vst3 - CC = gcc - CXX = g++ + DLL_SUFFIX := .so + PLATFORM := $(shell uname -m)-linux + VST3DIR := /usr/local/lib/vst3 + VST3DIR_USER := $(HOME)/.vst3 + CC := gcc + CXX := g++ endif endif @@ -50,91 +50,89 @@ COMMON_DIR := $(or $(COMMON_DIR),.) DATA_DIR := $(or $(DATA_DIR),.) PLUGIN_DIR := $(or $(PLUGIN_DIR),src) -CFLAGS = -O3 -Wall -Wpedantic -Wextra -CFLAGS_ALL = -I${DATA_DIR}/src -I${PLUGIN_DIR} -fPIC ${CFLAGS} ${CFLAGS_EXTRA} +CFLAGS := -O3 -Wall -Wpedantic -Wextra +CFLAGS_ALL := -I$(DATA_DIR)/src -I$(PLUGIN_DIR) -fPIC $(CFLAGS) $(CFLAGS_EXTRA) -LDFLAGS = -LDFLAGS_ALL = -shared -lm ${LDFLAGS} ${LDFLAGS_EXTRA} +LDFLAGS := +LDFLAGS_ALL := -shared -lm $(LDFLAGS) $(LDFLAGS_EXTRA) -CXXFLAGS = ${CFLAGS} -CXXFLAGS_ALL = -I${DATA_DIR}/src -I${PLUGIN_DIR} -fPIC ${CXXFLAGS} ${CXXFLAGS_EXTRA} +CXXFLAGS := $(CFLAGS) +CXXFLAGS_ALL := -I$(DATA_DIR)/src -I$(PLUGIN_DIR) -fPIC $(CXXFLAGS) $(CXXFLAGS_EXTRA) ifeq ($(UNAME_S), Darwin) -CFLAGS_ALL := ${CFLAGS_ALL} -arch arm64 -arch x86_64 -LDFLAGS_ALL := ${LDFLAGS_ALL} -arch arm64 -arch x86_64 -CXXFLAGS_ALL := ${CXXFLAGS_ALL} -arch arm64 -arch x86_64 - ifeq (${HAS_UI}, yes) -LDFLAGS_ALL := ${LDFLAGS_ALL} -Wl,-framework,Foundation -Wl,-framework,Cocoa -Wl,-framework,Corevideo +CFLAGS_ALL := $(CFLAGS_ALL) -arch arm64 -arch x86_64 +LDFLAGS_ALL := $(LDFLAGS_ALL) -arch arm64 -arch x86_64 +CXXFLAGS_ALL := $(CXXFLAGS_ALL) -arch arm64 -arch x86_64 + ifeq ($(HAS_UI), yes) +LDFLAGS_ALL := $(LDFLAGS_ALL) -Wl,-framework,Foundation -Wl,-framework,Cocoa -Wl,-framework,Corevideo endif endif ifeq ($(UNAME_S), Linux) - ifeq (${HAS_UI}, yes) -CFLAGS_ALL := ${CFLAGS_ALL} $(shell pkg-config --cflags x11) -LDFLAGS_ALL := ${LDFLAGS_ALL} $(shell pkg-config --libs x11) -CXXFLAGS_ALL := ${CXXFLAGS_ALL} $(shell pkg-config --cflags x11) + ifeq ($(HAS_UI), yes) +CFLAGS_ALL := $(CFLAGS_ALL) $(shell pkg-config --cflags x11) +LDFLAGS_ALL := $(LDFLAGS_ALL) $(shell pkg-config --libs x11) +CXXFLAGS_ALL := $(CXXFLAGS_ALL) $(shell pkg-config --cflags x11) endif endif -BUNDLE_DIR = ${BUNDLE_NAME}.vst3 +BUNDLE_DIR := $(BUNDLE_NAME).vst3 -DLL_DIR = Contents/${PLATFORM} -DLL_FILE = ${DLL_DIR}/${BUNDLE_NAME}${DLL_SUFFIX} +DLL_DIR := Contents/$(PLATFORM) +DLL_FILE := $(DLL_DIR)/$(BUNDLE_NAME)$(DLL_SUFFIX) -C_SRCS = ${COMMON_DIR}/src/vst3.c ${C_SRCS_EXTRA} -C_OBJS = $(addprefix build/obj/, $(notdir $(C_SRCS:.c=.o))) +C_SRCS := $(COMMON_DIR)/src/vst3.c $(C_SRCS_EXTRA) +C_OBJS := $(addprefix build/obj/, $(notdir $(C_SRCS:.c=.o))) -CXX_SRCS = ${CXX_SRCS_EXTRA} -CXX_OBJS = $(addprefix build/obj/, $(notdir $(CXX_SRCS:.cpp=.o))) +CXX_SRCS := $(CXX_SRCS_EXTRA) +CXX_OBJS := $(addprefix build/obj/, $(notdir $(CXX_SRCS:.cpp=.o))) + +ALL := build/$(BUNDLE_DIR)/$(DLL_FILE) ifeq ($(UNAME_S), Darwin) -all: build/${BUNDLE_DIR}/${DLL_FILE} build/${BUNDLE_DIR}/Contents/Info.plist build/${BUNDLE_DIR}/Contents/PkgInfo - -build/${BUNDLE_DIR}/Contents/%: ${DATA_DIR}/data/% | build/${BUNDLE_DIR}/Contents - cp $^ $@ -else -all: build/${BUNDLE_DIR}/${DLL_FILE} +ALL := $(ALL) build/$(BUNDLE_DIR)/Contents/Info.plist build/$(BUNDLE_DIR)/Contents/PkgInfo endif +all: $(ALL) + ifeq ($(CXX_OBJS),) -build/${BUNDLE_DIR}/${DLL_FILE}: ${C_OBJS} | build/${BUNDLE_DIR}/${DLL_DIR} - ${CC} $^ -o $@ ${CFLAGS_ALL} ${LDFLAGS_ALL} +build/$(BUNDLE_DIR)/$(DLL_FILE): $(C_OBJS) | build/$(BUNDLE_DIR)/$(DLL_DIR) + $(CC) $^ -o $@ $(CFLAGS_ALL) $(LDFLAGS_ALL) else -build/${BUNDLE_DIR}/${DLL_FILE}: ${C_OBJS} ${CXX_OBJS} | build/${BUNDLE_DIR}/${DLL_DIR} - ${CXX} $^ -o $@ ${CFLAGS_ALL} ${CXXFLAGS_ALL} ${LDFLAGS_ALL} +build/$(BUNDLE_DIR)/$(DLL_FILE): $(C_OBJS) $(CXX_OBJS) | build/$(BUNDLE_DIR)/$(DLL_DIR) + $(CXX) $^ -o $@ $(CFLAGS_ALL) $(CXXFLAGS_ALL) $(LDFLAGS_ALL) endif -build/${BUNDLE_DIR}/${DLL_DIR} build/obj: +ifeq ($(UNAME_S), Darwin) +build/$(BUNDLE_DIR)/Contents/%: $(DATA_DIR)/data/% | build/$(BUNDLE_DIR)/Contents + cp $^ $@ +endif + +build/$(BUNDLE_DIR)/Contents build/$(BUNDLE_DIR)/$(DLL_DIR) build/obj: mkdir -p $@ clean: rm -fr build -ifeq ($(UNAME_S), Darwin) - install: all - mkdir -p -m 0755 "${VST3DIR}/${BUNDLE_DIR}/${DLL_DIR}" - install -m 0755 build/${BUNDLE_DIR}/${DLL_FILE} "${VST3DIR}/${BUNDLE_DIR}/${DLL_DIR}" - install -m 0644 build/${BUNDLE_DIR}/Contents/Info.plist "${VST3DIR}/${BUNDLE_DIR}/Contents/Info.plist" - install -m 0644 build/${BUNDLE_DIR}/Contents/PkgInfo "${VST3DIR}/${BUNDLE_DIR}/Contents/PkgInfo" + @for f in `find build/$(BUNDLE_DIR) -type f`; do \ + m=`[ -x $$f ] && echo 0755 || echo 0644`; \ + d=`echo $$f | sed 's:^build/::'` ; \ + d=`dirname $$d`; \ + echo install -m $$m -t "$(VST3DIR)/$$d" -D $$f; \ + install -m $$m -t "$(VST3DIR)/$$d" -D $$f; \ + done install-user: all - mkdir -p -m 0755 "${VST3DIR_USER}/${BUNDLE_DIR}/${DLL_DIR}" - install -m 0755 build/${BUNDLE_DIR}/${DLL_FILE} "${VST3DIR_USER}/${BUNDLE_DIR}/${DLL_DIR}" - install -m 0644 build/${BUNDLE_DIR}/Contents/Info.plist "${VST3DIR_USER}/${BUNDLE_DIR}/Contents/Info.plist" - install -m 0644 build/${BUNDLE_DIR}/Contents/PkgInfo "${VST3DIR_USER}/${BUNDLE_DIR}/Contents/PkgInfo" + @for f in `find build/$(BUNDLE_DIR) -type f`; do \ + m=`[ -x $$f ] && echo 0755 || echo 0644`; \ + d=`echo $$f | sed 's:^build/::'` ; \ + d=`dirname $$d`; \ + echo install -m $$m -t "$(VST3DIR_USER)/$$d" -D $$f; \ + install -m $$m -t "$(VST3DIR_USER)/$$d" -D $$f; \ + done -else - -install: all - mkdir -p -m 0755 "${VST3DIR}/${BUNDLE_DIR}/${DLL_DIR}" - install -m 0755 build/${BUNDLE_DIR}/${DLL_FILE} "${VST3DIR}/${BUNDLE_DIR}/${DLL_DIR}" - -install-user: all - mkdir -p -m 0755 "${VST3DIR_USER}/${BUNDLE_DIR}/${DLL_DIR}" - install -m 0755 build/${BUNDLE_DIR}/${DLL_FILE} "${VST3DIR_USER}/${BUNDLE_DIR}/${DLL_DIR}" - -endif +-include rules-extra.mk .PHONY: all clean install install-user @@ -143,7 +141,9 @@ endif PERCENT := % $(C_OBJS): build/obj/%.o: $$(filter $$(PERCENT)/$$(basename $$(notdir $$@)).c,$$(C_SRCS)) | build/obj - ${CC} $^ -o $@ -c ${CFLAGS_ALL} + $(CC) $^ -o $@ -c $(CFLAGS_ALL) $(CXX_OBJS): build/obj/%.o: $$(filter $$(PERCENT)/$$(basename $$(notdir $$@)).cpp,$$(CXX_SRCS)) | build/obj - ${CXX} $^ -o $@ -c ${CXXFLAGS_ALL} + $(CXX) $^ -o $@ -c $(CXXFLAGS_ALL) + +-include rules-secondexp-extra.mk