#!/usr/bin/make -f # Makefile for DGL # # ---------------- # # Created by falkTX # include ../Makefile.base.mk # --------------------------------------------------------------------------------------------------------------------- BUILD_C_FLAGS += $(DGL_FLAGS) -I.. BUILD_CXX_FLAGS += $(DGL_FLAGS) -I.. -I../dgl/src/pugl-upstream/include -DDONT_SET_USING_DGL_NAMESPACE LINK_FLAGS += -lpthread # TODO fix within pugl BUILD_CXX_FLAGS += -Wno-extra -Wno-missing-field-initializers ifeq ($(MACOS),true) BUILD_CXX_FLAGS += -ObjC++ -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations endif # --------------------------------------------------------------------------------------------------------------------- MANUAL_TESTS = UNIT_TESTS = Color Point ifeq ($(HAVE_CAIRO),true) MANUAL_TESTS += Demo.cairo endif ifeq ($(HAVE_OPENGL),true) MANUAL_TESTS += Demo.opengl MANUAL_TESTS += FileBrowserDialog MANUAL_TESTS += NanoImage MANUAL_TESTS += NanoSubWidgets endif ifneq ($(WASM),true) UNIT_TESTS += Application ifeq ($(HAVE_CAIRO),true) UNIT_TESTS += Window.cairo endif ifeq ($(HAVE_OPENGL),true) UNIT_TESTS += Window.opengl endif ifeq ($(HAVE_STUB),true) UNIT_TESTS += Window.stub endif ifeq ($(HAVE_VULKAN),true) UNIT_TESTS += Window.vulkan endif endif MANUAL_TARGETS = $(MANUAL_TESTS:%=../build/tests/%$(APP_EXT)) UNIT_TARGET = $(UNIT_TESTS:%=../build/tests/%$(APP_EXT)) ALL_OBJS = $(MANUAL_TESTS:%=../build/tests/%.cpp.o) ALL_OBJS += $(UNIT_TESTS:%=../build/tests/%.cpp.o) # --------------------------------------------------------------------------------------------------------------------- all: $(MANUAL_TARGETS) $(UNIT_TARGET) # --------------------------------------------------------------------------------------------------------------------- Demo.opengl: ../build/tests/Demo.opengl$(APP_EXT) FileBrowserDialog: ../build/tests/FileBrowserDialog$(APP_EXT) NanoImage: ../build/tests/NanoImage$(APP_EXT) NanoSubWidgets: ../build/tests/NanoSubWidgets$(APP_EXT) # --------------------------------------------------------------------------------------------------------------------- define RUN_TEST ${1} endef # valgrind --leak-check=full $@ run: $(UNIT_TARGET) $(foreach TEST,$^,$(call RUN_TEST,$(TEST))) # --------------------------------------------------------------------------------------------------------------------- clean: rm -rf ../build/tests # --------------------------------------------------------------------------------------------------------------------- # building steps ../build/tests/%.c.o: %.c -@mkdir -p ../build/tests @echo "Compiling $<" $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ ../build/tests/%.cpp.o: %.cpp -@mkdir -p ../build/tests @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ ../build/tests/%.cpp.cairo.o: %.cpp -@mkdir -p ../build/tests @echo "Compiling $< (Cairo)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@ ../build/tests/%.cpp.opengl.o: %.cpp -@mkdir -p ../build/tests @echo "Compiling $< (OpenGL)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@ ../build/tests/%.cpp.stub.o: %.cpp -@mkdir -p ../build/tests @echo "Compiling $< (Stub)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ ../build/tests/%.cpp.vulkan.o: %.cpp -@mkdir -p ../build/tests @echo "Compiling $< (Vulkan)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_VULKAN -c -o $@ # --------------------------------------------------------------------------------------------------------------------- # linking steps ../build/tests/%$(APP_EXT): ../build/tests/%.cpp.o @echo "Linking $*" $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) -o $@ ../build/tests/%.cairo$(APP_EXT): ../build/tests/%.cpp.cairo.o @echo "Linking $*" $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(CAIRO_LIBS) -o $@ ../build/tests/%.opengl$(APP_EXT): ../build/tests/%.cpp.opengl.o @echo "Linking $*" $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ ../build/tests/%.stub$(APP_EXT): ../build/tests/%.cpp.stub.o @echo "Linking $*" $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) -o $@ ../build/tests/%.vulkan$(APP_EXT): ../build/tests/%.cpp.vulkan.o @echo "Linking $*" $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(VULKAN_LIBS) -o $@ # --------------------------------------------------------------------------------------------------------------------- # linking steps (special, links against DGL static lib) ../build/tests/Demo.cairo$(APP_EXT): ../build/tests/Demo.cpp.cairo.o ../build/libdgl-cairo.a @echo "Linking Demo (Cairo)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(CAIRO_LIBS) -o $@ ../build/tests/Demo.opengl$(APP_EXT): ../build/tests/Demo.cpp.opengl.o ../build/libdgl-opengl.a @echo "Linking Demo (OpenGL)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ ../build/tests/Demo.vulkan$(APP_EXT): ../build/tests/Demo.cpp.vulkan.o ../build/libdgl-vulkan.a @echo "Linking Demo (OpenGL)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(VULKAN_LIBS) -o $@ ../build/tests/FileBrowserDialog$(APP_EXT): ../build/tests/FileBrowserDialog.cpp.o ../build/libdgl-opengl.a @echo "Linking FileBrowserDialog (OpenGL)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ ../build/tests/NanoImage$(APP_EXT): ../build/tests/NanoImage.cpp.o ../build/libdgl-opengl.a @echo "Linking NanoImage (OpenGL)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ ../build/tests/NanoSubWidgets$(APP_EXT): ../build/tests/NanoSubWidgets.cpp.o ../build/libdgl-opengl.a @echo "Linking NanoSubWidgets (OpenGL)" $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ # --------------------------------------------------------------------------------------------------------------------- .PHONY: Demo.opengl FileBrowserDialog NanoImage NanoSubWidgets -include $(ALL_OBJS:%.o=%.d) # ---------------------------------------------------------------------------------------------------------------------