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.

620 lines
20KB

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