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.

579 lines
19KB

  1. #!/usr/bin/make -f
  2. # Makefile for DPF Example Plugins #
  3. # -------------------------------- #
  4. # Created by falkTX
  5. #
  6. # NOTE: NAME, FILES_DSP and FILES_UI must have been defined before including this file!
  7. ifeq ($(DPF_PATH),)
  8. ifeq (,$(wildcard ../../Makefile.base.mk))
  9. DPF_PATH=../../dpf
  10. else
  11. DPF_PATH=../..
  12. endif
  13. endif
  14. include $(DPF_PATH)/Makefile.base.mk
  15. # ---------------------------------------------------------------------------------------------------------------------
  16. # Basic setup
  17. ifeq ($(DPF_TARGET_DIR),)
  18. TARGET_DIR = ../../bin
  19. else
  20. TARGET_DIR = $(DPF_TARGET_DIR)
  21. endif
  22. ifeq ($(DPF_BUILD_DIR),)
  23. BUILD_DIR = ../../build/$(NAME)
  24. else
  25. BUILD_DIR = $(DPF_BUILD_DIR)
  26. endif
  27. BUILD_C_FLAGS += -I.
  28. BUILD_CXX_FLAGS += -I. -I$(DPF_PATH)/distrho -I$(DPF_PATH)/dgl
  29. ifeq ($(HAVE_ALSA),true)
  30. BASE_FLAGS += -DHAVE_ALSA
  31. endif
  32. ifeq ($(HAVE_JACK),true)
  33. BASE_FLAGS += -DHAVE_JACK
  34. endif
  35. ifeq ($(HAVE_LIBLO),true)
  36. BASE_FLAGS += -DHAVE_LIBLO
  37. endif
  38. ifeq ($(HAVE_PULSEAUDIO),true)
  39. BASE_FLAGS += -DHAVE_PULSEAUDIO
  40. endif
  41. ifeq ($(HAVE_RTAUDIO),true)
  42. BASE_FLAGS += -DHAVE_RTAUDIO
  43. endif
  44. ifeq ($(HAVE_SDL2),true)
  45. BASE_FLAGS += -DHAVE_SDL2
  46. endif
  47. # always needed
  48. ifneq ($(HAIKU_OR_MACOS_OR_WASM_OR_WINDOWS),true)
  49. ifneq ($(STATIC_BUILD),true)
  50. LINK_FLAGS += -ldl
  51. endif
  52. endif
  53. # ---------------------------------------------------------------------------------------------------------------------
  54. # JACK/Standalone setup
  55. ifeq ($(WASM),true)
  56. JACK_FLAGS += -sUSE_SDL=2
  57. JACK_LIBS += -sUSE_SDL=2
  58. JACK_LIBS += -sMAIN_MODULE -ldl
  59. ifneq ($(FILE_BROWSER_DISABLED),true)
  60. JACK_LIBS += -sEXPORTED_RUNTIME_METHODS=FS,cwrap
  61. endif
  62. else ifneq ($(SKIP_RTAUDIO_FALLBACK),true)
  63. ifeq ($(MACOS),true)
  64. JACK_LIBS += -framework CoreAudio -framework CoreFoundation
  65. else ifeq ($(WINDOWS),true)
  66. JACK_LIBS += -lole32 -lwinmm
  67. # DirectSound
  68. JACK_LIBS += -ldsound
  69. # WASAPI
  70. # JACK_LIBS += -lksuser -lmfplat -lmfuuid -lwmcodecdspuuid
  71. else ifeq ($(HAVE_PULSEAUDIO),true)
  72. JACK_FLAGS += $(PULSEAUDIO_FLAGS)
  73. JACK_LIBS += $(PULSEAUDIO_LIBS)
  74. else ifeq ($(HAVE_ALSA),true)
  75. JACK_FLAGS += $(ALSA_FLAGS)
  76. JACK_LIBS += $(ALSA_LIBS)
  77. endif
  78. ifeq ($(HAVE_RTAUDIO),true)
  79. ifneq ($(HAIKU),true)
  80. JACK_LIBS += -lpthread
  81. endif
  82. endif
  83. ifeq ($(HAVE_SDL2),true)
  84. JACK_FLAGS += $(SDL2_FLAGS)
  85. JACK_LIBS += $(SDL2_LIBS)
  86. endif
  87. endif
  88. # ---------------------------------------------------------------------------------------------------------------------
  89. # Set files to build
  90. OBJS_DSP = $(FILES_DSP:%=$(BUILD_DIR)/%.o)
  91. OBJS_UI = $(FILES_UI:%=$(BUILD_DIR)/%.o)
  92. ifeq ($(MACOS),true)
  93. OBJS_UI += $(BUILD_DIR)/DistrhoUI_macOS_$(NAME).mm.o
  94. endif
  95. # ---------------------------------------------------------------------------------------------------------------------
  96. # Set VST2 filename, either single binary or inside a bundle
  97. ifeq ($(MACOS),true)
  98. VST2_CONTENTS = $(NAME).vst/Contents
  99. VST2_FILENAME = $(VST2_CONTENTS)/MacOS/$(NAME)
  100. else ifeq ($(USE_VST2_BUNDLE),true)
  101. VST2_FILENAME = $(NAME).vst/$(NAME)$(LIB_EXT)
  102. else
  103. VST2_FILENAME = $(NAME)-vst$(LIB_EXT)
  104. endif
  105. # ---------------------------------------------------------------------------------------------------------------------
  106. # Set VST3 filename, see https://vst3sdk-doc.diatonic.jp/doc/vstinterfaces/vst3loc.html
  107. ifeq ($(LINUX),true)
  108. VST3_FILENAME = $(NAME).vst3/Contents/$(TARGET_PROCESSOR)-linux/$(NAME).so
  109. else ifeq ($(MACOS),true)
  110. VST3_CONTENTS = $(NAME).vst3/Contents
  111. VST3_FILENAME = $(VST3_CONTENTS)/MacOS/$(NAME)
  112. else ifeq ($(WASM),true)
  113. VST3_FILENAME = $(NAME).vst3/Contents/wasm/$(NAME).vst3
  114. else ifeq ($(WINDOWS),true)
  115. ifeq ($(CPU_I386),true)
  116. VST3_FILENAME = $(NAME).vst3/Contents/x86-win/$(NAME).vst3
  117. else ifeq ($(CPU_X86_64),true)
  118. VST3_FILENAME = $(NAME).vst3/Contents/x86_64-win/$(NAME).vst3
  119. endif
  120. endif
  121. # ---------------------------------------------------------------------------------------------------------------------
  122. # Set plugin binary file targets
  123. jack = $(TARGET_DIR)/$(NAME)$(APP_EXT)
  124. ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa$(LIB_EXT)
  125. dssi_dsp = $(TARGET_DIR)/$(NAME)-dssi$(LIB_EXT)
  126. dssi_ui = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui$(APP_EXT)
  127. lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
  128. lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT)
  129. lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT)
  130. vst2 = $(TARGET_DIR)/$(VST2_FILENAME)
  131. ifneq ($(VST3_FILENAME),)
  132. vst3 = $(TARGET_DIR)/$(VST3_FILENAME)
  133. endif
  134. shared = $(TARGET_DIR)/$(NAME)$(LIB_EXT)
  135. static = $(TARGET_DIR)/$(NAME).a
  136. ifeq ($(MACOS),true)
  137. vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/Info.plist
  138. vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/PkgInfo
  139. vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/Resources/empty.lproj
  140. vst3files += $(TARGET_DIR)/$(VST3_CONTENTS)/Info.plist
  141. vst3files += $(TARGET_DIR)/$(VST3_CONTENTS)/PkgInfo
  142. vst3files += $(TARGET_DIR)/$(VST3_CONTENTS)/Resources/empty.lproj
  143. endif
  144. # ---------------------------------------------------------------------------------------------------------------------
  145. # Set plugin symbols to export
  146. ifeq ($(MACOS),true)
  147. SYMBOLS_LADSPA = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/ladspa.exp
  148. SYMBOLS_DSSI = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/dssi.exp
  149. SYMBOLS_LV2DSP = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2-dsp.exp
  150. SYMBOLS_LV2UI = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2-ui.exp
  151. SYMBOLS_LV2 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2.exp
  152. SYMBOLS_VST2 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/vst2.exp
  153. SYMBOLS_VST3 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/vst3.exp
  154. SYMBOLS_SHARED = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/shared.exp
  155. else ifeq ($(WASM),true)
  156. SYMBOLS_LADSPA = -sEXPORTED_FUNCTIONS="['ladspa_descriptor']"
  157. SYMBOLS_DSSI = -sEXPORTED_FUNCTIONS="['ladspa_descriptor','dssi_descriptor']"
  158. SYMBOLS_LV2DSP = -sEXPORTED_FUNCTIONS="['lv2_descriptor','lv2_generate_ttl']"
  159. SYMBOLS_LV2UI = -sEXPORTED_FUNCTIONS="['lv2ui_descriptor']"
  160. SYMBOLS_LV2 = -sEXPORTED_FUNCTIONS="['lv2_descriptor','lv2_generate_ttl','lv2ui_descriptor']"
  161. SYMBOLS_VST2 = -sEXPORTED_FUNCTIONS="['VSTPluginMain']"
  162. SYMBOLS_VST3 = -sEXPORTED_FUNCTIONS="['GetPluginFactory','ModuleEntry','ModuleExit']"
  163. SYMBOLS_SHARED = -sEXPORTED_FUNCTIONS="['createSharedPlugin']"
  164. else ifeq ($(WINDOWS),true)
  165. SYMBOLS_LADSPA = $(DPF_PATH)/utils/symbols/ladspa.def
  166. SYMBOLS_DSSI = $(DPF_PATH)/utils/symbols/dssi.def
  167. SYMBOLS_LV2DSP = $(DPF_PATH)/utils/symbols/lv2-dsp.def
  168. SYMBOLS_LV2UI = $(DPF_PATH)/utils/symbols/lv2-ui.def
  169. SYMBOLS_LV2 = $(DPF_PATH)/utils/symbols/lv2.def
  170. SYMBOLS_VST2 = $(DPF_PATH)/utils/symbols/vst2.def
  171. SYMBOLS_VST3 = $(DPF_PATH)/utils/symbols/vst3.def
  172. SYMBOLS_SHARED = $(DPF_PATH)/utils/symbols/shared.def
  173. else ifneq ($(DEBUG),true)
  174. SYMBOLS_LADSPA = -Wl,--version-script=$(DPF_PATH)/utils/symbols/ladspa.version
  175. SYMBOLS_DSSI = -Wl,--version-script=$(DPF_PATH)/utils/symbols/dssi.version
  176. SYMBOLS_LV2DSP = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2-dsp.version
  177. SYMBOLS_LV2UI = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2-ui.version
  178. SYMBOLS_LV2 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2.version
  179. SYMBOLS_VST2 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/vst2.version
  180. SYMBOLS_VST3 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/vst3.version
  181. SYMBOLS_SHARED = -Wl,--version-script=$(DPF_PATH)/utils/symbols/shared.version
  182. endif
  183. # ---------------------------------------------------------------------------------------------------------------------
  184. # Handle UI stuff, disable UI support automatically
  185. ifeq ($(FILES_UI),)
  186. HAVE_DGL = false
  187. UI_TYPE = none
  188. endif
  189. ifeq ($(UI_TYPE),)
  190. UI_TYPE = opengl
  191. endif
  192. ifeq ($(UI_TYPE),generic)
  193. ifeq ($(HAVE_OPENGL),true)
  194. UI_TYPE = opengl
  195. else ifeq ($(HAVE_CAIRO),true)
  196. UI_TYPE = cairo
  197. endif
  198. endif
  199. ifeq ($(UI_TYPE),cairo)
  200. ifeq ($(HAVE_CAIRO),true)
  201. DGL_FLAGS += -DDGL_CAIRO -DHAVE_DGL
  202. DGL_FLAGS += $(CAIRO_FLAGS)
  203. DGL_LIBS += $(CAIRO_LIBS)
  204. DGL_LIB = $(DPF_PATH)/build/libdgl-cairo.a
  205. HAVE_DGL = true
  206. else
  207. HAVE_DGL = false
  208. endif
  209. endif
  210. ifeq ($(UI_TYPE),opengl)
  211. ifeq ($(HAVE_OPENGL),true)
  212. DGL_FLAGS += -DDGL_OPENGL -DHAVE_DGL
  213. DGL_FLAGS += $(OPENGL_FLAGS)
  214. DGL_LIBS += $(OPENGL_LIBS)
  215. DGL_LIB = $(DPF_PATH)/build/libdgl-opengl.a
  216. HAVE_DGL = true
  217. else
  218. HAVE_DGL = false
  219. endif
  220. endif
  221. ifeq ($(UI_TYPE),opengl3)
  222. ifeq ($(HAVE_OPENGL),true)
  223. DGL_FLAGS += -DDGL_OPENGL -DDGL_USE_OPENGL3 -DHAVE_DGL
  224. DGL_FLAGS += $(OPENGL_FLAGS)
  225. DGL_LIBS += $(OPENGL_LIBS)
  226. DGL_LIB = $(DPF_PATH)/build/libdgl-opengl3.a
  227. HAVE_DGL = true
  228. else
  229. HAVE_DGL = false
  230. endif
  231. endif
  232. ifeq ($(UI_TYPE),vulkan)
  233. ifeq ($(HAVE_VULKAN),true)
  234. DGL_FLAGS += -DDGL_VULKAN -DHAVE_DGL
  235. DGL_FLAGS += $(VULKAN_FLAGS)
  236. DGL_LIBS += $(VULKAN_LIBS)
  237. DGL_LIB = $(DPF_PATH)/build/libdgl-vulkan.a
  238. HAVE_DGL = true
  239. else
  240. HAVE_DGL = false
  241. endif
  242. endif
  243. ifeq ($(UI_TYPE),external)
  244. DGL_FLAGS += -DDGL_EXTERNAL
  245. HAVE_DGL = true
  246. endif
  247. ifeq ($(UI_TYPE),stub)
  248. ifeq ($(HAVE_STUB),true)
  249. DGL_LIB = $(DPF_PATH)/build/libdgl-stub.a
  250. HAVE_DGL = true
  251. else
  252. HAVE_DGL = false
  253. endif
  254. endif
  255. DGL_LIBS += $(DGL_SYSTEM_LIBS) -lm
  256. ifneq ($(HAVE_DGL),true)
  257. dssi_ui =
  258. lv2_ui =
  259. DGL_LIBS =
  260. OBJS_UI =
  261. endif
  262. ifneq ($(HAVE_LIBLO),true)
  263. dssi_ui =
  264. endif
  265. # TODO split dsp and ui object build flags
  266. BASE_FLAGS += $(DGL_FLAGS)
  267. # ---------------------------------------------------------------------------------------------------------------------
  268. # Runtime test build
  269. ifeq ($(DPF_RUNTIME_TESTING),true)
  270. BUILD_CXX_FLAGS += -DDPF_RUNTIME_TESTING -Wno-pmf-conversions
  271. endif
  272. # ---------------------------------------------------------------------------------------------------------------------
  273. # all needs to be first
  274. all:
  275. # ---------------------------------------------------------------------------------------------------------------------
  276. # Common
  277. $(BUILD_DIR)/%.S.o: %.S
  278. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  279. @echo "Compiling $<"
  280. @$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  281. $(BUILD_DIR)/%.c.o: %.c
  282. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  283. @echo "Compiling $<"
  284. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  285. $(BUILD_DIR)/%.cc.o: %.cc
  286. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  287. @echo "Compiling $<"
  288. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  289. $(BUILD_DIR)/%.cpp.o: %.cpp
  290. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  291. @echo "Compiling $<"
  292. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  293. $(BUILD_DIR)/%.m.o: %.m
  294. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  295. @echo "Compiling $<"
  296. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -ObjC -c -o $@
  297. $(BUILD_DIR)/%.mm.o: %.mm
  298. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  299. @echo "Compiling $<"
  300. $(SILENT)$(CC) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@
  301. clean:
  302. rm -rf $(BUILD_DIR)
  303. rm -rf $(TARGET_DIR)/$(NAME)
  304. rm -rf $(TARGET_DIR)/$(NAME)-*
  305. rm -rf $(TARGET_DIR)/$(NAME).lv2
  306. rm -rf $(TARGET_DIR)/$(NAME).vst
  307. rm -rf $(TARGET_DIR)/$(NAME).vst3
  308. # ---------------------------------------------------------------------------------------------------------------------
  309. # DGL
  310. $(DPF_PATH)/build/libdgl-cairo.a:
  311. $(MAKE) -C $(DPF_PATH)/dgl cairo
  312. $(DPF_PATH)/build/libdgl-opengl.a:
  313. $(MAKE) -C $(DPF_PATH)/dgl opengl
  314. $(DPF_PATH)/build/libdgl-opengl3.a:
  315. $(MAKE) -C $(DPF_PATH)/dgl opengl3
  316. $(DPF_PATH)/build/libdgl-stub.a:
  317. $(MAKE) -C $(DPF_PATH)/dgl stub
  318. $(DPF_PATH)/build/libdgl-vulkan.a:
  319. $(MAKE) -C $(DPF_PATH)/dgl vulkan
  320. # ---------------------------------------------------------------------------------------------------------------------
  321. $(BUILD_DIR)/DistrhoPluginMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp $(EXTRA_DEPENDENCIES)
  322. -@mkdir -p $(BUILD_DIR)
  323. @echo "Compiling DistrhoPluginMain.cpp ($*)"
  324. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
  325. $(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp $(EXTRA_DEPENDENCIES)
  326. -@mkdir -p $(BUILD_DIR)
  327. @echo "Compiling DistrhoUIMain.cpp ($*)"
  328. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
  329. $(BUILD_DIR)/DistrhoUI_macOS_%.mm.o: $(DPF_PATH)/distrho/DistrhoUI_macOS.mm $(EXTRA_DEPENDENCIES)
  330. -@mkdir -p $(BUILD_DIR)
  331. @echo "Compiling DistrhoUI_macOS.mm ($*)"
  332. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -ObjC++ -c -o $@
  333. $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp $(EXTRA_DEPENDENCIES)
  334. -@mkdir -p $(BUILD_DIR)
  335. @echo "Compiling DistrhoPluginMain.cpp (JACK)"
  336. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_JACK $(JACK_FLAGS) -c -o $@
  337. $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp $(EXTRA_DEPENDENCIES)
  338. -@mkdir -p $(BUILD_DIR)
  339. @echo "Compiling DistrhoUIMain.cpp (DSSI)"
  340. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_DSSI $(LIBLO_FLAGS) -c -o $@
  341. # ---------------------------------------------------------------------------------------------------------------------
  342. # JACK
  343. jack: $(jack)
  344. ifeq ($(HAVE_DGL),true)
  345. $(jack): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.o $(DGL_LIB)
  346. else
  347. $(jack): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o
  348. endif
  349. -@mkdir -p $(shell dirname $@)
  350. @echo "Creating JACK standalone for $(NAME)"
  351. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(JACK_LIBS) -o $@
  352. # ---------------------------------------------------------------------------------------------------------------------
  353. # LADSPA
  354. ladspa: $(ladspa_dsp)
  355. $(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o
  356. -@mkdir -p $(shell dirname $@)
  357. @echo "Creating LADSPA plugin for $(NAME)"
  358. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_LADSPA) -o $@
  359. # ---------------------------------------------------------------------------------------------------------------------
  360. # DSSI
  361. dssi: $(dssi_dsp) $(dssi_ui)
  362. dssi_dsp: $(dssi_dsp)
  363. dssi_ui: $(dssi_ui)
  364. $(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o
  365. -@mkdir -p $(shell dirname $@)
  366. @echo "Creating DSSI plugin library for $(NAME)"
  367. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_DSSI) -o $@
  368. $(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DGL_LIB)
  369. -@mkdir -p $(shell dirname $@)
  370. @echo "Creating DSSI UI for $(NAME)"
  371. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(LIBLO_LIBS) -o $@
  372. # ---------------------------------------------------------------------------------------------------------------------
  373. # LV2
  374. lv2: $(lv2)
  375. lv2_dsp: $(lv2_dsp)
  376. lv2_sep: $(lv2_dsp) $(lv2_ui)
  377. ifeq ($(HAVE_DGL),true)
  378. $(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB)
  379. else
  380. $(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o
  381. endif
  382. -@mkdir -p $(shell dirname $@)
  383. @echo "Creating LV2 plugin for $(NAME)"
  384. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2) -o $@
  385. $(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o
  386. -@mkdir -p $(shell dirname $@)
  387. @echo "Creating LV2 plugin library for $(NAME)"
  388. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(SHARED) $(SYMBOLS_LV2DSP) -o $@
  389. $(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB)
  390. -@mkdir -p $(shell dirname $@)
  391. @echo "Creating LV2 plugin UI for $(NAME)"
  392. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2UI) -o $@
  393. # ---------------------------------------------------------------------------------------------------------------------
  394. # VST2
  395. vst2 vst: $(vst2) $(vst2files)
  396. ifeq ($(HAVE_DGL),true)
  397. $(vst2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST2.cpp.o $(DGL_LIB)
  398. else
  399. $(vst2): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.o
  400. endif
  401. -@mkdir -p $(shell dirname $@)
  402. @echo "Creating VST2 plugin for $(NAME)"
  403. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST2) -o $@
  404. # ---------------------------------------------------------------------------------------------------------------------
  405. # VST3
  406. vst3: $(vst3) $(vst3files)
  407. ifeq ($(HAVE_DGL),true)
  408. $(vst3): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST3.cpp.o $(DGL_LIB)
  409. else
  410. $(vst3): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.o
  411. endif
  412. -@mkdir -p $(shell dirname $@)
  413. @echo "Creating VST3 plugin for $(NAME)"
  414. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST3) -o $@
  415. # ---------------------------------------------------------------------------------------------------------------------
  416. # Shared
  417. shared: $(shared)
  418. ifeq ($(HAVE_DGL),true)
  419. $(shared): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.o $(BUILD_DIR)/DistrhoUIMain_SHARED.cpp.o $(DGL_LIB)
  420. else
  421. $(shared): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.o
  422. endif
  423. -@mkdir -p $(shell dirname $@)
  424. @echo "Creating shared library for $(NAME)"
  425. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_SHARED) -o $@
  426. # ---------------------------------------------------------------------------------------------------------------------
  427. # Static
  428. static: $(static)
  429. ifeq ($(HAVE_DGL),true)
  430. $(static): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_STATIC.cpp.o $(BUILD_DIR)/DistrhoUIMain_STATIC.cpp.o
  431. else
  432. $(static): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_STATIC.cpp.o
  433. endif
  434. -@mkdir -p $(shell dirname $@)
  435. @echo "Creating static library for $(NAME)"
  436. $(SILENT)rm -f $@
  437. $(SILENT)$(AR) crs $@ $^
  438. # ---------------------------------------------------------------------------------------------------------------------
  439. # macOS files
  440. $(TARGET_DIR)/%/Contents/Info.plist: $(DPF_PATH)/utils/plugin.vst/Contents/Info.plist
  441. -@mkdir -p $(shell dirname $@)
  442. $(SILENT)sed -e "s/@INFO_PLIST_PROJECT_NAME@/$(NAME)/" $< > $@
  443. $(TARGET_DIR)/%/Contents/PkgInfo: $(DPF_PATH)/utils/plugin.vst/Contents/PkgInfo
  444. -@mkdir -p $(shell dirname $@)
  445. $(SILENT)cp $< $@
  446. $(TARGET_DIR)/%/Resources/empty.lproj: $(DPF_PATH)/utils/plugin.vst/Contents/Resources/empty.lproj
  447. -@mkdir -p $(shell dirname $@)
  448. $(SILENT)cp $< $@
  449. # ---------------------------------------------------------------------------------------------------------------------
  450. -include $(OBJS_DSP:%.o=%.d)
  451. ifneq ($(UI_TYPE),)
  452. -include $(OBJS_UI:%.o=%.d)
  453. endif
  454. -include $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.d
  455. -include $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.d
  456. -include $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.d
  457. -include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d
  458. -include $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.d
  459. -include $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.d
  460. -include $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.d
  461. -include $(BUILD_DIR)/DistrhoPluginMain_STATIC.cpp.d
  462. -include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d
  463. -include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d
  464. -include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d
  465. -include $(BUILD_DIR)/DistrhoUIMain_VST2.cpp.d
  466. -include $(BUILD_DIR)/DistrhoUIMain_VST3.cpp.d
  467. -include $(BUILD_DIR)/DistrhoUIMain_SHARED.cpp.d
  468. -include $(BUILD_DIR)/DistrhoUIMain_STATIC.cpp.d
  469. # ---------------------------------------------------------------------------------------------------------------------