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.

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