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.

355 lines
12KB

  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/OpenGL3.cpp.gles2.o \
  61. $(BUILD_DIR)/dgl/NanoVG.cpp.gles2.o
  62. ifeq ($(MACOS),true)
  63. OBJS_gles2 += $(BUILD_DIR)/dgl/pugl.mm.gles2.o
  64. else
  65. OBJS_gles2 += $(BUILD_DIR)/dgl/pugl.cpp.gles2.o
  66. endif
  67. # ---------------------------------------------------------------------------------------------------------------------
  68. OBJS_gles3 = $(OBJS_common) \
  69. $(BUILD_DIR)/dgl/OpenGL.cpp.gles3.o \
  70. $(BUILD_DIR)/dgl/OpenGL3.cpp.gles3.o \
  71. $(BUILD_DIR)/dgl/NanoVG.cpp.gles3.o
  72. ifeq ($(MACOS),true)
  73. OBJS_gles3 += $(BUILD_DIR)/dgl/pugl.mm.gles3.o
  74. else
  75. OBJS_gles3 += $(BUILD_DIR)/dgl/pugl.cpp.gles3.o
  76. endif
  77. # ---------------------------------------------------------------------------------------------------------------------
  78. OBJS_opengl = $(OBJS_common) \
  79. $(BUILD_DIR)/dgl/OpenGL.cpp.opengl.o \
  80. $(BUILD_DIR)/dgl/OpenGL2.cpp.opengl.o \
  81. $(BUILD_DIR)/dgl/NanoVG.cpp.opengl.o
  82. ifeq ($(MACOS),true)
  83. OBJS_opengl += $(BUILD_DIR)/dgl/pugl.mm.opengl.o
  84. else
  85. OBJS_opengl += $(BUILD_DIR)/dgl/pugl.cpp.opengl.o
  86. endif
  87. # ---------------------------------------------------------------------------------------------------------------------
  88. OBJS_opengl3 = $(OBJS_common) \
  89. $(BUILD_DIR)/dgl/OpenGL.cpp.opengl3.o \
  90. $(BUILD_DIR)/dgl/OpenGL3.cpp.opengl3.o \
  91. $(BUILD_DIR)/dgl/NanoVG.cpp.opengl3.o
  92. ifeq ($(MACOS),true)
  93. OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.mm.opengl3.o
  94. else
  95. OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.cpp.opengl3.o
  96. endif
  97. # ---------------------------------------------------------------------------------------------------------------------
  98. OBJS_stub = $(OBJS_common) \
  99. $(BUILD_DIR)/dgl/Stub.cpp.o
  100. ifeq ($(MACOS),true)
  101. OBJS_stub += $(BUILD_DIR)/dgl/pugl.mm.o
  102. else
  103. OBJS_stub += $(BUILD_DIR)/dgl/pugl.cpp.o
  104. endif
  105. # ---------------------------------------------------------------------------------------------------------------------
  106. OBJS_vulkan = $(OBJS_common) \
  107. $(BUILD_DIR)/dgl/Vulkan.cpp.vulkan.o
  108. ifeq ($(MACOS),true)
  109. OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.mm.vulkan.o
  110. else
  111. OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.cpp.vulkan.o
  112. endif
  113. # ---------------------------------------------------------------------------------------------------------------------
  114. ifeq ($(HAVE_CAIRO),true)
  115. TARGETS += $(BUILD_DIR)/libdgl-cairo.a
  116. endif
  117. ifeq ($(HAVE_OPENGL),true)
  118. TARGETS += $(BUILD_DIR)/libdgl-gles2.a
  119. TARGETS += $(BUILD_DIR)/libdgl-gles3.a
  120. TARGETS += $(BUILD_DIR)/libdgl-opengl.a
  121. TARGETS += $(BUILD_DIR)/libdgl-opengl3.a
  122. endif
  123. ifeq ($(HAVE_STUB),true)
  124. TARGETS += $(BUILD_DIR)/libdgl-stub.a
  125. endif
  126. ifeq ($(HAVE_VULKAN),true)
  127. TARGETS += $(BUILD_DIR)/libdgl-vulkan.a
  128. endif
  129. # ---------------------------------------------------------------------------------------------------------------------
  130. all: $(TARGETS)
  131. cairo: $(BUILD_DIR)/libdgl-cairo.a
  132. gles2: $(BUILD_DIR)/libdgl-gles2.a
  133. gles3: $(BUILD_DIR)/libdgl-gles3.a
  134. ifeq ($(WASM),true)
  135. opengl: gles2
  136. opengl3: gles3
  137. else
  138. opengl: $(BUILD_DIR)/libdgl-opengl.a
  139. opengl3: $(BUILD_DIR)/libdgl-opengl3.a
  140. endif
  141. stub: $(BUILD_DIR)/libdgl-stub.a
  142. vulkan: $(BUILD_DIR)/libdgl-vulkan.a
  143. web: $(BUILD_DIR)/libdgl-web.a
  144. # ---------------------------------------------------------------------------------------------------------------------
  145. $(BUILD_DIR)/libdgl-cairo.a: $(OBJS_cairo)
  146. -@mkdir -p $(BUILD_DIR)
  147. @echo "Creating libdgl-cairo.a"
  148. $(SILENT)rm -f $@
  149. $(SILENT)$(AR) crs $@ $^
  150. $(BUILD_DIR)/libdgl-gles2.a: $(OBJS_gles2)
  151. -@mkdir -p $(BUILD_DIR)
  152. @echo "Creating libdgl-gles2.a"
  153. $(SILENT)rm -f $@
  154. $(SILENT)$(AR) crs $@ $^
  155. $(BUILD_DIR)/libdgl-gles3.a: $(OBJS_gles3)
  156. -@mkdir -p $(BUILD_DIR)
  157. @echo "Creating libdgl-gles3.a"
  158. $(SILENT)rm -f $@
  159. $(SILENT)$(AR) crs $@ $^
  160. $(BUILD_DIR)/libdgl-opengl.a: $(OBJS_opengl)
  161. -@mkdir -p $(BUILD_DIR)
  162. @echo "Creating libdgl-opengl.a"
  163. $(SILENT)rm -f $@
  164. $(SILENT)$(AR) crs $@ $^
  165. $(BUILD_DIR)/libdgl-opengl3.a: $(OBJS_opengl3)
  166. -@mkdir -p $(BUILD_DIR)
  167. @echo "Creating libdgl-opengl3.a"
  168. $(SILENT)rm -f $@
  169. $(SILENT)$(AR) crs $@ $^
  170. $(BUILD_DIR)/libdgl-stub.a: $(OBJS_stub)
  171. -@mkdir -p $(BUILD_DIR)
  172. @echo "Creating libdgl-stub.a"
  173. $(SILENT)rm -f $@
  174. $(SILENT)$(AR) crs $@ $^
  175. $(BUILD_DIR)/libdgl-vulkan.a: $(OBJS_vulkan)
  176. -@mkdir -p $(BUILD_DIR)
  177. @echo "Creating libdgl-vulkan.a"
  178. $(SILENT)rm -f $@
  179. $(SILENT)$(AR) crs $@ $^
  180. # ---------------------------------------------------------------------------------------------------------------------
  181. $(BUILD_DIR)/dgl/%.c.o: src/%.c
  182. -@mkdir -p $(BUILD_DIR)/dgl
  183. @echo "Compiling $<"
  184. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  185. $(BUILD_DIR)/dgl/%.cpp.o: src/%.cpp
  186. -@mkdir -p $(BUILD_DIR)/dgl
  187. @echo "Compiling $<"
  188. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  189. $(BUILD_DIR)/dgl/%.mm.o: src/%.mm
  190. -@mkdir -p $(BUILD_DIR)/dgl
  191. @echo "Compiling $<"
  192. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -ObjC++ -o $@
  193. # ---------------------------------------------------------------------------------------------------------------------
  194. $(BUILD_DIR)/dgl/pugl.cpp.o: src/pugl.cpp
  195. -@mkdir -p $(BUILD_DIR)/dgl
  196. @echo "Compiling $<"
  197. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -o $@
  198. $(BUILD_DIR)/dgl/pugl.mm.o: src/pugl.mm
  199. -@mkdir -p $(BUILD_DIR)/dgl
  200. @echo "Compiling $<"
  201. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -ObjC++ -o $@
  202. $(BUILD_DIR)/dgl/WebViewWin32.cpp.o: src/WebViewWin32.cpp
  203. -@mkdir -p $(BUILD_DIR)/dgl
  204. @echo "Compiling $<"
  205. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -std=gnu++17 -c -o $@
  206. # ---------------------------------------------------------------------------------------------------------------------
  207. $(BUILD_DIR)/dgl/%.cpp.cairo.o: src/%.cpp
  208. -@mkdir -p $(BUILD_DIR)/dgl
  209. @echo "Compiling $< (Cairo variant)"
  210. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@
  211. $(BUILD_DIR)/dgl/%.mm.cairo.o: src/%.mm
  212. -@mkdir -p $(BUILD_DIR)/dgl
  213. @echo "Compiling $< (Cairo variant)"
  214. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -ObjC++ -o $@
  215. # ---------------------------------------------------------------------------------------------------------------------
  216. $(BUILD_DIR)/dgl/%.cpp.gles2.o: src/%.cpp
  217. -@mkdir -p $(BUILD_DIR)/dgl
  218. @echo "Compiling $< (GLESv2 variant)"
  219. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES2 -UDGL_USE_GLES3 -c -o $@
  220. $(BUILD_DIR)/dgl/%.mm.gles2.o: src/%.mm
  221. -@mkdir -p $(BUILD_DIR)/dgl
  222. @echo "Compiling $< (GLESv2 variant)"
  223. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES2 -UDGL_USE_GLES3 -c -ObjC++ -o $@
  224. # ---------------------------------------------------------------------------------------------------------------------
  225. $(BUILD_DIR)/dgl/%.cpp.gles3.o: src/%.cpp
  226. -@mkdir -p $(BUILD_DIR)/dgl
  227. @echo "Compiling $< (GLESv3 variant)"
  228. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES3 -UDGL_USE_GLES2 -c -o $@
  229. $(BUILD_DIR)/dgl/%.mm.gles3.o: src/%.mm
  230. -@mkdir -p $(BUILD_DIR)/dgl
  231. @echo "Compiling $< (GLESv3 variant)"
  232. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -DDGL_USE_GLES -DDGL_USE_GLES3 -UDGL_USE_GLES2 -c -ObjC++ -o $@
  233. # ---------------------------------------------------------------------------------------------------------------------
  234. $(BUILD_DIR)/dgl/%.cpp.opengl.o: src/%.cpp
  235. -@mkdir -p $(BUILD_DIR)/dgl
  236. @echo "Compiling $< (OpenGL variant)"
  237. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@
  238. $(BUILD_DIR)/dgl/%.mm.opengl.o: src/%.mm
  239. -@mkdir -p $(BUILD_DIR)/dgl
  240. @echo "Compiling $< (OpenGL variant)"
  241. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -ObjC++ -o $@
  242. # ---------------------------------------------------------------------------------------------------------------------
  243. $(BUILD_DIR)/dgl/%.cpp.opengl3.o: src/%.cpp
  244. -@mkdir -p $(BUILD_DIR)/dgl
  245. @echo "Compiling $< (OpenGL3 variant)"
  246. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -o $@
  247. $(BUILD_DIR)/dgl/%.mm.opengl3.o: src/%.mm
  248. -@mkdir -p $(BUILD_DIR)/dgl
  249. @echo "Compiling $< (OpenGL3 variant)"
  250. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -ObjC++ -o $@
  251. # ---------------------------------------------------------------------------------------------------------------------
  252. $(BUILD_DIR)/dgl/%.cpp.vulkan.o: src/%.cpp
  253. -@mkdir -p $(BUILD_DIR)/dgl
  254. @echo "Compiling $< (Vulkan variant)"
  255. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -o $@
  256. $(BUILD_DIR)/dgl/%.mm.vulkan.o: src/%.mm
  257. -@mkdir -p $(BUILD_DIR)/dgl
  258. @echo "Compiling $< (Vulkan variant)"
  259. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -ObjC++ -o $@
  260. # ---------------------------------------------------------------------------------------------------------------------
  261. clean:
  262. rm -rf $(BUILD_DIR)/dgl $(BUILD_DIR)/libdgl*.*
  263. debug:
  264. $(MAKE) DEBUG=true
  265. # ---------------------------------------------------------------------------------------------------------------------
  266. -include $(OBJS_common:%.o=%.d)
  267. -include $(OBJS_cairo:%.o=%.d)
  268. -include $(OBJS_gles2:%.o=%.d)
  269. -include $(OBJS_gles3:%.o=%.d)
  270. -include $(OBJS_opengl:%.o=%.d)
  271. -include $(OBJS_opengl3:%.o=%.d)
  272. -include $(OBJS_stub:%.o=%.d)
  273. -include $(OBJS_vulkan:%.o=%.d)
  274. # ---------------------------------------------------------------------------------------------------------------------