Collection of DPF-based plugins for packaging
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.

649 lines
21KB

  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 CLAP filename, either single binary or inside a bundle
  201. ifeq ($(MACOS),true)
  202. CLAP_CONTENTS = $(NAME).clap/Contents
  203. CLAP_FILENAME = $(CLAP_CONTENTS)/MacOS/$(NAME)
  204. else ifeq ($(USE_CLAP_BUNDLE),true)
  205. CLAP_FILENAME = $(NAME).clap/$(NAME).clap
  206. else
  207. CLAP_FILENAME = $(NAME).clap
  208. endif
  209. # ---------------------------------------------------------------------------------------------------------------------
  210. # Set plugin binary file targets
  211. ifeq ($(MACOS),true)
  212. ifeq ($(HAVE_DGL),true)
  213. MACOS_APP_BUNDLE = true
  214. endif
  215. endif
  216. ifeq ($(MACOS_APP_BUNDLE),true)
  217. jack = $(TARGET_DIR)/$(NAME).app/Contents/MacOS/$(NAME)
  218. jackfiles = $(TARGET_DIR)/$(NAME).app/Contents/Info.plist
  219. else
  220. jack = $(TARGET_DIR)/$(NAME)$(APP_EXT)
  221. endif
  222. ladspa_dsp = $(TARGET_DIR)/$(NAME)-ladspa$(LIB_EXT)
  223. dssi_dsp = $(TARGET_DIR)/$(NAME)-dssi$(LIB_EXT)
  224. dssi_ui = $(TARGET_DIR)/$(NAME)-dssi/$(NAME)_ui$(APP_EXT)
  225. lv2 = $(TARGET_DIR)/$(NAME).lv2/$(NAME)$(LIB_EXT)
  226. lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT)
  227. lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT)
  228. vst2 = $(TARGET_DIR)/$(VST2_FILENAME)
  229. ifneq ($(VST3_FILENAME),)
  230. vst3 = $(TARGET_DIR)/$(VST3_FILENAME)
  231. endif
  232. clap = $(TARGET_DIR)/$(CLAP_FILENAME)
  233. shared = $(TARGET_DIR)/$(NAME)$(LIB_EXT)
  234. static = $(TARGET_DIR)/$(NAME).a
  235. ifeq ($(MACOS),true)
  236. vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/Info.plist
  237. vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/PkgInfo
  238. vst2files += $(TARGET_DIR)/$(VST2_CONTENTS)/Resources/empty.lproj
  239. vst3files += $(TARGET_DIR)/$(VST3_CONTENTS)/Info.plist
  240. vst3files += $(TARGET_DIR)/$(VST3_CONTENTS)/PkgInfo
  241. vst3files += $(TARGET_DIR)/$(VST3_CONTENTS)/Resources/empty.lproj
  242. clapfiles += $(TARGET_DIR)/$(CLAP_CONTENTS)/Info.plist
  243. clapfiles += $(TARGET_DIR)/$(CLAP_CONTENTS)/PkgInfo
  244. clapfiles += $(TARGET_DIR)/$(CLAP_CONTENTS)/Resources/empty.lproj
  245. endif
  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. # ---------------------------------------------------------------------------------------------------------------------
  256. # Set plugin symbols to export
  257. ifeq ($(MACOS),true)
  258. SYMBOLS_LADSPA = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/ladspa.exp
  259. SYMBOLS_DSSI = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/dssi.exp
  260. SYMBOLS_LV2DSP = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2-dsp.exp
  261. SYMBOLS_LV2UI = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2-ui.exp
  262. SYMBOLS_LV2 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/lv2.exp
  263. SYMBOLS_VST2 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/vst2.exp
  264. SYMBOLS_VST3 = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/vst3.exp
  265. SYMBOLS_CLAP = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/clap.exp
  266. SYMBOLS_SHARED = -Wl,-exported_symbols_list,$(DPF_PATH)/utils/symbols/shared.exp
  267. else ifeq ($(WASM),true)
  268. SYMBOLS_LADSPA = -sEXPORTED_FUNCTIONS="['ladspa_descriptor']"
  269. SYMBOLS_DSSI = -sEXPORTED_FUNCTIONS="['ladspa_descriptor','dssi_descriptor']"
  270. SYMBOLS_LV2DSP = -sEXPORTED_FUNCTIONS="['lv2_descriptor','lv2_generate_ttl']"
  271. SYMBOLS_LV2UI = -sEXPORTED_FUNCTIONS="['lv2ui_descriptor']"
  272. SYMBOLS_LV2 = -sEXPORTED_FUNCTIONS="['lv2_descriptor','lv2_generate_ttl','lv2ui_descriptor']"
  273. SYMBOLS_VST2 = -sEXPORTED_FUNCTIONS="['VSTPluginMain']"
  274. SYMBOLS_VST3 = -sEXPORTED_FUNCTIONS="['GetPluginFactory','ModuleEntry','ModuleExit']"
  275. SYMBOLS_CLAP = -sEXPORTED_FUNCTIONS="['clap_entry']"
  276. SYMBOLS_SHARED = -sEXPORTED_FUNCTIONS="['createSharedPlugin']"
  277. else ifeq ($(WINDOWS),true)
  278. SYMBOLS_LADSPA = $(DPF_PATH)/utils/symbols/ladspa.def
  279. SYMBOLS_DSSI = $(DPF_PATH)/utils/symbols/dssi.def
  280. SYMBOLS_LV2DSP = $(DPF_PATH)/utils/symbols/lv2-dsp.def
  281. SYMBOLS_LV2UI = $(DPF_PATH)/utils/symbols/lv2-ui.def
  282. SYMBOLS_LV2 = $(DPF_PATH)/utils/symbols/lv2.def
  283. SYMBOLS_VST2 = $(DPF_PATH)/utils/symbols/vst2.def
  284. SYMBOLS_VST3 = $(DPF_PATH)/utils/symbols/vst3.def
  285. SYMBOLS_CLAP = $(DPF_PATH)/utils/symbols/clap.def
  286. SYMBOLS_SHARED = $(DPF_PATH)/utils/symbols/shared.def
  287. else ifneq ($(DEBUG),true)
  288. SYMBOLS_LADSPA = -Wl,--version-script=$(DPF_PATH)/utils/symbols/ladspa.version
  289. SYMBOLS_DSSI = -Wl,--version-script=$(DPF_PATH)/utils/symbols/dssi.version
  290. SYMBOLS_LV2DSP = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2-dsp.version
  291. SYMBOLS_LV2UI = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2-ui.version
  292. SYMBOLS_LV2 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/lv2.version
  293. SYMBOLS_VST2 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/vst2.version
  294. SYMBOLS_VST3 = -Wl,--version-script=$(DPF_PATH)/utils/symbols/vst3.version
  295. SYMBOLS_CLAP = -Wl,--version-script=$(DPF_PATH)/utils/symbols/clap.version
  296. SYMBOLS_SHARED = -Wl,--version-script=$(DPF_PATH)/utils/symbols/shared.version
  297. endif
  298. # ---------------------------------------------------------------------------------------------------------------------
  299. # Runtime test build
  300. ifeq ($(DPF_RUNTIME_TESTING),true)
  301. BUILD_CXX_FLAGS += -DDPF_RUNTIME_TESTING -Wno-pmf-conversions
  302. endif
  303. # ---------------------------------------------------------------------------------------------------------------------
  304. # all needs to be first
  305. all:
  306. # ---------------------------------------------------------------------------------------------------------------------
  307. # Common
  308. $(BUILD_DIR)/%.S.o: %.S
  309. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  310. @echo "Compiling $<"
  311. @$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  312. $(BUILD_DIR)/%.c.o: %.c
  313. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  314. @echo "Compiling $<"
  315. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  316. $(BUILD_DIR)/%.cc.o: %.cc
  317. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  318. @echo "Compiling $<"
  319. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  320. $(BUILD_DIR)/%.cpp.o: %.cpp
  321. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  322. @echo "Compiling $<"
  323. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  324. $(BUILD_DIR)/%.m.o: %.m
  325. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  326. @echo "Compiling $<"
  327. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -ObjC -c -o $@
  328. $(BUILD_DIR)/%.mm.o: %.mm
  329. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  330. @echo "Compiling $<"
  331. $(SILENT)$(CC) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@
  332. clean:
  333. rm -rf $(BUILD_DIR)
  334. rm -rf $(TARGET_DIR)/$(NAME)
  335. rm -rf $(TARGET_DIR)/$(NAME)-*
  336. rm -rf $(TARGET_DIR)/$(NAME).lv2
  337. rm -rf $(TARGET_DIR)/$(NAME).vst
  338. rm -rf $(TARGET_DIR)/$(NAME).vst3
  339. # ---------------------------------------------------------------------------------------------------------------------
  340. # DGL
  341. $(DPF_PATH)/build/libdgl-cairo.a:
  342. $(MAKE) -C $(DPF_PATH)/dgl cairo
  343. $(DPF_PATH)/build/libdgl-opengl.a:
  344. $(MAKE) -C $(DPF_PATH)/dgl opengl
  345. $(DPF_PATH)/build/libdgl-opengl3.a:
  346. $(MAKE) -C $(DPF_PATH)/dgl opengl3
  347. $(DPF_PATH)/build/libdgl-stub.a:
  348. $(MAKE) -C $(DPF_PATH)/dgl stub
  349. $(DPF_PATH)/build/libdgl-vulkan.a:
  350. $(MAKE) -C $(DPF_PATH)/dgl vulkan
  351. # ---------------------------------------------------------------------------------------------------------------------
  352. $(BUILD_DIR)/DistrhoPluginMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp $(EXTRA_DEPENDENCIES)
  353. -@mkdir -p $(BUILD_DIR)
  354. @echo "Compiling DistrhoPluginMain.cpp ($*)"
  355. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
  356. $(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp $(EXTRA_DEPENDENCIES)
  357. -@mkdir -p $(BUILD_DIR)
  358. @echo "Compiling DistrhoUIMain.cpp ($*)"
  359. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@
  360. $(BUILD_DIR)/DistrhoUI_macOS_%.mm.o: $(DPF_PATH)/distrho/DistrhoUI_macOS.mm $(EXTRA_DEPENDENCIES)
  361. -@mkdir -p $(BUILD_DIR)
  362. @echo "Compiling DistrhoUI_macOS.mm ($*)"
  363. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -ObjC++ -c -o $@
  364. $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp $(EXTRA_DEPENDENCIES)
  365. -@mkdir -p $(BUILD_DIR)
  366. @echo "Compiling DistrhoPluginMain.cpp (JACK)"
  367. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_JACK $(JACK_FLAGS) -c -o $@
  368. $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp $(EXTRA_DEPENDENCIES)
  369. -@mkdir -p $(BUILD_DIR)
  370. @echo "Compiling DistrhoUIMain.cpp (DSSI)"
  371. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_DSSI $(LIBLO_FLAGS) -c -o $@
  372. # ---------------------------------------------------------------------------------------------------------------------
  373. # JACK
  374. jack: $(jack) $(jackfiles)
  375. ifeq ($(HAVE_DGL),true)
  376. $(jack): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.o $(DGL_LIB)
  377. else
  378. $(jack): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o
  379. endif
  380. -@mkdir -p $(shell dirname $@)
  381. @echo "Creating JACK standalone for $(NAME)"
  382. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(JACK_LIBS) -o $@
  383. # ---------------------------------------------------------------------------------------------------------------------
  384. # LADSPA
  385. ladspa: $(ladspa_dsp)
  386. $(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o
  387. -@mkdir -p $(shell dirname $@)
  388. @echo "Creating LADSPA plugin for $(NAME)"
  389. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_LADSPA) -o $@
  390. # ---------------------------------------------------------------------------------------------------------------------
  391. # DSSI
  392. dssi: $(dssi_dsp) $(dssi_ui)
  393. dssi_dsp: $(dssi_dsp)
  394. dssi_ui: $(dssi_ui)
  395. $(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o
  396. -@mkdir -p $(shell dirname $@)
  397. @echo "Creating DSSI plugin library for $(NAME)"
  398. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_DSSI) -o $@
  399. $(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DGL_LIB)
  400. -@mkdir -p $(shell dirname $@)
  401. @echo "Creating DSSI UI for $(NAME)"
  402. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(LIBLO_LIBS) -o $@
  403. # ---------------------------------------------------------------------------------------------------------------------
  404. # LV2
  405. lv2: $(lv2)
  406. lv2_dsp: $(lv2_dsp)
  407. lv2_sep: $(lv2_dsp) $(lv2_ui)
  408. ifeq ($(HAVE_DGL),true)
  409. $(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB)
  410. else
  411. $(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o
  412. endif
  413. -@mkdir -p $(shell dirname $@)
  414. @echo "Creating LV2 plugin for $(NAME)"
  415. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2) -o $@
  416. $(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o
  417. -@mkdir -p $(shell dirname $@)
  418. @echo "Creating LV2 plugin library for $(NAME)"
  419. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(SHARED) $(SYMBOLS_LV2DSP) -o $@
  420. $(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB)
  421. -@mkdir -p $(shell dirname $@)
  422. @echo "Creating LV2 plugin UI for $(NAME)"
  423. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2UI) -o $@
  424. # ---------------------------------------------------------------------------------------------------------------------
  425. # VST2
  426. vst2 vst: $(vst2) $(vst2files)
  427. ifeq ($(HAVE_DGL),true)
  428. $(vst2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST2.cpp.o $(DGL_LIB)
  429. else
  430. $(vst2): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.o
  431. endif
  432. -@mkdir -p $(shell dirname $@)
  433. @echo "Creating VST2 plugin for $(NAME)"
  434. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST2) -o $@
  435. # ---------------------------------------------------------------------------------------------------------------------
  436. # VST3
  437. vst3: $(vst3) $(vst3files)
  438. ifeq ($(HAVE_DGL),true)
  439. $(vst3): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.o $(BUILD_DIR)/DistrhoUIMain_VST3.cpp.o $(DGL_LIB)
  440. else
  441. $(vst3): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.o
  442. endif
  443. -@mkdir -p $(shell dirname $@)
  444. @echo "Creating VST3 plugin for $(NAME)"
  445. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST3) -o $@
  446. # ---------------------------------------------------------------------------------------------------------------------
  447. # CLAP
  448. ifeq ($(HAVE_DGL),true)
  449. ifneq ($(HAIKU),true)
  450. ifneq ($(WASM),true)
  451. CLAP_LIBS = -lpthread
  452. endif
  453. endif
  454. endif
  455. clap: $(clap) $(clapfiles)
  456. ifeq ($(HAVE_DGL),true)
  457. $(clap): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_CLAP.cpp.o $(BUILD_DIR)/DistrhoUIMain_CLAP.cpp.o $(DGL_LIB)
  458. else
  459. $(clap): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_CLAP.cpp.o
  460. endif
  461. -@mkdir -p $(shell dirname $@)
  462. @echo "Creating CLAP plugin for $(NAME)"
  463. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(CLAP_LIBS) $(SHARED) $(SYMBOLS_CLAP) -o $@
  464. # ---------------------------------------------------------------------------------------------------------------------
  465. # Shared
  466. shared: $(shared)
  467. ifeq ($(HAVE_DGL),true)
  468. $(shared): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.o $(BUILD_DIR)/DistrhoUIMain_SHARED.cpp.o $(DGL_LIB)
  469. else
  470. $(shared): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.o
  471. endif
  472. -@mkdir -p $(shell dirname $@)
  473. @echo "Creating shared library for $(NAME)"
  474. $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_SHARED) -o $@
  475. # ---------------------------------------------------------------------------------------------------------------------
  476. # Static
  477. static: $(static)
  478. ifeq ($(HAVE_DGL),true)
  479. $(static): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_STATIC.cpp.o $(BUILD_DIR)/DistrhoUIMain_STATIC.cpp.o
  480. else
  481. $(static): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_STATIC.cpp.o
  482. endif
  483. -@mkdir -p $(shell dirname $@)
  484. @echo "Creating static library for $(NAME)"
  485. $(SILENT)rm -f $@
  486. $(SILENT)$(AR) crs $@ $^
  487. # ---------------------------------------------------------------------------------------------------------------------
  488. # macOS files
  489. $(TARGET_DIR)/%.app/Contents/Info.plist: $(DPF_PATH)/utils/plugin.app/Contents/Info.plist
  490. -@mkdir -p $(shell dirname $@)
  491. $(SILENT)sed -e "s/@INFO_PLIST_PROJECT_NAME@/$(NAME)/" $< > $@
  492. $(TARGET_DIR)/%.vst/Contents/Info.plist: $(DPF_PATH)/utils/plugin.bundle/Contents/Info.plist
  493. -@mkdir -p $(shell dirname $@)
  494. $(SILENT)sed -e "s/@INFO_PLIST_PROJECT_NAME@/$(NAME)/" $< > $@
  495. $(TARGET_DIR)/%.vst3/Contents/Info.plist: $(DPF_PATH)/utils/plugin.bundle/Contents/Info.plist
  496. -@mkdir -p $(shell dirname $@)
  497. $(SILENT)sed -e "s/@INFO_PLIST_PROJECT_NAME@/$(NAME)/" $< > $@
  498. $(TARGET_DIR)/%.clap/Contents/Info.plist: $(DPF_PATH)/utils/plugin.bundle/Contents/Info.plist
  499. -@mkdir -p $(shell dirname $@)
  500. $(SILENT)sed -e "s/@INFO_PLIST_PROJECT_NAME@/$(NAME)/" $< > $@
  501. $(TARGET_DIR)/%/Contents/PkgInfo: $(DPF_PATH)/utils/plugin.bundle/Contents/PkgInfo
  502. -@mkdir -p $(shell dirname $@)
  503. $(SILENT)cp $< $@
  504. $(TARGET_DIR)/%/Resources/empty.lproj: $(DPF_PATH)/utils/plugin.bundle/Contents/Resources/empty.lproj
  505. -@mkdir -p $(shell dirname $@)
  506. $(SILENT)cp $< $@
  507. # ---------------------------------------------------------------------------------------------------------------------
  508. -include $(OBJS_DSP:%.o=%.d)
  509. ifneq ($(UI_TYPE),)
  510. -include $(OBJS_UI:%.o=%.d)
  511. endif
  512. -include $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.d
  513. -include $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.d
  514. -include $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.d
  515. -include $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.d
  516. -include $(BUILD_DIR)/DistrhoPluginMain_VST2.cpp.d
  517. -include $(BUILD_DIR)/DistrhoPluginMain_VST3.cpp.d
  518. -include $(BUILD_DIR)/DistrhoPluginMain_CLAP.cpp.d
  519. -include $(BUILD_DIR)/DistrhoPluginMain_SHARED.cpp.d
  520. -include $(BUILD_DIR)/DistrhoPluginMain_STATIC.cpp.d
  521. -include $(BUILD_DIR)/DistrhoUIMain_JACK.cpp.d
  522. -include $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.d
  523. -include $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.d
  524. -include $(BUILD_DIR)/DistrhoUIMain_VST2.cpp.d
  525. -include $(BUILD_DIR)/DistrhoUIMain_VST3.cpp.d
  526. -include $(BUILD_DIR)/DistrhoUIMain_CLAP.cpp.d
  527. -include $(BUILD_DIR)/DistrhoUIMain_SHARED.cpp.d
  528. -include $(BUILD_DIR)/DistrhoUIMain_STATIC.cpp.d
  529. # ---------------------------------------------------------------------------------------------------------------------