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.

258 lines
8.3KB

  1. #!/usr/bin/make -f
  2. # Makefile for DISTRHO Plugins #
  3. # ---------------------------- #
  4. # Created by falkTX
  5. #
  6. include dpf/Makefile.base.mk
  7. # also set in:
  8. # plugins/Common/IldaeilPlugin.cpp `getVersion`
  9. # plugins/Standalone/macOS/Info.plist
  10. VERSION = 1.3
  11. # ---------------------------------------------------------------------------------------------------------------------
  12. # Build targets
  13. all: carla dgl plugins gen
  14. # ---------------------------------------------------------------------------------------------------------------------
  15. # Build config
  16. PREFIX ?= /usr/local
  17. DESTDIR ?=
  18. # ---------------------------------------------------------------------------------------------------------------------
  19. # Carla config
  20. ifeq ($(WASM),true)
  21. USE_SYSTEM_CARLA_BINS = true
  22. endif
  23. CARLA_EXTRA_ARGS = \
  24. CARLA_BACKEND_NAMESPACE=Ildaeil \
  25. CAN_GENERATE_LV2_TTL=false \
  26. CUSTOM_DPF_PATH=$(CURDIR)/dpf \
  27. DGL_NAMESPACE=IldaeilDGL \
  28. STATIC_PLUGIN_TARGET=true \
  29. USE_FILE_BROWSER=true \
  30. USING_CUSTOM_DPF=true \
  31. HAVE_FFMPEG=false \
  32. HAVE_FLUIDSYNTH=false \
  33. HAVE_PROJECTM=false \
  34. HAVE_ZYN_DEPS=false \
  35. HAVE_ZYN_UI_DEPS=false
  36. ifneq ($(DEBUG),true)
  37. CARLA_EXTRA_ARGS += EXTERNAL_PLUGINS=true
  38. endif
  39. CARLA_TARGETS = static-plugin
  40. ifneq ($(USE_SYSTEM_CARLA_BINS),true)
  41. CARLA_TARGETS += bridges-plugin bridges-ui discovery
  42. ifeq ($(CARLA_EXTRA_TARGETS),true)
  43. # 32bit bridge
  44. ifeq ($(WINDOWS)$(CPU_X86_64),truetrue)
  45. CARLA_TARGETS += win32
  46. else ifneq ($(MACOS)$(WINDOWS),true)
  47. CARLA_TARGETS += posix32
  48. endif
  49. # Windows bridges
  50. ifeq ($(CPU_I386_OR_X86_64)$(LINUX),truetrue)
  51. CARLA_TARGETS += wine32
  52. endif
  53. ifeq ($(CPU_X86_64)$(LINUX),truetrue)
  54. CARLA_TARGETS += wine64
  55. endif
  56. endif # CARLA_EXTRA_TARGETS
  57. endif # USE_SYSTEM_CARLA_BINS
  58. # ---------------------------------------------------------------------------------------------------------------------
  59. # DGL config
  60. DGL_EXTRA_ARGS = \
  61. DISTRHO_NAMESPACE=IldaeilDISTRHO \
  62. DGL_NAMESPACE=IldaeilDGL \
  63. USE_FILE_BROWSER=true
  64. ifeq ($(WASM),true)
  65. UI_TYPE = gles2
  66. else
  67. UI_TYPE = opengl
  68. endif
  69. # ---------------------------------------------------------------------------------------------------------------------
  70. # DPF bundled plugins
  71. ifneq ($(MACOS),true)
  72. ILDAEIL_FX_ARGS = VST2_FILENAME=Ildaeil.vst/Ildaeil-FX$(LIB_EXT) CLAP_FILENAME=Ildaeil.clap/Ildaeil-FX.clap
  73. ILDAEIL_MIDI_ARGS = VST2_FILENAME=Ildaeil.vst/Ildaeil-MIDI$(LIB_EXT) CLAP_FILENAME=Ildaeil.clap/Ildaeil-MIDI.clap
  74. ILDAEIL_SYNTH_ARGS = VST2_FILENAME=Ildaeil.vst/Ildaeil-Synth$(LIB_EXT) CLAP_FILENAME=Ildaeil.clap/Ildaeil-Synth.clap
  75. endif
  76. # ---------------------------------------------------------------------------------------------------------------------
  77. # Check for OpenGL + X11 dependencies
  78. ifneq ($(HAIKU_OR_MACOS_OR_WASM_OR_WINDOWS),true)
  79. ifneq ($(HAVE_OPENGL),true)
  80. $(error OpenGL dependency not installed/available)
  81. endif
  82. ifneq ($(HAVE_X11),true)
  83. $(error X11 dependency not installed/available)
  84. endif
  85. ifneq ($(HAVE_XCURSOR),true)
  86. $(warning Xcursor dependency not installed/available)
  87. endif
  88. ifneq ($(HAVE_XEXT),true)
  89. $(warning Xext dependency not installed/available)
  90. endif
  91. ifneq ($(HAVE_XRANDR),true)
  92. $(warning Xrandr dependency not installed/available)
  93. endif
  94. endif
  95. # ---------------------------------------------------------------------------------------------------------------------
  96. carla: dgl
  97. $(MAKE) $(CARLA_EXTRA_ARGS) -C carla $(CARLA_TARGETS)
  98. extra-bins:
  99. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) carlabins -C plugins/Standalone
  100. ifneq ($(WASM),true)
  101. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) carlabins -C plugins/FX
  102. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_MIDI_ARGS) carlabins -C plugins/MIDI
  103. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_SYNTH_ARGS) carlabins -C plugins/Synth
  104. endif
  105. extra-posix32:
  106. $(MAKE) $(CARLA_EXTRA_ARGS) -C carla posix32
  107. extra-win32:
  108. $(MAKE) $(CARLA_EXTRA_ARGS) -C carla win32 AR=i686-w64-mingw32-ar CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++
  109. extra-win64:
  110. $(MAKE) $(CARLA_EXTRA_ARGS) -C carla win64 AR=x86_64-w64-mingw32-ar CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++
  111. extra-wine32:
  112. $(MAKE) $(CARLA_EXTRA_ARGS) -C carla wine32
  113. extra-wine64:
  114. $(MAKE) $(CARLA_EXTRA_ARGS) -C carla wine64
  115. dgl:
  116. $(MAKE) $(DGL_EXTRA_ARGS) -C dpf/dgl $(UI_TYPE)
  117. plugins: carla dgl
  118. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) -C plugins/Standalone
  119. ifneq ($(WASM),true)
  120. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) -C plugins/FX
  121. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_MIDI_ARGS) -C plugins/MIDI
  122. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_SYNTH_ARGS) -C plugins/Synth
  123. endif
  124. ifneq ($(CROSS_COMPILING),true)
  125. gen: plugins dpf/utils/lv2_ttl_generator
  126. @$(CURDIR)/dpf/utils/generate-ttl.sh
  127. dpf/utils/lv2_ttl_generator:
  128. $(MAKE) -C dpf/utils/lv2-ttl-generator
  129. else
  130. gen:
  131. endif
  132. jack: carla dgl
  133. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) -C plugins/Standalone
  134. fx: carla dgl
  135. $(MAKE) $(CARLA_EXTRA_ARGS) $(DGL_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) -C plugins/FX
  136. # ---------------------------------------------------------------------------------------------------------------------
  137. install:
  138. install -d $(DESTDIR)$(PREFIX)/bin
  139. install -d $(DESTDIR)$(PREFIX)/lib/clap/Ildaeil.clap
  140. install -d $(DESTDIR)$(PREFIX)/lib/lv2/Ildaeil-FX.lv2
  141. install -d $(DESTDIR)$(PREFIX)/lib/lv2/Ildaeil-MIDI.lv2
  142. install -d $(DESTDIR)$(PREFIX)/lib/lv2/Ildaeil-Synth.lv2
  143. install -d $(DESTDIR)$(PREFIX)/lib/vst/Ildaeil.vst
  144. install -d $(DESTDIR)$(PREFIX)/lib/vst3/Ildaeil-FX.vst3/$(VST3_BINARY_DIR)
  145. install -d $(DESTDIR)$(PREFIX)/lib/vst3/Ildaeil-Synth.vst3/$(VST3_BINARY_DIR)
  146. install -m 755 bin/Ildaeil$(APP_EXT) $(DESTDIR)$(PREFIX)/bin/
  147. install -m 644 bin/Ildaeil.clap/* $(DESTDIR)$(PREFIX)/lib/clap/Ildaeil.clap/
  148. install -m 644 bin/Ildaeil-FX.lv2/* $(DESTDIR)$(PREFIX)/lib/lv2/Ildaeil-FX.lv2/
  149. install -m 644 bin/Ildaeil-MIDI.lv2/* $(DESTDIR)$(PREFIX)/lib/lv2/Ildaeil-MIDI.lv2/
  150. install -m 644 bin/Ildaeil-Synth.lv2/* $(DESTDIR)$(PREFIX)/lib/lv2/Ildaeil-Synth.lv2/
  151. install -m 644 bin/Ildaeil.vst/* $(DESTDIR)$(PREFIX)/lib/vst/Ildaeil.vst/
  152. install -m 644 bin/Ildaeil-FX.vst3/$(VST3_BINARY_DIR)/* $(DESTDIR)$(PREFIX)/lib/vst3/Ildaeil-FX.vst3/$(VST3_BINARY_DIR)/
  153. install -m 644 bin/Ildaeil-Synth.vst3/$(VST3_BINARY_DIR)/* $(DESTDIR)$(PREFIX)/lib/vst3/Ildaeil-Synth.vst3/$(VST3_BINARY_DIR)/
  154. # ---------------------------------------------------------------------------------------------------------------------
  155. clean:
  156. $(MAKE) $(CARLA_EXTRA_ARGS) distclean -C carla
  157. $(MAKE) $(CARLA_EXTRA_ARGS) clean -C plugins/Standalone
  158. $(MAKE) $(CARLA_EXTRA_ARGS) $(ILDAEIL_FX_ARGS) clean -C plugins/FX
  159. $(MAKE) $(CARLA_EXTRA_ARGS) $(ILDAEIL_MIDI_ARGS) clean -C plugins/MIDI
  160. $(MAKE) $(CARLA_EXTRA_ARGS) $(ILDAEIL_SYNTH_ARGS) clean -C plugins/Synth
  161. $(MAKE) clean -C dpf/dgl
  162. $(MAKE) clean -C dpf/utils/lv2-ttl-generator
  163. rm -rf bin build
  164. rm -f dpf-widgets/opengl/*.d
  165. rm -f dpf-widgets/opengl/*.o
  166. # ---------------------------------------------------------------------------------------------------------------------
  167. # tarball target, generating release source-code tarballs ready for packaging
  168. TAR_ARGS = \
  169. --exclude=".appveyor*" \
  170. --exclude=".ci*" \
  171. --exclude=".clang*" \
  172. --exclude=".drone*" \
  173. --exclude=".editor*" \
  174. --exclude=".git*" \
  175. --exclude="*.kdev*" \
  176. --exclude=".travis*" \
  177. --exclude=".vscode*" \
  178. --exclude="*.d" \
  179. --exclude="*.o" \
  180. --exclude=bin \
  181. --exclude=build \
  182. --exclude=carla/data \
  183. --exclude=carla/source/frontend \
  184. --exclude=carla/source/interposer \
  185. --exclude=carla/source/libjack \
  186. --exclude=carla/source/native-plugins/resources \
  187. --exclude=carla/source/rest \
  188. --exclude=carla/source/tests.old \
  189. --exclude=carla/source/theme \
  190. --exclude=carla/resources \
  191. --exclude=dpf/build \
  192. --exclude=dpf/cmake \
  193. --exclude=dpf/examples \
  194. --exclude=dpf/lac \
  195. --exclude=dpf/tests \
  196. --exclude=dpf-widgets/generic \
  197. --exclude=dpf-widgets/opengl/Blendish* \
  198. --exclude=dpf-widgets/opengl/DearImGuiColorTextEditor* \
  199. --exclude=dpf-widgets/opengl/Quantum* \
  200. --exclude=dpf-widgets/tests \
  201. --transform='s,^\.\.,-.-.,' \
  202. --transform='s,^\.,Ildaeil-$(VERSION),' \
  203. --transform='s,^-\.-\.,..,' \
  204. tarball:
  205. rm -f ../Ildaeil-src-$(VERSION).tar.xz
  206. tar -c --lzma $(TAR_ARGS) -f ../Ildaeil-src-$(VERSION).tar.xz .
  207. # ---------------------------------------------------------------------------------------------------------------------
  208. .PHONY: carla plugins