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.

294 lines
9.4KB

  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. # ---------------------------------------------------------------------------------------------------------------------
  47. OBJS_cairo = $(OBJS_common) \
  48. $(BUILD_DIR)/dgl/Cairo.cpp.cairo.o
  49. ifeq ($(MACOS),true)
  50. OBJS_cairo += $(BUILD_DIR)/dgl/pugl.mm.cairo.o
  51. else
  52. OBJS_cairo += $(BUILD_DIR)/dgl/pugl.cpp.cairo.o
  53. endif
  54. # ---------------------------------------------------------------------------------------------------------------------
  55. OBJS_opengl = $(OBJS_common) \
  56. $(BUILD_DIR)/dgl/OpenGL.cpp.opengl.o \
  57. $(BUILD_DIR)/dgl/NanoVG.cpp.opengl.o
  58. ifeq ($(MACOS),true)
  59. OBJS_opengl += $(BUILD_DIR)/dgl/pugl.mm.opengl.o
  60. else
  61. OBJS_opengl += $(BUILD_DIR)/dgl/pugl.cpp.opengl.o
  62. endif
  63. # ---------------------------------------------------------------------------------------------------------------------
  64. OBJS_opengl3 = $(OBJS_common) \
  65. $(BUILD_DIR)/dgl/OpenGL.cpp.opengl3.o \
  66. $(BUILD_DIR)/dgl/NanoVG.cpp.opengl3.o
  67. ifeq ($(MACOS),true)
  68. OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.mm.opengl3.o
  69. else
  70. OBJS_opengl3 += $(BUILD_DIR)/dgl/pugl.cpp.opengl3.o
  71. endif
  72. # ---------------------------------------------------------------------------------------------------------------------
  73. OBJS_stub = $(OBJS_common)
  74. ifeq ($(MACOS),true)
  75. OBJS_stub += $(BUILD_DIR)/dgl/pugl.mm.o
  76. else
  77. OBJS_stub += $(BUILD_DIR)/dgl/pugl.cpp.o
  78. endif
  79. # ---------------------------------------------------------------------------------------------------------------------
  80. OBJS_vulkan = $(OBJS_common) \
  81. $(BUILD_DIR)/dgl/Vulkan.cpp.vulkan.o
  82. ifeq ($(MACOS),true)
  83. OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.mm.vulkan.o
  84. else
  85. OBJS_vulkan += $(BUILD_DIR)/dgl/pugl.cpp.vulkan.o
  86. endif
  87. # ---------------------------------------------------------------------------------------------------------------------
  88. OBJS_web = $(OBJS_common) \
  89. $(BUILD_DIR)/dgl/Web.cpp.o
  90. ifeq ($(MACOS),true)
  91. OBJS_web += $(BUILD_DIR)/dgl/pugl.mm.o
  92. else
  93. OBJS_web += $(BUILD_DIR)/dgl/pugl.cpp.o
  94. endif
  95. # ---------------------------------------------------------------------------------------------------------------------
  96. ifeq ($(HAVE_CAIRO),true)
  97. TARGETS += $(BUILD_DIR)/libdgl-cairo.a
  98. endif
  99. ifeq ($(HAVE_OPENGL),true)
  100. TARGETS += $(BUILD_DIR)/libdgl-opengl.a
  101. # Compat name, to be removed soon
  102. TARGETS += $(BUILD_DIR)/libdgl.a
  103. endif
  104. ifeq ($(HAVE_STUB),true)
  105. TARGETS += $(BUILD_DIR)/libdgl-stub.a
  106. endif
  107. ifeq ($(HAVE_VULKAN),true)
  108. TARGETS += $(BUILD_DIR)/libdgl-vulkan.a
  109. endif
  110. # ---------------------------------------------------------------------------------------------------------------------
  111. all: $(TARGETS)
  112. cairo: $(BUILD_DIR)/libdgl-cairo.a
  113. opengl: $(BUILD_DIR)/libdgl-opengl.a
  114. opengl3: $(BUILD_DIR)/libdgl-opengl3.a
  115. stub: $(BUILD_DIR)/libdgl-stub.a
  116. vulkan: $(BUILD_DIR)/libdgl-vulkan.a
  117. web: $(BUILD_DIR)/libdgl-web.a
  118. # ---------------------------------------------------------------------------------------------------------------------
  119. $(BUILD_DIR)/libdgl-cairo.a: $(OBJS_cairo)
  120. -@mkdir -p $(BUILD_DIR)
  121. @echo "Creating libdgl-cairo.a"
  122. $(SILENT)rm -f $@
  123. $(SILENT)$(AR) crs $@ $^
  124. $(BUILD_DIR)/libdgl-opengl.a: $(OBJS_opengl)
  125. -@mkdir -p $(BUILD_DIR)
  126. @echo "Creating libdgl-opengl.a"
  127. $(SILENT)rm -f $@
  128. $(SILENT)$(AR) crs $@ $^
  129. $(BUILD_DIR)/libdgl-opengl3.a: $(OBJS_opengl3)
  130. -@mkdir -p $(BUILD_DIR)
  131. @echo "Creating libdgl-opengl3.a"
  132. $(SILENT)rm -f $@
  133. $(SILENT)$(AR) crs $@ $^
  134. $(BUILD_DIR)/libdgl-stub.a: $(OBJS_stub)
  135. -@mkdir -p $(BUILD_DIR)
  136. @echo "Creating libdgl-stub.a"
  137. $(SILENT)rm -f $@
  138. $(SILENT)$(AR) crs $@ $^
  139. $(BUILD_DIR)/libdgl-vulkan.a: $(OBJS_vulkan)
  140. -@mkdir -p $(BUILD_DIR)
  141. @echo "Creating libdgl-vulkan.a"
  142. $(SILENT)rm -f $@
  143. $(SILENT)$(AR) crs $@ $^
  144. $(BUILD_DIR)/libdgl-web.a: $(OBJS_web)
  145. -@mkdir -p $(BUILD_DIR)
  146. @echo "Creating libdgl-web.a"
  147. $(SILENT)rm -f $@
  148. $(SILENT)$(AR) crs $@ $^
  149. # Compat name, to be removed soon
  150. $(BUILD_DIR)/libdgl.a: $(BUILD_DIR)/libdgl-opengl.a
  151. @echo "Symlinking libdgl.a"
  152. $(SILENT)ln -sf $< $@
  153. # ---------------------------------------------------------------------------------------------------------------------
  154. $(BUILD_DIR)/dgl/%.c.o: src/%.c
  155. -@mkdir -p $(BUILD_DIR)/dgl
  156. @echo "Compiling $<"
  157. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  158. $(BUILD_DIR)/dgl/%.cpp.o: src/%.cpp
  159. -@mkdir -p $(BUILD_DIR)/dgl
  160. @echo "Compiling $<"
  161. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  162. $(BUILD_DIR)/dgl/%.mm.o: src/%.mm
  163. -@mkdir -p $(BUILD_DIR)/dgl
  164. @echo "Compiling $<"
  165. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -ObjC++ -o $@
  166. # ---------------------------------------------------------------------------------------------------------------------
  167. $(BUILD_DIR)/dgl/pugl.cpp.o: src/pugl.cpp
  168. -@mkdir -p $(BUILD_DIR)/dgl
  169. @echo "Compiling $<"
  170. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -o $@
  171. $(BUILD_DIR)/dgl/pugl.mm.o: src/pugl.mm
  172. -@mkdir -p $(BUILD_DIR)/dgl
  173. @echo "Compiling $<"
  174. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) -c -ObjC++ -o $@
  175. # ---------------------------------------------------------------------------------------------------------------------
  176. $(BUILD_DIR)/dgl/%.cpp.cairo.o: src/%.cpp
  177. -@mkdir -p $(BUILD_DIR)/dgl
  178. @echo "Compiling $< (Cairo variant)"
  179. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@
  180. $(BUILD_DIR)/dgl/%.mm.cairo.o: src/%.mm
  181. -@mkdir -p $(BUILD_DIR)/dgl
  182. @echo "Compiling $< (Cairo variant)"
  183. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -ObjC++ -o $@
  184. # ---------------------------------------------------------------------------------------------------------------------
  185. $(BUILD_DIR)/dgl/%.cpp.opengl.o: src/%.cpp
  186. -@mkdir -p $(BUILD_DIR)/dgl
  187. @echo "Compiling $< (OpenGL variant)"
  188. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@
  189. $(BUILD_DIR)/dgl/%.mm.opengl.o: src/%.mm
  190. -@mkdir -p $(BUILD_DIR)/dgl
  191. @echo "Compiling $< (OpenGL variant)"
  192. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -ObjC++ -o $@
  193. # ---------------------------------------------------------------------------------------------------------------------
  194. $(BUILD_DIR)/dgl/%.cpp.opengl3.o: src/%.cpp
  195. -@mkdir -p $(BUILD_DIR)/dgl
  196. @echo "Compiling $< (OpenGL3 variant)"
  197. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -o $@
  198. $(BUILD_DIR)/dgl/%.mm.opengl3.o: src/%.mm
  199. -@mkdir -p $(BUILD_DIR)/dgl
  200. @echo "Compiling $< (OpenGL3 variant)"
  201. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -DDGL_USE_OPENGL3 -c -ObjC++ -o $@
  202. # ---------------------------------------------------------------------------------------------------------------------
  203. $(BUILD_DIR)/dgl/%.cpp.vulkan.o: src/%.cpp
  204. -@mkdir -p $(BUILD_DIR)/dgl
  205. @echo "Compiling $< (Vulkan variant)"
  206. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -o $@
  207. $(BUILD_DIR)/dgl/%.mm.vulkan.o: src/%.mm
  208. -@mkdir -p $(BUILD_DIR)/dgl
  209. @echo "Compiling $< (Vulkan variant)"
  210. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(PUGL_EXTRA_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -ObjC++ -o $@
  211. # ---------------------------------------------------------------------------------------------------------------------
  212. clean:
  213. rm -rf $(BUILD_DIR)/dgl $(BUILD_DIR)/libdgl*.*
  214. debug:
  215. $(MAKE) DEBUG=true
  216. # ---------------------------------------------------------------------------------------------------------------------
  217. -include $(OBJS_common:%.o=%.d)
  218. -include $(OBJS_cairo:%.o=%.d)
  219. -include $(OBJS_opengl:%.o=%.d)
  220. -include $(OBJS_opengl3:%.o=%.d)
  221. -include $(OBJS_stub:%.o=%.d)
  222. -include $(OBJS_vulkan:%.o=%.d)
  223. -include $(OBJS_web:%.o=%.d)
  224. # ---------------------------------------------------------------------------------------------------------------------