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.

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