DISTRHO Plugin Framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
7.2KB

  1. #!/usr/bin/make -f
  2. # Makefile for DGL #
  3. # ---------------- #
  4. # Created by falkTX
  5. #
  6. include ../Makefile.base.mk
  7. # ---------------------------------------------------------------------------------------------------------------------
  8. BUILD_C_FLAGS += $(DGL_FLAGS) -I. -Isrc
  9. BUILD_CXX_FLAGS += $(DGL_FLAGS) -I. -Isrc -DDONT_SET_USING_DGL_NAMESPACE -Wno-unused-parameter
  10. BUILD_CXX_FLAGS += -Isrc/pugl-upstream/include
  11. LINK_FLAGS += $(DGL_LIBS)
  12. ifeq ($(NVG_DISABLE_SKIPPING_WHITESPACE),true)
  13. BUILD_CXX_FLAGS += -DNVG_DISABLE_SKIPPING_WHITESPACE
  14. endif
  15. ifneq ($(NVG_FONT_TEXTURE_FLAGS),)
  16. BUILD_CXX_FLAGS += -DNVG_FONT_TEXTURE_FLAGS=$(NVG_FONT_TEXTURE_FLAGS)
  17. endif
  18. ifeq ($(USE_OPENGL3),true)
  19. BUILD_CXX_FLAGS += -DDGL_USE_OPENGL3
  20. endif
  21. ifeq ($(USE_NANOVG_FBO),true)
  22. BUILD_CXX_FLAGS += -DDGL_USE_NANOVG_FBO
  23. endif
  24. ifeq ($(USE_NANOVG_FREETYPE),true)
  25. BUILD_CXX_FLAGS += -DFONS_USE_FREETYPE $(shell $(PKG_CONFIG) --cflags freetype2)
  26. endif
  27. ifeq ($(USE_RGBA),true)
  28. BUILD_CXX_FLAGS += -DDGL_USE_RGBA
  29. endif
  30. # TODO fix these after pugl-upstream is done
  31. BUILD_CXX_FLAGS += -Wno-attributes -Wno-extra -Wno-missing-field-initializers
  32. ifneq ($(MACOS),true)
  33. BUILD_CXX_FLAGS += -Wno-narrowing
  34. endif
  35. # ifneq ($(MACOS_OLD),true)
  36. # needed by sofd right now, fix later
  37. # BUILD_CXX_FLAGS += -Wno-type-limits -fpermissive
  38. # endif
  39. # ---------------------------------------------------------------------------------------------------------------------
  40. OBJS_common = \
  41. ../build/dgl/Application.cpp.o \
  42. ../build/dgl/ApplicationPrivateData.cpp.o \
  43. ../build/dgl/Color.cpp.o \
  44. ../build/dgl/EventHandlers.cpp.o \
  45. ../build/dgl/Geometry.cpp.o \
  46. ../build/dgl/ImageBase.cpp.o \
  47. ../build/dgl/ImageBaseWidgets.cpp.o \
  48. ../build/dgl/Resources.cpp.o \
  49. ../build/dgl/SubWidget.cpp.o \
  50. ../build/dgl/SubWidgetPrivateData.cpp.o \
  51. ../build/dgl/TopLevelWidget.cpp.o \
  52. ../build/dgl/TopLevelWidgetPrivateData.cpp.o \
  53. ../build/dgl/Widget.cpp.o \
  54. ../build/dgl/WidgetPrivateData.cpp.o \
  55. ../build/dgl/Window.cpp.o \
  56. ../build/dgl/WindowPrivateData.cpp.o
  57. # ---------------------------------------------------------------------------------------------------------------------
  58. OBJS_cairo = $(OBJS_common) \
  59. ../build/dgl/Cairo.cpp.cairo.o
  60. ifeq ($(MACOS),true)
  61. OBJS_cairo += ../build/dgl/pugl.mm.cairo.o
  62. else
  63. OBJS_cairo += ../build/dgl/pugl.cpp.cairo.o
  64. endif
  65. # ---------------------------------------------------------------------------------------------------------------------
  66. OBJS_opengl = $(OBJS_common) \
  67. ../build/dgl/OpenGL.cpp.opengl.o \
  68. ../build/dgl/NanoVG.cpp.opengl.o
  69. ifeq ($(MACOS),true)
  70. OBJS_opengl += ../build/dgl/pugl.mm.opengl.o
  71. else
  72. OBJS_opengl += ../build/dgl/pugl.cpp.opengl.o
  73. endif
  74. # ---------------------------------------------------------------------------------------------------------------------
  75. OBJS_stub = $(OBJS_common)
  76. ifeq ($(MACOS),true)
  77. OBJS_stub += ../build/dgl/pugl.mm.o
  78. else
  79. OBJS_stub += ../build/dgl/pugl.cpp.o
  80. endif
  81. # ---------------------------------------------------------------------------------------------------------------------
  82. OBJS_vulkan = $(OBJS_common) \
  83. ../build/dgl/Vulkan.cpp.vulkan.o
  84. ifeq ($(MACOS),true)
  85. OBJS_vulkan += ../build/dgl/pugl.mm.vulkan.o
  86. else
  87. OBJS_vulkan += ../build/dgl/pugl.cpp.vulkan.o
  88. endif
  89. # ---------------------------------------------------------------------------------------------------------------------
  90. ifeq ($(HAVE_CAIRO),true)
  91. TARGETS += ../build/libdgl-cairo.a
  92. endif
  93. ifeq ($(HAVE_OPENGL),true)
  94. TARGETS += ../build/libdgl-opengl.a
  95. # Compat name, to be removed soon
  96. TARGETS += ../build/libdgl.a
  97. endif
  98. ifeq ($(HAVE_STUB),true)
  99. TARGETS += ../build/libdgl-stub.a
  100. endif
  101. ifeq ($(HAVE_VULKAN),true)
  102. TARGETS += ../build/libdgl-vulkan.a
  103. endif
  104. # ---------------------------------------------------------------------------------------------------------------------
  105. all: $(TARGETS)
  106. cairo: ../build/libdgl-cairo.a
  107. opengl: ../build/libdgl-opengl.a
  108. stub: ../build/libdgl-stub.a
  109. vulkan: ../build/libdgl-vulkan.a
  110. # ---------------------------------------------------------------------------------------------------------------------
  111. ../build/libdgl-cairo.a: $(OBJS_cairo)
  112. -@mkdir -p ../build
  113. @echo "Creating libdgl-cairo.a"
  114. $(SILENT)rm -f $@
  115. $(SILENT)$(AR) crs $@ $^
  116. ../build/libdgl-opengl.a: $(OBJS_opengl)
  117. -@mkdir -p ../build
  118. @echo "Creating libdgl-opengl.a"
  119. $(SILENT)rm -f $@
  120. $(SILENT)$(AR) crs $@ $^
  121. ../build/libdgl-stub.a: $(OBJS_stub)
  122. -@mkdir -p ../build
  123. @echo "Creating libdgl-stub.a"
  124. $(SILENT)rm -f $@
  125. $(SILENT)$(AR) crs $@ $^
  126. ../build/libdgl-vulkan.a: $(OBJS_vulkan)
  127. -@mkdir -p ../build
  128. @echo "Creating libdgl-vulkan.a"
  129. $(SILENT)rm -f $@
  130. $(SILENT)$(AR) crs $@ $^
  131. # Compat name, to be removed soon
  132. ../build/libdgl.a: ../build/libdgl-opengl.a
  133. @echo "Symlinking libdgl.a"
  134. $(SILENT)ln -sf $< $@
  135. # ---------------------------------------------------------------------------------------------------------------------
  136. ../build/dgl/%.c.o: src/%.c
  137. -@mkdir -p ../build/dgl
  138. @echo "Compiling $<"
  139. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  140. ../build/dgl/%.cpp.o: src/%.cpp
  141. -@mkdir -p ../build/dgl
  142. @echo "Compiling $<"
  143. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  144. ../build/dgl/%.mm.o: src/%.mm
  145. -@mkdir -p ../build/dgl
  146. @echo "Compiling $<"
  147. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -ObjC++ -o $@
  148. # ---------------------------------------------------------------------------------------------------------------------
  149. ../build/dgl/%.cpp.cairo.o: src/%.cpp
  150. -@mkdir -p ../build/dgl
  151. @echo "Compiling $< (Cairo variant)"
  152. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@
  153. ../build/dgl/%.mm.cairo.o: src/%.mm
  154. -@mkdir -p ../build/dgl
  155. @echo "Compiling $< (Cairo variant)"
  156. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -ObjC++ -o $@
  157. # ---------------------------------------------------------------------------------------------------------------------
  158. ../build/dgl/%.cpp.opengl.o: src/%.cpp
  159. -@mkdir -p ../build/dgl
  160. @echo "Compiling $< (OpenGL variant)"
  161. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@
  162. ../build/dgl/%.mm.opengl.o: src/%.mm
  163. -@mkdir -p ../build/dgl
  164. @echo "Compiling $< (OpenGL variant)"
  165. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -ObjC++ -o $@
  166. # ---------------------------------------------------------------------------------------------------------------------
  167. ../build/dgl/%.cpp.vulkan.o: src/%.cpp
  168. -@mkdir -p ../build/dgl
  169. @echo "Compiling $< (Vulkan variant)"
  170. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -o $@
  171. ../build/dgl/%.mm.vulkan.o: src/%.mm
  172. -@mkdir -p ../build/dgl
  173. @echo "Compiling $< (Vulkan variant)"
  174. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -ObjC++ -o $@
  175. # ---------------------------------------------------------------------------------------------------------------------
  176. clean:
  177. rm -rf ../build/dgl ../build/libdgl*.*
  178. debug:
  179. $(MAKE) DEBUG=true
  180. # ---------------------------------------------------------------------------------------------------------------------
  181. -include $(OBJS_common:%.o=%.d)
  182. -include $(OBJS_cairo:%.o=%.d)
  183. -include $(OBJS_opengl:%.o=%.d)
  184. -include $(OBJS_stub:%.o=%.d)
  185. -include $(OBJS_vulkan:%.o=%.d)
  186. # ---------------------------------------------------------------------------------------------------------------------