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.

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