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.

343 lines
11KB

  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 ($(MACOS),true)
  13. BUILD_CXX_FLAGS += -DDISTRHO_MACOS_NAMESPACE_TIME=$(shell date +%s)
  14. BUILD_CXX_FLAGS += -Wno-deprecated-declarations
  15. else
  16. PUGL_EXTRA_FLAGS = -Wno-extra -Wmissing-field-initializers
  17. endif
  18. # ifneq ($(MACOS_OLD),true)
  19. # needed by sofd right now, fix later
  20. # BUILD_CXX_FLAGS += -Wno-type-limits -fpermissive
  21. # endif
  22. # ---------------------------------------------------------------------------------------------------------------------
  23. ifeq ($(MODGUI_BUILD),true)
  24. BUILD_DIR_SUFFIX = -modgui
  25. endif
  26. BUILD_DIR = ../build$(BUILD_DIR_SUFFIX)
  27. # ---------------------------------------------------------------------------------------------------------------------
  28. OBJS_common = \
  29. $(BUILD_DIR)/dgl/Application.cpp.o \
  30. $(BUILD_DIR)/dgl/ApplicationPrivateData.cpp.o \
  31. $(BUILD_DIR)/dgl/Color.cpp.o \
  32. $(BUILD_DIR)/dgl/EventHandlers.cpp.o \
  33. $(BUILD_DIR)/dgl/Geometry.cpp.o \
  34. $(BUILD_DIR)/dgl/ImageBase.cpp.o \
  35. $(BUILD_DIR)/dgl/ImageBaseWidgets.cpp.o \
  36. $(BUILD_DIR)/dgl/Layout.cpp.o \
  37. $(BUILD_DIR)/dgl/Resources.cpp.o \
  38. $(BUILD_DIR)/dgl/SubWidget.cpp.o \
  39. $(BUILD_DIR)/dgl/SubWidgetPrivateData.cpp.o \
  40. $(BUILD_DIR)/dgl/TopLevelWidget.cpp.o \
  41. $(BUILD_DIR)/dgl/TopLevelWidgetPrivateData.cpp.o \
  42. $(BUILD_DIR)/dgl/Widget.cpp.o \
  43. $(BUILD_DIR)/dgl/WidgetPrivateData.cpp.o \
  44. $(BUILD_DIR)/dgl/Window.cpp.o \
  45. $(BUILD_DIR)/dgl/WindowPrivateData.cpp.o
  46. ifeq ($(WINDOWS)$(USE_WEB_VIEW),truetrue)
  47. OBJS_common += $(BUILD_DIR)/dgl/WebViewWin32.cpp.o
  48. endif
  49. # ---------------------------------------------------------------------------------------------------------------------
  50. OBJS_cairo = $(OBJS_common) \
  51. $(BUILD_DIR)/dgl/Cairo.cpp.cairo.o
  52. ifeq ($(MACOS),true)
  53. OBJS_cairo += $(BUILD_DIR)/dgl/pugl.mm.cairo.o
  54. else
  55. OBJS_cairo += $(BUILD_DIR)/dgl/pugl.cpp.cairo.o
  56. endif
  57. # ---------------------------------------------------------------------------------------------------------------------
  58. OBJS_gles2 = $(OBJS_common) \
  59. $(BUILD_DIR)/dgl/OpenGL.cpp.gles2.o \
  60. $(BUILD_DIR)/dgl/NanoVG.cpp.gles2.o
  61. ifeq ($(MACOS),true)
  62. OBJS_gles2 += $(BUILD_DIR)/dgl/pugl.mm.gles2.o
  63. else
  64. OBJS_gles2 += $(BUILD_DIR)/dgl/pugl.cpp.gles2.o
  65. endif
  66. # ---------------------------------------------------------------------------------------------------------------------
  67. OBJS_gles3 = $(OBJS_common) \
  68. $(BUILD_DIR)/dgl/OpenGL.cpp.gles3.o \
  69. $(BUILD_DIR)/dgl/NanoVG.cpp.gles3.o
  70. ifeq ($(MACOS),true)
  71. OBJS_gles3 += $(BUILD_DIR)/dgl/pugl.mm.gles3.o
  72. else
  73. OBJS_gles3 += $(BUILD_DIR)/dgl/pugl.cpp.gles3.o
  74. endif
  75. # ---------------------------------------------------------------------------------------------------------------------
  76. OBJS_opengl = $(OBJS_common) \
  77. $(BUILD_DIR)/dgl/OpenGL.cpp.opengl.o \
  78. $(BUILD_DIR)/dgl/NanoVG.cpp.opengl.o
  79. ifeq ($(MACOS),true)
  80. OBJS_opengl += $(BUILD_DIR)/dgl/pugl.mm.opengl.o
  81. else
  82. OBJS_opengl += $(BUILD_DIR)/dgl/pugl.cpp.opengl.o
  83. endif
  84. # ---------------------------------------------------------------------------------------------------------------------
  85. OBJS_opengl3 = $(OBJS_common) \
  86. $(BUILD_DIR)/dgl/OpenGL.cpp.opengl3.o \
  87. $(BUILD_DIR)/dgl/NanoVG.cpp.opengl3.o
  88. ifeq ($(MACOS),true)
  89. OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.mm.opengl3.o
  90. else
  91. OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.cpp.opengl3.o
  92. endif
  93. # ---------------------------------------------------------------------------------------------------------------------
  94. OBJS_stub = $(OBJS_common) \
  95. $(BUILD_DIR)/dgl/Stub.cpp.o
  96. ifeq ($(MACOS),true)
  97. OBJS_stub += $(BUILD_DIR)/dgl/pugl.mm.o
  98. else
  99. OBJS_stub += $(BUILD_DIR)/dgl/pugl.cpp.o
  100. endif
  101. # ---------------------------------------------------------------------------------------------------------------------
  102. OBJS_vulkan = $(OBJS_common) \
  103. $(BUILD_DIR)/dgl/Vulkan.cpp.vulkan.o
  104. ifeq ($(MACOS),true)
  105. OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.mm.vulkan.o
  106. else
  107. OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.cpp.vulkan.o
  108. endif
  109. # ---------------------------------------------------------------------------------------------------------------------
  110. ifeq ($(HAVE_CAIRO),true)
  111. TARGETS += $(BUILD_DIR)/libdgl-cairo.a
  112. endif
  113. ifeq ($(HAVE_OPENGL),true)
  114. TARGETS += $(BUILD_DIR)/libdgl-opengl.a
  115. endif
  116. ifeq ($(HAVE_STUB),true)
  117. TARGETS += $(BUILD_DIR)/libdgl-stub.a
  118. endif
  119. ifeq ($(HAVE_VULKAN),true)
  120. TARGETS += $(BUILD_DIR)/libdgl-vulkan.a
  121. endif
  122. # ---------------------------------------------------------------------------------------------------------------------
  123. all: $(TARGETS)
  124. cairo: $(BUILD_DIR)/libdgl-cairo.a
  125. gles2: $(BUILD_DIR)/libdgl-gles2.a
  126. gles3: $(BUILD_DIR)/libdgl-gles3.a
  127. opengl: $(BUILD_DIR)/libdgl-opengl.a
  128. opengl3: $(BUILD_DIR)/libdgl-opengl3.a
  129. stub: $(BUILD_DIR)/libdgl-stub.a
  130. vulkan: $(BUILD_DIR)/libdgl-vulkan.a
  131. web: $(BUILD_DIR)/libdgl-web.a
  132. # ---------------------------------------------------------------------------------------------------------------------
  133. $(BUILD_DIR)/libdgl-cairo.a: $(OBJS_cairo)
  134. -@mkdir -p $(BUILD_DIR)
  135. @echo "Creating libdgl-cairo.a"
  136. $(SILENT)rm -f $@
  137. $(SILENT)$(AR) crs $@ $^
  138. $(BUILD_DIR)/libdgl-gles2.a: $(OBJS_gles2)
  139. -@mkdir -p $(BUILD_DIR)
  140. @echo "Creating libdgl-gles2.a"
  141. $(SILENT)rm -f $@
  142. $(SILENT)$(AR) crs $@ $^
  143. $(BUILD_DIR)/libdgl-gles3.a: $(OBJS_gles3)
  144. -@mkdir -p $(BUILD_DIR)
  145. @echo "Creating libdgl-gles3.a"
  146. $(SILENT)rm -f $@
  147. $(SILENT)$(AR) crs $@ $^
  148. $(BUILD_DIR)/libdgl-opengl.a: $(OBJS_opengl)
  149. -@mkdir -p $(BUILD_DIR)
  150. @echo "Creating libdgl-opengl.a"
  151. $(SILENT)rm -f $@
  152. $(SILENT)$(AR) crs $@ $^
  153. $(BUILD_DIR)/libdgl-opengl3.a: $(OBJS_opengl3)
  154. -@mkdir -p $(BUILD_DIR)
  155. @echo "Creating libdgl-opengl3.a"
  156. $(SILENT)rm -f $@
  157. $(SILENT)$(AR) crs $@ $^
  158. $(BUILD_DIR)/libdgl-stub.a: $(OBJS_stub)
  159. -@mkdir -p $(BUILD_DIR)
  160. @echo "Creating libdgl-stub.a"
  161. $(SILENT)rm -f $@
  162. $(SILENT)$(AR) crs $@ $^
  163. $(BUILD_DIR)/libdgl-vulkan.a: $(OBJS_vulkan)
  164. -@mkdir -p $(BUILD_DIR)
  165. @echo "Creating libdgl-vulkan.a"
  166. $(SILENT)rm -f $@
  167. $(SILENT)$(AR) crs $@ $^
  168. # ---------------------------------------------------------------------------------------------------------------------
  169. $(BUILD_DIR)/dgl/%.c.o: src/%.c
  170. -@mkdir -p $(BUILD_DIR)/dgl
  171. @echo "Compiling $<"
  172. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  173. $(BUILD_DIR)/dgl/%.cpp.o: src/%.cpp
  174. -@mkdir -p $(BUILD_DIR)/dgl
  175. @echo "Compiling $<"
  176. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  177. $(BUILD_DIR)/dgl/%.mm.o: src/%.mm
  178. -@mkdir -p $(BUILD_DIR)/dgl
  179. @echo "Compiling $<"
  180. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -ObjC++ -o $@
  181. # ---------------------------------------------------------------------------------------------------------------------
  182. $(BUILD_DIR)/dgl/pugl.cpp.o: src/pugl.cpp
  183. -@mkdir -p $(BUILD_DIR)/dgl
  184. @echo "Compiling $<"
  185. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -o $@
  186. $(BUILD_DIR)/dgl/pugl.mm.o: src/pugl.mm
  187. -@mkdir -p $(BUILD_DIR)/dgl
  188. @echo "Compiling $<"
  189. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -ObjC++ -o $@
  190. $(BUILD_DIR)/dgl/WebViewWin32.cpp.o: src/WebViewWin32.cpp
  191. -@mkdir -p $(BUILD_DIR)/dgl
  192. @echo "Compiling $<"
  193. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -std=gnu++17 -c -o $@
  194. # ---------------------------------------------------------------------------------------------------------------------
  195. $(BUILD_DIR)/dgl/%.cpp.cairo.o: src/%.cpp
  196. -@mkdir -p $(BUILD_DIR)/dgl
  197. @echo "Compiling $< (Cairo variant)"
  198. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@
  199. $(BUILD_DIR)/dgl/%.mm.cairo.o: src/%.mm
  200. -@mkdir -p $(BUILD_DIR)/dgl
  201. @echo "Compiling $< (Cairo variant)"
  202. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -ObjC++ -o $@
  203. # ---------------------------------------------------------------------------------------------------------------------
  204. $(BUILD_DIR)/dgl/%.cpp.gles2.o: src/%.cpp
  205. -@mkdir -p $(BUILD_DIR)/dgl
  206. @echo "Compiling $< (GLESv2 variant)"
  207. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES2 -c -o $@
  208. $(BUILD_DIR)/dgl/%.mm.gles2.o: src/%.mm
  209. -@mkdir -p $(BUILD_DIR)/dgl
  210. @echo "Compiling $< (GLESv2 variant)"
  211. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES2 -c -ObjC++ -o $@
  212. # ---------------------------------------------------------------------------------------------------------------------
  213. $(BUILD_DIR)/dgl/%.cpp.gles3.o: src/%.cpp
  214. -@mkdir -p $(BUILD_DIR)/dgl
  215. @echo "Compiling $< (GLESv3 variant)"
  216. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES3 -c -o $@
  217. $(BUILD_DIR)/dgl/%.mm.gles3.o: src/%.mm
  218. -@mkdir -p $(BUILD_DIR)/dgl
  219. @echo "Compiling $< (GLESv3 variant)"
  220. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES3 -c -ObjC++ -o $@
  221. # ---------------------------------------------------------------------------------------------------------------------
  222. $(BUILD_DIR)/dgl/%.cpp.opengl.o: src/%.cpp
  223. -@mkdir -p $(BUILD_DIR)/dgl
  224. @echo "Compiling $< (OpenGL variant)"
  225. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@
  226. $(BUILD_DIR)/dgl/%.mm.opengl.o: src/%.mm
  227. -@mkdir -p $(BUILD_DIR)/dgl
  228. @echo "Compiling $< (OpenGL variant)"
  229. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -ObjC++ -o $@
  230. # ---------------------------------------------------------------------------------------------------------------------
  231. $(BUILD_DIR)/dgl/%.cpp.opengl3.o: src/%.cpp
  232. -@mkdir -p $(BUILD_DIR)/dgl
  233. @echo "Compiling $< (OpenGL3 variant)"
  234. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -o $@
  235. $(BUILD_DIR)/dgl/%.mm.opengl3.o: src/%.mm
  236. -@mkdir -p $(BUILD_DIR)/dgl
  237. @echo "Compiling $< (OpenGL3 variant)"
  238. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -ObjC++ -o $@
  239. # ---------------------------------------------------------------------------------------------------------------------
  240. $(BUILD_DIR)/dgl/%.cpp.vulkan.o: src/%.cpp
  241. -@mkdir -p $(BUILD_DIR)/dgl
  242. @echo "Compiling $< (Vulkan variant)"
  243. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -o $@
  244. $(BUILD_DIR)/dgl/%.mm.vulkan.o: src/%.mm
  245. -@mkdir -p $(BUILD_DIR)/dgl
  246. @echo "Compiling $< (Vulkan variant)"
  247. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -ObjC++ -o $@
  248. # ---------------------------------------------------------------------------------------------------------------------
  249. clean:
  250. rm -rf $(BUILD_DIR)/dgl $(BUILD_DIR)/libdgl*.*
  251. debug:
  252. $(MAKE) DEBUG=true
  253. # ---------------------------------------------------------------------------------------------------------------------
  254. -include $(OBJS_common:%.o=%.d)
  255. -include $(OBJS_cairo:%.o=%.d)
  256. -include $(OBJS_gles2:%.o=%.d)
  257. -include $(OBJS_gles3:%.o=%.d)
  258. -include $(OBJS_opengl:%.o=%.d)
  259. -include $(OBJS_opengl3:%.o=%.d)
  260. -include $(OBJS_stub:%.o=%.d)
  261. -include $(OBJS_vulkan:%.o=%.d)
  262. # ---------------------------------------------------------------------------------------------------------------------