External plugins for 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.

205 lines
5.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_WINDOWS),true)
  12. SKIP_ZYN_SYNTH = true
  13. endif
  14. HAVE_NTK = $(shell pkg-config --exists ntk ntk_images && echo true)
  15. HAVE_ZYN_DEPS = $(shell pkg-config --exists liblo fftw3 mxml zlib && echo true)
  16. # ---------------------------------------------------------------------------------------------------------------------
  17. # Check for optional libs (special non-pkgconfig unix tests)
  18. ifeq ($(UNIX),true)
  19. # fltk doesn't have a pkg-config file but has fltk-config instead.
  20. # Also, don't try looking for it if we already have NTK.
  21. ifneq ($(HAVE_NTK),true)
  22. ifeq ($(shell which fltk-config 1>/dev/null 2>/dev/null && echo true),true)
  23. ifeq ($(shell which fluid 1>/dev/null 2>/dev/null && echo true),true)
  24. HAVE_FLTK = true
  25. endif
  26. endif
  27. endif
  28. endif
  29. # ---------------------------------------------------------------------------------------------------------------------
  30. ifeq ($(HAVE_FLTK),true)
  31. HAVE_ZYN_UI_DEPS = true
  32. endif
  33. ifeq ($(HAVE_NTK),true)
  34. HAVE_ZYN_UI_DEPS = true
  35. endif
  36. # ---------------------------------------------------------------------------------------------------------------------
  37. ifeq ($(HAVE_PROJECTM),true)
  38. BASE_FLAGS += -DHAVE_PROJECTM
  39. endif
  40. ifeq ($(HAVE_ZYN_DEPS),true)
  41. ifneq ($(DEBUG),true)
  42. BASE_FLAGS += -DHAVE_ZYN_DEPS
  43. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  44. BASE_FLAGS += -DHAVE_ZYN_UI_DEPS
  45. endif
  46. endif
  47. endif
  48. # ---------------------------------------------------------------------------------------------------------------------
  49. ifeq ($(HAVE_PROJECTM),true)
  50. PROJECTM_FLAGS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags libprojectM)
  51. PROJECTM_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs libprojectM)
  52. endif
  53. # ---------------------------------------------------------------------------------------------------------------------
  54. # Flags for DPF Plugins
  55. ifeq ($(USING_CUSTOM_DPF),true)
  56. DPF_FLAGS = -I$(CUSTOM_DPF_PATH)/distrho
  57. else
  58. DPF_FLAGS = -I$(CWDE)/modules/distrho
  59. endif
  60. ifeq ($(HAVE_DGL),true)
  61. ifeq ($(USING_CUSTOM_DPF),true)
  62. DPF_FLAGS += -I$(CUSTOM_DPF_PATH)/dgl
  63. else
  64. DPF_FLAGS += -I$(CWDE)/modules/dgl
  65. endif
  66. DPF_FLAGS += $(DGL_FLAGS)
  67. endif
  68. # ---------------------------------------------------------------------------------------------------------------------
  69. # Flags for ZynAddSubFX (DSP and UI separated)
  70. ifeq ($(HAVE_ZYN_DEPS),true)
  71. # Common flags
  72. ZYN_BASE_FLAGS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags liblo mxml)
  73. ZYN_BASE_FLAGS += -Iexternal/zynaddsubfx -Iexternal/zynaddsubfx/rtosc
  74. ifneq ($(WINDOWS),true)
  75. ZYN_BASE_FLAGS += -DHAVE_ASYNC
  76. endif
  77. ZYN_BASE_LIBS = $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs liblo mxml) -pthread
  78. ZYN_BASE_LIBS += $(LIBDL_LIBS)
  79. # DSP flags
  80. ZYN_DSP_FLAGS = $(ZYN_BASE_FLAGS)
  81. ZYN_DSP_FLAGS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags fftw3 zlib)
  82. ZYN_DSP_LIBS = $(ZYN_BASE_LIBS)
  83. ZYN_DSP_LIBS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs fftw3 zlib)
  84. ifeq ($(SKIP_ZYN_SYNTH),true)
  85. BASE_FLAGS += -DSKIP_ZYN_SYNTH
  86. else
  87. # UI flags
  88. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  89. # Common UI flags
  90. ZYN_UI_FLAGS = $(ZYN_BASE_FLAGS)
  91. ZYN_UI_LIBS = $(ZYN_BASE_LIBS)
  92. # NTK or FLTK UI flags
  93. ifeq ($(HAVE_NTK),true)
  94. FLUID = ntk-fluid
  95. ZYN_UI_FLAGS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags ntk_images ntk) -DNTK_GUI
  96. ZYN_UI_LIBS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs ntk_images ntk)
  97. else # HAVE_NTK
  98. FLUID = fluid
  99. ZYN_UI_FLAGS += $(shell fltk-config --use-images --cxxflags) -DFLTK_GUI
  100. ZYN_UI_LIBS += $(shell fltk-config --use-images --ldflags)
  101. endif # HAVE_NTK
  102. # UI extra flags
  103. ifeq ($(HAVE_X11),true)
  104. ZYN_UI_FLAGS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --cflags x11)
  105. ZYN_UI_LIBS += $(shell pkg-config $(PKG_CONFIG_FLAGS) --libs x11)
  106. endif
  107. ifeq ($(LINUX),true)
  108. ZYN_UI_LIBS += -lrt
  109. endif
  110. else # HAVE_ZYN_UI_DEPS
  111. ZYN_DSP_FLAGS += -DNO_UI
  112. endif # SKIP_ZYN_SYNTH
  113. endif # HAVE_ZYN_UI_DEPS
  114. endif # HAVE_ZYN_DEPS
  115. # ---------------------------------------------------------------------------------------------------------------------
  116. NATIVE_PLUGINS_LIBS += $(PROJECTM_LIBS)
  117. NATIVE_PLUGINS_LIBS += $(ZYN_DSP_LIBS)
  118. NATIVE_PLUGINS_LIBS += $(ZITA_DSP_LIBS)
  119. # ---------------------------------------------------------------------------------------------------------------------
  120. all:
  121. install_external_plugins:
  122. ifeq ($(HAVE_ZYN_DEPS),true)
  123. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  124. # Create directories (zynaddsubfx)
  125. install -d $(DESTDIR)$(DATADIR)/carla/resources/zynaddsubfx
  126. # Install resources (zynaddsubfx)
  127. install -m 644 \
  128. bin/resources/zynaddsubfx/*.png \
  129. $(DESTDIR)$(DATADIR)/carla/resources/zynaddsubfx
  130. install -m 755 \
  131. bin/resources/zynaddsubfx-ui \
  132. $(DESTDIR)$(DATADIR)/carla/resources
  133. endif
  134. endif
  135. features_print_external_plugins:
  136. @printf -- "\n"
  137. @printf -- "$(tS)---> External plugins: $(tE)\n"
  138. ifeq ($(HAVE_DGL),true)
  139. @printf -- "DPF Plugins: $(ANS_YES) (with UI)\n"
  140. ifeq ($(HAVE_PROJECTM),true)
  141. @printf -- "DPF ProM: $(ANS_YES)\n"
  142. else
  143. @printf -- "DPF ProM: $(ANS_NO) $(mS)missing libprojectM$(mE)\n"
  144. endif
  145. else
  146. @printf -- "DPF Plugins: $(ANS_YES) (without UI)\n"
  147. ifeq ($(HAVE_PROJECTM),true)
  148. @printf -- "DPF ProM: $(ANS_NO) $(mS)missing OpenGL$(mE)\n"
  149. else
  150. @printf -- "DPF ProM: $(ANS_NO) $(mS)missing OpenGL and libprojectM$(mE)\n"
  151. endif
  152. endif
  153. ifeq ($(HAVE_ZYN_DEPS),true)
  154. ifeq ($(HAVE_ZYN_UI_DEPS),true)
  155. ifeq ($(HAVE_NTK),true)
  156. @printf -- "ZynAddSubFX: $(ANS_YES) (with NTK UI)\n"
  157. else
  158. @printf -- "ZynAddSubFX: $(ANS_YES) (with FLTK UI)\n"
  159. endif
  160. else
  161. @printf -- "ZynAddSubFX: $(ANS_YES) (without UI) $(mS)FLTK or NTK missing$(mE)\n"
  162. endif
  163. else
  164. @printf -- "ZynAddSubFX: $(ANS_NO) $(mS)liblo, fftw3, mxml or zlib missing$(mE)\n"
  165. endif
  166. # ---------------------------------------------------------------------------------------------------------------------