Audio plugin host https://kx.studio/carla
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.

278 lines
7.8KB

  1. #!/usr/bin/make -f
  2. # Makefile for native-plugins #
  3. # --------------------------- #
  4. # Created by falkTX
  5. #
  6. ifeq ($(TESTBUILD),true)
  7. ifeq ($(LINUX),true)
  8. CXXFLAGS += -isystem /opt/kxstudio/include/ntk
  9. endif
  10. endif
  11. ifeq ($(MACOS_OR_WIN32),true)
  12. HAVE_DGL = true
  13. else
  14. HAVE_DGL = $(shell pkg-config --exists gl x11 && echo true)
  15. endif
  16. HAVE_NTK = $(shell pkg-config --exists ntk ntk_images && echo true)
  17. HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true)
  18. HAVE_ZYN_DEPS = $(shell pkg-config --exists liblo fftw3 mxml zlib && echo true)
  19. # ---------------------------------------------------------------------------------------------------------------------
  20. # Check for optional libs (special non-pkgconfig unix tests)
  21. ifeq ($(UNIX),true)
  22. # fltk doesn't have a pkg-config file but has fltk-config instead.
  23. # Also, don't try looking for it if we already have NTK.
  24. ifneq ($(HAVE_NTK),true)
  25. ifeq ($(shell which fltk-config 1>/dev/null 2>/dev/null && echo true),true)
  26. ifeq ($(shell which fluid 1>/dev/null 2>/dev/null && echo true),true)
  27. HAVE_FLTK = true
  28. endif
  29. endif
  30. endif
  31. endif
  32. # ---------------------------------------------------------------------------------------------------------------------
  33. ifeq ($(HAVE_FLTK),true)
  34. HAVE_ZYN_UI_DEPS = true
  35. endif
  36. ifeq ($(HAVE_NTK),true)
  37. HAVE_ZYN_UI_DEPS = true
  38. endif
  39. # ---------------------------------------------------------------------------------------------------------------------
  40. ifeq ($(HAVE_DGL),true)
  41. BASE_FLAGS += -DHAVE_DGL
  42. endif
  43. ifeq ($(HAVE_PROJECTM),true)
  44. BASE_FLAGS += -DHAVE_PROJECTM
  45. endif
  46. ifeq ($(HAVE_ZYN_DEPS),true)
  47. BASE_FLAGS += -DHAVE_ZYN_DEPS
  48. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  49. BASE_FLAGS += -DHAVE_ZYN_UI_DEPS
  50. endif
  51. endif
  52. ifeq ($(EXPERIMENTAL_PLUGINS),true)
  53. BASE_FLAGS += -DHAVE_EXPERIMENTAL_PLUGINS
  54. endif
  55. # ---------------------------------------------------------------------------------------------------------------------
  56. ifeq ($(HAVE_DGL),true)
  57. ifeq ($(MACOS_OR_WIN32),true)
  58. ifeq ($(MACOS),true)
  59. DGL_LIBS = -framework OpenGL -framework Cocoa
  60. endif
  61. ifeq ($(WIN32),true)
  62. DGL_LIBS = -lopengl32 -lgdi32
  63. endif
  64. else
  65. DGL_FLAGS = $(shell pkg-config --cflags gl x11)
  66. DGL_LIBS = $(shell pkg-config --libs gl x11)
  67. endif
  68. endif
  69. # ---------------------------------------------------------------------------------------------------------------------
  70. ifeq ($(HAVE_PROJECTM),true)
  71. PROJECTM_FLAGS = $(shell pkg-config --cflags libprojectM)
  72. PROJECTM_LIBS = $(shell pkg-config --libs libprojectM)
  73. endif
  74. # ---------------------------------------------------------------------------------------------------------------------
  75. # Flags for DPF Plugins
  76. DPF_FLAGS = -I$(CWDE)/modules/distrho
  77. ifeq ($(HAVE_DGL),true)
  78. DPF_FLAGS += -I$(CWDE)/modules/dgl
  79. endif
  80. # ---------------------------------------------------------------------------------------------------------------------
  81. # Flags for ZynAddSubFX (DSP and UI separated)
  82. ifeq ($(HAVE_ZYN_DEPS),true)
  83. # Common flags
  84. ZYN_BASE_FLAGS = $(shell pkg-config --cflags liblo mxml)
  85. ZYN_BASE_FLAGS += -Izynaddsubfx -Izynaddsubfx/rtosc
  86. ifneq ($(WIN32),true)
  87. ZYN_BASE_FLAGS += -DHAVE_ASYNC
  88. endif
  89. ZYN_BASE_LIBS = $(shell pkg-config --libs liblo mxml) -lpthread
  90. ifneq ($(WIN32),true)
  91. ZYN_BASE_LIBS += -ldl
  92. endif
  93. # DSP flags
  94. ZYN_DSP_FLAGS = $(ZYN_BASE_FLAGS)
  95. ZYN_DSP_FLAGS += $(shell pkg-config --cflags fftw3 zlib)
  96. ZYN_DSP_FLAGS += -Wno-misleading-indentation -Wno-shift-negative-value
  97. ZYN_DSP_LIBS = $(ZYN_BASE_LIBS)
  98. ZYN_DSP_LIBS += $(shell pkg-config --libs fftw3 zlib)
  99. # UI flags
  100. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  101. # Common UI flags
  102. ZYN_UI_FLAGS = $(ZYN_BASE_FLAGS)
  103. ZYN_UI_LIBS = $(ZYN_BASE_LIBS)
  104. # NTK or FLTK UI flags
  105. ifeq ($(HAVE_NTK),true)
  106. FLUID = ntk-fluid
  107. ZYN_UI_FLAGS += $(shell pkg-config --cflags ntk_images ntk) -DNTK_GUI
  108. ZYN_UI_LIBS += $(shell pkg-config --libs ntk_images ntk)
  109. else # HAVE_NTK
  110. FLUID = fluid
  111. ZYN_UI_FLAGS += $(shell fltk-config --use-images --cxxflags) -DFLTK_GUI
  112. ZYN_UI_LIBS += $(shell fltk-config --use-images --ldflags)
  113. endif # HAVE_NTK
  114. # UI extra flags
  115. ifeq ($(HAVE_X11),true)
  116. ZYN_UI_FLAGS += $(shell pkg-config --cflags x11)
  117. ZYN_UI_LIBS += $(shell pkg-config --libs x11)
  118. endif
  119. ifeq ($(LINUX),true)
  120. ZYN_UI_LIBS += -lrt
  121. endif
  122. else # HAVE_ZYN_UI_DEPS
  123. ZYN_DSP_FLAGS += -DNO_UI
  124. endif # HAVE_ZYN_UI_DEPS
  125. endif # HAVE_ZYN_DEPS
  126. # ---------------------------------------------------------------------------------------------------------------------
  127. # Flags for Zita Plugins (DSP and UI separated)
  128. ifeq ($(EXPERIMENTAL_PLUGINS),true)
  129. ZITA_DSP_FLAGS = $(shell pkg-config --cflags fftw3f)
  130. ZITA_DSP_FLAGS += -Wno-unused-parameter
  131. ZITA_DSP_LIBS = -lzita-convolver -lzita-resampler -lclthreads
  132. ZITA_DSP_LIBS += $(shell pkg-config --libs fftw3f)
  133. ZITA_DSP_LIBS += -lpthread -lrt
  134. ZITA_UI_FLAGS = $(shell pkg-config --cflags cairo libpng12 freetype2 x11 xft zlib)
  135. ZITA_UI_FLAGS += -Wno-ignored-qualifiers -Wno-unused-parameter -Wno-unused-result
  136. ZITA_UI_LIBS = $(shell pkg-config --libs cairo libpng12 freetype2 zlib)
  137. ZITA_UI_LIBS += -lclxclient -lclthreads $(shell pkg-config --libs x11 xft)
  138. ZITA_UI_LIBS += -ldl -lpthread -lrt
  139. endif
  140. # ---------------------------------------------------------------------------------------------------------------------
  141. NATIVE_PLUGINS_LIBS += $(DGL_LIBS)
  142. NATIVE_PLUGINS_LIBS += $(PROJECTM_LIBS)
  143. NATIVE_PLUGINS_LIBS += $(ZYN_DSP_LIBS)
  144. NATIVE_PLUGINS_LIBS += $(ZITA_DSP_LIBS)
  145. # ---------------------------------------------------------------------------------------------------------------------
  146. ifeq ($(HAVE_DGL),true)
  147. ALL_LIBS += $(MODULEDIR)/dgl.a
  148. endif
  149. # ---------------------------------------------------------------------------------------------------------------------
  150. all:
  151. install_external_plugins:
  152. ifeq ($(HAVE_ZYN_DEPS),true)
  153. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  154. # Create directories (zynaddsubfx)
  155. install -d $(DESTDIR)$(DATADIR)/carla/resources/zynaddsubfx
  156. # Install resources (zynaddsubfx)
  157. install -m 644 \
  158. bin/resources/zynaddsubfx/*.png \
  159. $(DESTDIR)$(DATADIR)/carla/resources/zynaddsubfx
  160. install -m 755 \
  161. bin/resources/zynaddsubfx-ui \
  162. $(DESTDIR)$(DATADIR)/carla/resources
  163. endif
  164. endif
  165. ifeq ($(EXPERIMENTAL_PLUGINS),true)
  166. # Create directories (experimental plugins)
  167. install -d $(DESTDIR)$(DATADIR)/carla/resources/at1
  168. install -d $(DESTDIR)$(DATADIR)/carla/resources/bls1
  169. install -d $(DESTDIR)$(DATADIR)/carla/resources/rev1
  170. # Install resources (experimental plugins)
  171. install -m 644 \
  172. bin/resources/at1/*.png \
  173. $(DESTDIR)$(DATADIR)/carla/resources/at1
  174. install -m 644 \
  175. bin/resources/bls1/*.png \
  176. $(DESTDIR)$(DATADIR)/carla/resources/bls1
  177. install -m 644 \
  178. bin/resources/rev1/*.png \
  179. $(DESTDIR)$(DATADIR)/carla/resources/rev1
  180. install -m 755 \
  181. bin/resources/zita-at1-ui \
  182. bin/resources/zita-bls1-ui \
  183. bin/resources/zita-rev1-ui \
  184. $(DESTDIR)$(DATADIR)/carla/resources
  185. endif
  186. features_print_external_plugins:
  187. @echo ""
  188. @echo "$(tS)---> External plugins: $(tE)"
  189. ifeq ($(HAVE_DGL),true)
  190. @echo "DPF Plugins: $(ANS_YES)(with UI)"
  191. ifeq ($(HAVE_PROJECTM),true)
  192. @echo "DPF ProM: $(ANS_YES)"
  193. else
  194. @echo "DPF ProM: $(ANS_NO) (missing libprojectM)"
  195. endif
  196. else
  197. @echo "DPF Plugins: $(ANS_YES)(without UI)"
  198. ifeq ($(HAVE_PROJECTM),true)
  199. @echo "DPF ProM: $(ANS_NO) $(mS)missing OpenGL$(mE)"
  200. else
  201. @echo "DPF ProM: $(ANS_NO) $(mS)missing OpenGL and libprojectM$(mE)"
  202. endif
  203. endif
  204. ifeq ($(HAVE_ZYN_DEPS),true)
  205. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  206. ifeq ($(HAVE_NTK),true)
  207. @echo "ZynAddSubFX: $(ANS_YES)(with NTK UI)"
  208. else
  209. @echo "ZynAddSubFX: $(ANS_YES)(with FLTK UI)"
  210. endif
  211. else
  212. @echo "ZynAddSubFX: $(ANS_YES)(without UI) $(mS)FLTK or NTK missing$(mE)"
  213. endif
  214. else
  215. @echo "ZynAddSubFX: $(ANS_NO) $(mS)liblo, fftw3, mxml or zlib missing$(mE)"
  216. endif
  217. ifeq ($(EXPERIMENTAL_PLUGINS),true)
  218. @echo "Experimental: YES"
  219. else
  220. @echo "Experimental: NO"
  221. endif
  222. # ---------------------------------------------------------------------------------------------------------------------