DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 205e0215af944870f282888e75eca5fd8d634df8
parent 1314c25f14fb42d3ababa70f05be69bd7a971f85
Author: falkTX <falktx@falktx.com>
Date:   Thu, 29 Dec 2022 00:55:38 +0000

Improve handling of custom build dirs when using Makefiles

Signed-off-by: falkTX <falktx@falktx.com>

Diffstat:
MMakefile.plugins.mk | 58++++++++++++++++++++++++++++++++++------------------------
Mdgl/Makefile | 166++++++++++++++++++++++++++++++++++++++++---------------------------------------
2 files changed, 119 insertions(+), 105 deletions(-)

diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk @@ -6,11 +6,18 @@ # NOTE: NAME, FILES_DSP and FILES_UI must have been defined before including this file! - ifeq ($(DPF_PATH),) -ifeq (,$(wildcard ../../Makefile.base.mk)) +ifneq (,$(wildcard dpf/Makefile.base.mk)) +BASE_PATH=. +DPF_PATH=dpf +else ifneq (,$(wildcard ../dpf/Makefile.base.mk)) +BASE_PATH=.. +DPF_PATH=../dpf +else ifneq (,$(wildcard ../../dpf/Makefile.base.mk)) +BASE_PATH=../.. DPF_PATH=../../dpf else +BASE_PATH=../.. DPF_PATH=../.. endif endif @@ -20,17 +27,20 @@ include $(DPF_PATH)/Makefile.base.mk # --------------------------------------------------------------------------------------------------------------------- # Basic setup -ifeq ($(DPF_TARGET_DIR),) -TARGET_DIR = ../../bin +ifneq ($(DPF_BUILD_DIR),) +BUILD_DIR = $(DPF_BUILD_DIR) else -TARGET_DIR = $(DPF_TARGET_DIR) +BUILD_DIR = $(BASE_PATH)/build/$(NAME) endif -ifeq ($(DPF_BUILD_DIR),) -BUILD_DIR = ../../build/$(NAME) + +ifneq ($(DPF_TARGET_DIR),) +TARGET_DIR = $(DPF_TARGET_DIR) else -BUILD_DIR = $(DPF_BUILD_DIR) +TARGET_DIR = $(BASE_PATH)/bin endif +DGL_BUILD_DIR = $(DPF_PATH)/build + BUILD_C_FLAGS += -I. BUILD_CXX_FLAGS += -I. -I$(DPF_PATH)/distrho -I$(DPF_PATH)/dgl @@ -147,7 +157,7 @@ ifeq ($(HAVE_CAIRO),true) DGL_FLAGS += -DDGL_CAIRO -DHAVE_DGL DGL_FLAGS += $(CAIRO_FLAGS) DGL_LIBS += $(CAIRO_LIBS) -DGL_LIB = $(DPF_PATH)/build/libdgl-cairo.a +DGL_LIB = $(DGL_BUILD_DIR)/libdgl-cairo.a HAVE_DGL = true else HAVE_DGL = false @@ -159,7 +169,7 @@ ifeq ($(HAVE_OPENGL),true) DGL_FLAGS += -DDGL_OPENGL -DHAVE_DGL DGL_FLAGS += $(OPENGL_FLAGS) DGL_LIBS += $(OPENGL_LIBS) -DGL_LIB = $(DPF_PATH)/build/libdgl-opengl.a +DGL_LIB = $(DGL_BUILD_DIR)/libdgl-opengl.a HAVE_DGL = true else HAVE_DGL = false @@ -171,7 +181,7 @@ ifeq ($(HAVE_OPENGL),true) DGL_FLAGS += -DDGL_OPENGL -DDGL_USE_OPENGL3 -DHAVE_DGL DGL_FLAGS += $(OPENGL_FLAGS) DGL_LIBS += $(OPENGL_LIBS) -DGL_LIB = $(DPF_PATH)/build/libdgl-opengl3.a +DGL_LIB = $(DGL_BUILD_DIR)/libdgl-opengl3.a HAVE_DGL = true else HAVE_DGL = false @@ -183,7 +193,7 @@ ifeq ($(HAVE_VULKAN),true) DGL_FLAGS += -DDGL_VULKAN -DHAVE_DGL DGL_FLAGS += $(VULKAN_FLAGS) DGL_LIBS += $(VULKAN_LIBS) -DGL_LIB = $(DPF_PATH)/build/libdgl-vulkan.a +DGL_LIB = $(DGL_BUILD_DIR)/libdgl-vulkan.a HAVE_DGL = true else HAVE_DGL = false @@ -197,7 +207,7 @@ endif ifeq ($(UI_TYPE),stub) ifeq ($(HAVE_STUB),true) -DGL_LIB = $(DPF_PATH)/build/libdgl-stub.a +DGL_LIB = $(DGL_BUILD_DIR)/libdgl-stub.a HAVE_DGL = true else HAVE_DGL = false @@ -364,32 +374,32 @@ all: # Common $(BUILD_DIR)/%.S.o: %.S - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + -@mkdir -p "$(shell dirname $@)" @echo "Compiling $<" @$(CC) $< $(BUILD_C_FLAGS) -c -o $@ $(BUILD_DIR)/%.c.o: %.c - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + -@mkdir -p "$(shell dirname $@)" @echo "Compiling $<" $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ $(BUILD_DIR)/%.cc.o: %.cc - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + -@mkdir -p "$(shell dirname $@)" @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ $(BUILD_DIR)/%.cpp.o: %.cpp - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + -@mkdir -p "$(shell dirname $@)" @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ $(BUILD_DIR)/%.m.o: %.m - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + -@mkdir -p "$(shell dirname $@)" @echo "Compiling $<" $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -ObjC -c -o $@ $(BUILD_DIR)/%.mm.o: %.mm - -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + -@mkdir -p "$(shell dirname $@)" @echo "Compiling $<" $(SILENT)$(CC) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@ @@ -405,19 +415,19 @@ clean: # --------------------------------------------------------------------------------------------------------------------- # DGL -$(DPF_PATH)/build/libdgl-cairo.a: +$(DGL_BUILD_DIR)/libdgl-cairo.a: $(MAKE) -C $(DPF_PATH)/dgl cairo -$(DPF_PATH)/build/libdgl-opengl.a: +$(DGL_BUILD_DIR)/libdgl-opengl.a: $(MAKE) -C $(DPF_PATH)/dgl opengl -$(DPF_PATH)/build/libdgl-opengl3.a: +$(DGL_BUILD_DIR)/libdgl-opengl3.a: $(MAKE) -C $(DPF_PATH)/dgl opengl3 -$(DPF_PATH)/build/libdgl-stub.a: +$(DGL_BUILD_DIR)/libdgl-stub.a: $(MAKE) -C $(DPF_PATH)/dgl stub -$(DPF_PATH)/build/libdgl-vulkan.a: +$(DGL_BUILD_DIR)/libdgl-vulkan.a: $(MAKE) -C $(DPF_PATH)/dgl vulkan # --------------------------------------------------------------------------------------------------------------------- diff --git a/dgl/Makefile b/dgl/Makefile @@ -26,58 +26,62 @@ endif # --------------------------------------------------------------------------------------------------------------------- +BUILD_DIR = ../build + +# --------------------------------------------------------------------------------------------------------------------- + OBJS_common = \ - ../build/dgl/Application.cpp.o \ - ../build/dgl/ApplicationPrivateData.cpp.o \ - ../build/dgl/Color.cpp.o \ - ../build/dgl/EventHandlers.cpp.o \ - ../build/dgl/Geometry.cpp.o \ - ../build/dgl/ImageBase.cpp.o \ - ../build/dgl/ImageBaseWidgets.cpp.o \ - ../build/dgl/Layout.cpp.o \ - ../build/dgl/Resources.cpp.o \ - ../build/dgl/SubWidget.cpp.o \ - ../build/dgl/SubWidgetPrivateData.cpp.o \ - ../build/dgl/TopLevelWidget.cpp.o \ - ../build/dgl/TopLevelWidgetPrivateData.cpp.o \ - ../build/dgl/Widget.cpp.o \ - ../build/dgl/WidgetPrivateData.cpp.o \ - ../build/dgl/Window.cpp.o \ - ../build/dgl/WindowPrivateData.cpp.o + $(BUILD_DIR)/dgl/Application.cpp.o \ + $(BUILD_DIR)/dgl/ApplicationPrivateData.cpp.o \ + $(BUILD_DIR)/dgl/Color.cpp.o \ + $(BUILD_DIR)/dgl/EventHandlers.cpp.o \ + $(BUILD_DIR)/dgl/Geometry.cpp.o \ + $(BUILD_DIR)/dgl/ImageBase.cpp.o \ + $(BUILD_DIR)/dgl/ImageBaseWidgets.cpp.o \ + $(BUILD_DIR)/dgl/Layout.cpp.o \ + $(BUILD_DIR)/dgl/Resources.cpp.o \ + $(BUILD_DIR)/dgl/SubWidget.cpp.o \ + $(BUILD_DIR)/dgl/SubWidgetPrivateData.cpp.o \ + $(BUILD_DIR)/dgl/TopLevelWidget.cpp.o \ + $(BUILD_DIR)/dgl/TopLevelWidgetPrivateData.cpp.o \ + $(BUILD_DIR)/dgl/Widget.cpp.o \ + $(BUILD_DIR)/dgl/WidgetPrivateData.cpp.o \ + $(BUILD_DIR)/dgl/Window.cpp.o \ + $(BUILD_DIR)/dgl/WindowPrivateData.cpp.o # --------------------------------------------------------------------------------------------------------------------- OBJS_cairo = $(OBJS_common) \ - ../build/dgl/Cairo.cpp.cairo.o + $(BUILD_DIR)/dgl/Cairo.cpp.cairo.o ifeq ($(MACOS),true) -OBJS_cairo += ../build/dgl/pugl.mm.cairo.o +OBJS_cairo += $(BUILD_DIR)/dgl/pugl.mm.cairo.o else -OBJS_cairo += ../build/dgl/pugl.cpp.cairo.o +OBJS_cairo += $(BUILD_DIR)/dgl/pugl.cpp.cairo.o endif # --------------------------------------------------------------------------------------------------------------------- OBJS_opengl = $(OBJS_common) \ - ../build/dgl/OpenGL.cpp.opengl.o \ - ../build/dgl/NanoVG.cpp.opengl.o + $(BUILD_DIR)/dgl/OpenGL.cpp.opengl.o \ + $(BUILD_DIR)/dgl/NanoVG.cpp.opengl.o ifeq ($(MACOS),true) -OBJS_opengl += ../build/dgl/pugl.mm.opengl.o +OBJS_opengl += $(BUILD_DIR)/dgl/pugl.mm.opengl.o else -OBJS_opengl += ../build/dgl/pugl.cpp.opengl.o +OBJS_opengl += $(BUILD_DIR)/dgl/pugl.cpp.opengl.o endif # --------------------------------------------------------------------------------------------------------------------- OBJS_opengl3 = $(OBJS_common) \ - ../build/dgl/OpenGL.cpp.opengl3.o \ - ../build/dgl/NanoVG.cpp.opengl3.o + $(BUILD_DIR)/dgl/OpenGL.cpp.opengl3.o \ + $(BUILD_DIR)/dgl/NanoVG.cpp.opengl3.o ifeq ($(MACOS),true) -OBJS_opengl3 += ../build/dgl/pugl.mm.opengl3.o +OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.mm.opengl3.o else -OBJS_opengl3 += ../build/dgl/pugl.cpp.opengl3.o +OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.cpp.opengl3.o endif # --------------------------------------------------------------------------------------------------------------------- @@ -85,170 +89,170 @@ endif OBJS_stub = $(OBJS_common) ifeq ($(MACOS),true) -OBJS_stub += ../build/dgl/pugl.mm.o +OBJS_stub += $(BUILD_DIR)/dgl/pugl.mm.o else -OBJS_stub += ../build/dgl/pugl.cpp.o +OBJS_stub += $(BUILD_DIR)/dgl/pugl.cpp.o endif # --------------------------------------------------------------------------------------------------------------------- OBJS_vulkan = $(OBJS_common) \ - ../build/dgl/Vulkan.cpp.vulkan.o + $(BUILD_DIR)/dgl/Vulkan.cpp.vulkan.o ifeq ($(MACOS),true) -OBJS_vulkan += ../build/dgl/pugl.mm.vulkan.o +OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.mm.vulkan.o else -OBJS_vulkan += ../build/dgl/pugl.cpp.vulkan.o +OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.cpp.vulkan.o endif # --------------------------------------------------------------------------------------------------------------------- ifeq ($(HAVE_CAIRO),true) -TARGETS += ../build/libdgl-cairo.a +TARGETS += $(BUILD_DIR)/libdgl-cairo.a endif ifeq ($(HAVE_OPENGL),true) -TARGETS += ../build/libdgl-opengl.a +TARGETS += $(BUILD_DIR)/libdgl-opengl.a # Compat name, to be removed soon -TARGETS += ../build/libdgl.a +TARGETS += $(BUILD_DIR)/libdgl.a endif ifeq ($(HAVE_STUB),true) -TARGETS += ../build/libdgl-stub.a +TARGETS += $(BUILD_DIR)/libdgl-stub.a endif ifeq ($(HAVE_VULKAN),true) -TARGETS += ../build/libdgl-vulkan.a +TARGETS += $(BUILD_DIR)/libdgl-vulkan.a endif # --------------------------------------------------------------------------------------------------------------------- all: $(TARGETS) -cairo: ../build/libdgl-cairo.a -opengl: ../build/libdgl-opengl.a -opengl3: ../build/libdgl-opengl3.a -stub: ../build/libdgl-stub.a -vulkan: ../build/libdgl-vulkan.a +cairo: $(BUILD_DIR)/libdgl-cairo.a +opengl: $(BUILD_DIR)/libdgl-opengl.a +opengl3: $(BUILD_DIR)/libdgl-opengl3.a +stub: $(BUILD_DIR)/libdgl-stub.a +vulkan: $(BUILD_DIR)/libdgl-vulkan.a # --------------------------------------------------------------------------------------------------------------------- -../build/libdgl-cairo.a: $(OBJS_cairo) - -@mkdir -p ../build +$(BUILD_DIR)/libdgl-cairo.a: $(OBJS_cairo) + -@mkdir -p $(BUILD_DIR) @echo "Creating libdgl-cairo.a" $(SILENT)rm -f $@ $(SILENT)$(AR) crs $@ $^ -../build/libdgl-opengl.a: $(OBJS_opengl) - -@mkdir -p ../build +$(BUILD_DIR)/libdgl-opengl.a: $(OBJS_opengl) + -@mkdir -p $(BUILD_DIR) @echo "Creating libdgl-opengl.a" $(SILENT)rm -f $@ $(SILENT)$(AR) crs $@ $^ -../build/libdgl-opengl3.a: $(OBJS_opengl3) - -@mkdir -p ../build +$(BUILD_DIR)/libdgl-opengl3.a: $(OBJS_opengl3) + -@mkdir -p $(BUILD_DIR) @echo "Creating libdgl-opengl3.a" $(SILENT)rm -f $@ $(SILENT)$(AR) crs $@ $^ -../build/libdgl-stub.a: $(OBJS_stub) - -@mkdir -p ../build +$(BUILD_DIR)/libdgl-stub.a: $(OBJS_stub) + -@mkdir -p $(BUILD_DIR) @echo "Creating libdgl-stub.a" $(SILENT)rm -f $@ $(SILENT)$(AR) crs $@ $^ -../build/libdgl-vulkan.a: $(OBJS_vulkan) - -@mkdir -p ../build +$(BUILD_DIR)/libdgl-vulkan.a: $(OBJS_vulkan) + -@mkdir -p $(BUILD_DIR) @echo "Creating libdgl-vulkan.a" $(SILENT)rm -f $@ $(SILENT)$(AR) crs $@ $^ # Compat name, to be removed soon -../build/libdgl.a: ../build/libdgl-opengl.a +$(BUILD_DIR)/libdgl.a: $(BUILD_DIR)/libdgl-opengl.a @echo "Symlinking libdgl.a" $(SILENT)ln -sf $< $@ # --------------------------------------------------------------------------------------------------------------------- -../build/dgl/%.c.o: src/%.c - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.c.o: src/%.c + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $<" $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ -../build/dgl/%.cpp.o: src/%.cpp - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.cpp.o: src/%.cpp + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ -../build/dgl/%.mm.o: src/%.mm - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.mm.o: src/%.mm + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- -../build/dgl/pugl.cpp.o: src/pugl.cpp - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/pugl.cpp.o: src/pugl.cpp + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -o $@ -../build/dgl/pugl.mm.o: src/pugl.mm - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/pugl.mm.o: src/pugl.mm + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- -../build/dgl/%.cpp.cairo.o: src/%.cpp - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.cpp.cairo.o: src/%.cpp + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (Cairo variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@ -../build/dgl/%.mm.cairo.o: src/%.mm - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.mm.cairo.o: src/%.mm + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (Cairo variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- -../build/dgl/%.cpp.opengl.o: src/%.cpp - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.cpp.opengl.o: src/%.cpp + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (OpenGL variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@ -../build/dgl/%.mm.opengl.o: src/%.mm - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.mm.opengl.o: src/%.mm + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (OpenGL variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- -../build/dgl/%.cpp.opengl3.o: src/%.cpp - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.cpp.opengl3.o: src/%.cpp + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (OpenGL3 variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -o $@ -../build/dgl/%.mm.opengl3.o: src/%.mm - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.mm.opengl3.o: src/%.mm + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (OpenGL3 variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- -../build/dgl/%.cpp.vulkan.o: src/%.cpp - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.cpp.vulkan.o: src/%.cpp + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (Vulkan variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -o $@ -../build/dgl/%.mm.vulkan.o: src/%.mm - -@mkdir -p ../build/dgl +$(BUILD_DIR)/dgl/%.mm.vulkan.o: src/%.mm + -@mkdir -p $(BUILD_DIR)/dgl @echo "Compiling $< (Vulkan variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- clean: - rm -rf ../build/dgl ../build/libdgl*.* + rm -rf $(BUILD_DIR)/dgl $(BUILD_DIR)/libdgl*.* debug: $(MAKE) DEBUG=true