Audio plugin host https://kx.studio/carla
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.

347 lines
11KB

  1. #!/usr/bin/make -f
  2. # Makefile for carla-bridges-ui #
  3. # ----------------------------- #
  4. # Created by falkTX
  5. #
  6. CWD=..
  7. MODULENAME=carla-bridge
  8. include $(CWD)/Makefile.mk
  9. # ----------------------------------------------------------------------------------------------------------------------------
  10. BINDIR := $(CWD)/../bin
  11. ifeq ($(DEBUG),true)
  12. OBJDIR := $(CWD)/../build/bridges-ui/Debug
  13. MODULEDIR := $(CWD)/../build/modules/Debug
  14. else
  15. OBJDIR := $(CWD)/../build/bridges-ui/Release
  16. MODULEDIR := $(CWD)/../build/modules/Release
  17. endif
  18. # ----------------------------------------------------------------------------------------------------------------------------
  19. BUILD_CXX_FLAGS += -DBUILD_BRIDGE -I. -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/utils -isystem $(CWD)/modules
  20. BUILD_LV2_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_LV2
  21. BUILD_VST2_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_VST2
  22. ifeq ($(CARLA_VESTIGE_HEADER),true)
  23. BUILD_VST2_FLAGS += -DVESTIGE_HEADER
  24. endif
  25. LINK_FLAGS += $(JUCE_CORE_LIBS)
  26. # ----------------------------------------------------------------------------------------------------------------------------
  27. BUILD_LV2_GTK2_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_GTK2 -DBRIDGE_LV2_GTK2 $(shell pkg-config --cflags gtk+-2.0)
  28. LINK_LV2_GTK2_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs gtk+-2.0) -ldl
  29. BUILD_LV2_GTK3_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_GTK3 -DBRIDGE_LV2_GTK3 $(shell pkg-config --cflags gtk+-3.0)
  30. LINK_LV2_GTK3_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs gtk+-3.0) -ldl
  31. BUILD_LV2_QT4_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_QT4 -DBRIDGE_LV2_QT4 $(shell pkg-config --cflags QtCore QtGui) -I$(OBJDIR) -I$(CWD)/theme
  32. LINK_LV2_QT4_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs QtCore QtGui) -ldl
  33. BUILD_LV2_QT5_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_QT5 -DBRIDGE_LV2_QT5 $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets) -I$(OBJDIR) -I$(CWD)/theme
  34. LINK_LV2_QT5_FLAGS = $(LINK_FLAGS) $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets) -ldl
  35. BUILD_LV2_X11_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_X11 -DBRIDGE_LV2_X11 $(X11_FLAGS)
  36. LINK_LV2_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl
  37. BUILD_LV2_COCOA_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_COCOA -DBRIDGE_LV2_COCOA -ObjC++
  38. LINK_LV2_COCOA_FLAGS = $(LINK_FLAGS) -framework Cocoa -framework IOKit -framework QuartzCore -ldl
  39. BUILD_LV2_WINDOWS_FLAGS = $(BUILD_LV2_FLAGS) -DBRIDGE_HWND -DBRIDGE_LV2_HWND
  40. LINK_LV2_WINDOWS_FLAGS = $(LINK_FLAGS) -static -mwindows
  41. BUILD_VST2_X11_FLAGS = $(BUILD_VST2_FLAGS) -DBRIDGE_X11 -DBRIDGE_VST2_X11 $(X11_FLAGS)
  42. LINK_VST2_X11_FLAGS = $(LINK_FLAGS) $(X11_LIBS) -ldl
  43. ifeq ($(LINUX),true)
  44. LINK_LV2_GTK2_FLAGS += -lX11
  45. LINK_LV2_GTK3_FLAGS += -lX11
  46. LINK_LV2_QT4_FLAGS += -lX11
  47. endif
  48. # ----------------------------------------------------------------------------------------------------------------------------
  49. ifeq ($(MACOS_OR_WIN32),true)
  50. HAVE_QT4 = false
  51. HAVE_QT5 = false
  52. endif
  53. ifeq ($(HAVE_GTK2),true)
  54. TARGETS += ui_lv2-gtk2
  55. endif
  56. ifeq ($(HAVE_GTK3),true)
  57. TARGETS += ui_lv2-gtk3
  58. endif
  59. ifeq ($(HAVE_QT4),true)
  60. TARGETS += ui_lv2-qt4
  61. endif
  62. ifeq ($(HAVE_QT5),true)
  63. TARGETS += ui_lv2-qt5
  64. endif
  65. ifeq ($(HAVE_X11),true)
  66. TARGETS += ui_lv2-x11
  67. TARGETS += ui_vst2-x11
  68. endif
  69. ifeq ($(MACOS),true)
  70. TARGETS += ui_lv2-cocoa
  71. endif
  72. ifeq ($(WIN32),true)
  73. TARGETS += ui_lv2-windows
  74. endif
  75. # ----------------------------------------------------------------------------------------------------------------------------
  76. all: $(TARGETS)
  77. # ----------------------------------------------------------------------------------------------------------------------------
  78. clean:
  79. rm -f $(OBJDIR)/*.cpp $(OBJDIR)/*.moc $(OBJDIR)/*.o
  80. rm -f $(BINDIR)/$(MODULENAME)-lv2-* $(BINDIR)/$(MODULENAME)-vst2-*
  81. debug:
  82. $(MAKE) DEBUG=true
  83. doxygen: carla_bridge.doxygen
  84. doxygen $<
  85. # ----------------------------------------------------------------------------------------------------------------------------
  86. ui_lv2-gtk2: $(BINDIR)/$(MODULENAME)-lv2-gtk2
  87. ui_lv2-gtk3: $(BINDIR)/$(MODULENAME)-lv2-gtk3
  88. ui_lv2-qt4: $(BINDIR)/$(MODULENAME)-lv2-qt4
  89. ui_lv2-qt5: $(BINDIR)/$(MODULENAME)-lv2-qt5
  90. ui_lv2-x11: $(BINDIR)/$(MODULENAME)-lv2-x11
  91. ui_lv2-cocoa: $(BINDIR)/$(MODULENAME)-lv2-cocoa
  92. ui_lv2-windows: $(BINDIR)/$(MODULENAME)-lv2-windows.exe
  93. ui_vst2-x11: #$(BINDIR)/$(MODULENAME)-vst2-x11
  94. # ----------------------------------------------------------------------------------------------------------------------------
  95. # Common libs
  96. LIBS_LV2 = \
  97. $(MODULEDIR)/juce_core.a \
  98. $(MODULEDIR)/lilv.a
  99. LIBS_LV2_JUCE = \
  100. $(LIBS_LV2) \
  101. $(MODULEDIR)/juce_data_structures.a \
  102. $(MODULEDIR)/juce_events.a \
  103. $(MODULEDIR)/juce_graphics.a \
  104. $(MODULEDIR)/juce_gui_basics.a
  105. ifeq ($(MACOS),true)
  106. LIBS_LV2_JUCE += \
  107. $(MODULEDIR)/juce_gui_extra.a
  108. endif
  109. LIBS_VST2 = \
  110. $(MODULEDIR)/juce_core.a
  111. # ----------------------------------------------------------------------------------------------------------------------------
  112. # Common objects
  113. $(OBJDIR)/%.cpp.lv2.o: %.cpp
  114. -@mkdir -p $(OBJDIR)
  115. @echo "Compiling $< (LV2)"
  116. @$(CXX) $< $(BUILD_LV2_FLAGS) -c -o $@
  117. $(OBJDIR)/%.cpp.vst2.o: %.cpp
  118. -@mkdir -p $(OBJDIR)
  119. @echo "Compiling $< (VST2)"
  120. @$(CXX) $< $(BUILD_VST2_FLAGS) -c -o $@
  121. # ----------------------------------------------------------------------------------------------------------------------------
  122. # ui_lv2-gtk2
  123. OBJS_LV2_GTK2 = \
  124. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  125. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-gtk2.o \
  126. $(OBJDIR)/CarlaBridgeToolkitGtk.cpp.lv2-gtk2.o
  127. $(BINDIR)/$(MODULENAME)-lv2-gtk2: $(OBJS_LV2_GTK2) $(LIBS_LV2)
  128. -@mkdir -p $(BINDIR)
  129. @echo "Linking $(MODULENAME)-lv2-gtk2"
  130. @$(CXX) $(OBJS_LV2_GTK2) $(LIBS_START) $(LIBS_LV2) $(LIBS_END) $(LINK_LV2_GTK2_FLAGS) -o $@
  131. $(OBJDIR)/%.cpp.lv2-gtk2.o: %.cpp
  132. -@mkdir -p $(OBJDIR)
  133. @echo "Compiling $< (LV2-GTK2)"
  134. @$(CXX) $< $(BUILD_LV2_GTK2_FLAGS) -c -o $@
  135. -include $(OBJS_LV2_GTK2:%.o=%.d)
  136. # ----------------------------------------------------------------------------------------------------------------------------
  137. # ui_lv2-gtk3
  138. OBJS_LV2_GTK3 = \
  139. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  140. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-gtk3.o \
  141. $(OBJDIR)/CarlaBridgeToolkitGtk.cpp.lv2-gtk3.o
  142. $(BINDIR)/$(MODULENAME)-lv2-gtk3: $(OBJS_LV2_GTK3) $(LIBS_LV2)
  143. -@mkdir -p $(BINDIR)
  144. @echo "Linking $(MODULENAME)-lv2-gtk3"
  145. @$(CXX) $(OBJS_LV2_GTK3) $(LIBS_START) $(LIBS_LV2) $(LIBS_END) $(LINK_LV2_GTK3_FLAGS) -o $@
  146. $(OBJDIR)/%.cpp.lv2-gtk3.o: %.cpp
  147. -@mkdir -p $(OBJDIR)
  148. @echo "Compiling $< (LV2-GTK3)"
  149. @$(CXX) $< $(BUILD_LV2_GTK3_FLAGS) -c -o $@
  150. -include $(OBJS_LV2_GTK3:%.o=%.d)
  151. # ----------------------------------------------------------------------------------------------------------------------------
  152. # ui_lv2-qt4
  153. OBJS_LV2_QT4 = \
  154. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  155. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-qt4.o \
  156. $(OBJDIR)/CarlaBridgeToolkitQt.cpp.lv2-qt4.o
  157. $(BINDIR)/$(MODULENAME)-lv2-qt4: $(OBJS_LV2_QT4) $(LIBS_LV2) $(MODULEDIR)/theme.qt4.a
  158. -@mkdir -p $(BINDIR)
  159. @echo "Linking $(MODULENAME)-lv2-qt4"
  160. @$(CXX) $(OBJS_LV2_QT4) $(LIBS_START) $(LIBS_LV2) $(MODULEDIR)/theme.qt4.a $(LIBS_END) $(LINK_LV2_QT4_FLAGS) -o $@
  161. $(OBJDIR)/%.cpp.lv2-qt4.o: %.cpp $(OBJDIR)/CarlaBridgeToolkitQt4.moc $(OBJDIR)/resources.qt4.cpp
  162. -@mkdir -p $(OBJDIR)
  163. @echo "Compiling $< (LV2-QT4)"
  164. @$(CXX) $< $(BUILD_LV2_QT4_FLAGS) -c -o $@
  165. $(OBJDIR)/CarlaBridgeToolkitQt4.moc: CarlaBridgeToolkitQt.cpp
  166. -@mkdir -p $(OBJDIR)
  167. @echo "Generating CarlaBridgeToolkitQt4.moc"
  168. @$(MOC_QT4) $< -DMOC_PARSING -o $@
  169. $(OBJDIR)/resources.qt4.cpp: ../../resources/resources-theme.qrc
  170. -@mkdir -p $(OBJDIR)
  171. @echo "Generating resources.qt4.cpp"
  172. @$(RCC_QT4) $< -o $@
  173. -include $(OBJS_LV2_QT4:%.o=%.d)
  174. # ----------------------------------------------------------------------------------------------------------------------------
  175. # ui_lv2-qt5
  176. OBJS_LV2_QT5 = \
  177. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  178. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-qt5.o \
  179. $(OBJDIR)/CarlaBridgeToolkitQt.cpp.lv2-qt5.o
  180. $(BINDIR)/$(MODULENAME)-lv2-qt5: $(OBJS_LV2_QT5) $(LIBS_LV2) $(MODULEDIR)/theme.qt5.a
  181. -@mkdir -p $(BINDIR)
  182. @echo "Linking $(MODULENAME)-lv2-qt5"
  183. @$(CXX) $(OBJS_LV2_QT5) $(LIBS_START) $(LIBS_LV2) $(MODULEDIR)/theme.qt5.a $(LIBS_END) $(LINK_LV2_QT5_FLAGS) -o $@
  184. $(OBJDIR)/%.cpp.lv2-qt5.o: %.cpp $(OBJDIR)/CarlaBridgeToolkitQt5.moc $(OBJDIR)/resources.qt5.cpp
  185. -@mkdir -p $(OBJDIR)
  186. @echo "Compiling $< (LV2-QT5)"
  187. @$(CXX) $< $(BUILD_LV2_QT5_FLAGS) -c -o $@
  188. $(OBJDIR)/CarlaBridgeToolkitQt5.moc: CarlaBridgeToolkitQt.cpp
  189. -@mkdir -p $(OBJDIR)
  190. @echo "Generating CarlaBridgeToolkitQt5.moc"
  191. @$(MOC_QT5) $< -DMOC_PARSING -o $@
  192. $(OBJDIR)/resources.qt5.cpp: ../../resources/resources-theme.qrc
  193. -@mkdir -p $(OBJDIR)
  194. @echo "Generating resources.qt5.cpp"
  195. @$(RCC_QT5) $< -o $@
  196. -include $(OBJS_LV2_QT5:%.o=%.d)
  197. # ----------------------------------------------------------------------------------------------------------------------------
  198. # ui_lv2-x11
  199. OBJS_LV2_X11 = \
  200. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  201. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-x11.o \
  202. $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.lv2-x11.o
  203. $(BINDIR)/$(MODULENAME)-lv2-x11: $(OBJS_LV2_X11) $(LIBS_LV2)
  204. -@mkdir -p $(BINDIR)
  205. @echo "Linking $(MODULENAME)-lv2-x11"
  206. @$(CXX) $(OBJS_LV2_X11) $(LIBS_START) $(LIBS_LV2) $(LIBS_END) $(LINK_LV2_X11_FLAGS) -o $@
  207. $(OBJDIR)/%.cpp.lv2-x11.o: %.cpp
  208. -@mkdir -p $(OBJDIR)
  209. @echo "Compiling $< (LV2-X11)"
  210. @$(CXX) $< $(BUILD_LV2_X11_FLAGS) -c -o $@
  211. -include $(OBJS_LV2_X11:%.o=%.d)
  212. # ----------------------------------------------------------------------------------------------------------------------------
  213. # ui_lv2-cocoa
  214. OBJS_LV2_COCOA = \
  215. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  216. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-cocoa.o \
  217. $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.lv2-cocoa.o
  218. $(BINDIR)/$(MODULENAME)-lv2-cocoa: $(OBJS_LV2_COCOA) $(LIBS_LV2_JUCE)
  219. -@mkdir -p $(BINDIR)
  220. @echo "Linking $(MODULENAME)-lv2-cocoa"
  221. @$(CXX) $(OBJS_LV2_COCOA) $(LIBS_START) $(LIBS_LV2_JUCE) $(LIBS_END) $(LINK_LV2_COCOA_FLAGS) -o $@
  222. $(OBJDIR)/%.cpp.lv2-cocoa.o: %.cpp
  223. -@mkdir -p $(OBJDIR)
  224. @echo "Compiling $< (LV2-Cocoa)"
  225. @$(CXX) $< $(BUILD_LV2_COCOA_FLAGS) -c -o $@
  226. -include $(OBJS_LV2_COCOA:%.o=%.d)
  227. # ----------------------------------------------------------------------------------------------------------------------------
  228. # ui_lv2-windows
  229. OBJS_LV2_WINDOWS = \
  230. $(OBJDIR)/CarlaBridgeUI.cpp.lv2.o \
  231. $(OBJDIR)/CarlaBridgeUI-LV2.cpp.lv2-windows.o \
  232. $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.lv2-windows.o
  233. $(BINDIR)/$(MODULENAME)-lv2-windows.exe: $(OBJS_LV2_WINDOWS) $(LIBS_LV2_JUCE)
  234. -@mkdir -p $(BINDIR)
  235. @echo "Linking $(MODULENAME)-lv2-windows.exe"
  236. @$(CXX) $(OBJS_LV2_WINDOWS) $(LIBS_START) $(LIBS_LV2_JUCE) $(LIBS_END) $(LINK_LV2_WINDOWS_FLAGS) -o $@
  237. $(OBJDIR)/%.cpp.lv2-windows.o: %.cpp
  238. -@mkdir -p $(OBJDIR)
  239. @echo "Compiling $< (LV2-Windows)"
  240. @$(CXX) $< $(BUILD_LV2_WINDOWS_FLAGS) -c -o $@
  241. -include $(OBJS_LV2_WINDOWS:%.o=%.d)
  242. # ----------------------------------------------------------------------------------------------------------------------------
  243. # ui_vst2-x11
  244. OBJS_VST2_X11 = \
  245. $(OBJDIR)/CarlaBridgeUI.cpp.vst2.o \
  246. $(OBJDIR)/CarlaBridgeUI-VST2.cpp.vst2-x11.o \
  247. $(OBJDIR)/CarlaBridgeToolkitPlugin.cpp.vst2-x11.o
  248. $(BINDIR)/$(MODULENAME)-vst2-x11: $(OBJS_VST2_X11) $(LIBS_VST2)
  249. -@mkdir -p $(BINDIR)
  250. @echo "Linking $(MODULENAME)-vst2-x11"
  251. @$(CXX) $(OBJS_VST2_X11) $(LIBS_START) $(LIBS_VST2) $(LIBS_END) $(LINK_VST2_X11_FLAGS) -o $@
  252. $(OBJDIR)/%.cpp.vst2-x11.o: %.cpp
  253. -@mkdir -p $(OBJDIR)
  254. @echo "Compiling $< (VST2-X11)"
  255. @$(CXX) $< $(BUILD_VST2_X11_FLAGS) -c -o $@
  256. -include $(OBJS_VST2_X11:%.o=%.d)
  257. # ----------------------------------------------------------------------------------------------------------------------------