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.

229 lines
6.5KB

  1. #!/usr/bin/make -f
  2. # Makefile for DISTRHO Plugins #
  3. # ---------------------------- #
  4. # Created by falkTX
  5. #
  6. include dpf/Makefile.base.mk
  7. all: cardinal carla deps dgl plugins gen resources
  8. # --------------------------------------------------------------
  9. # Build config
  10. PREFIX ?= /usr/local
  11. DESTDIR ?=
  12. SYSDEPS ?= false
  13. # --------------------------------------------------------------
  14. # Carla config
  15. CARLA_EXTRA_ARGS = \
  16. HAVE_FFMPEG=false \
  17. HAVE_FLUIDSYNTH=false \
  18. HAVE_PROJECTM=false \
  19. HAVE_ZYN_DEPS=false \
  20. HAVE_ZYN_UI_DEPS=false
  21. ifneq ($(DEBUG),true)
  22. CARLA_EXTRA_ARGS += EXTERNAL_PLUGINS=true
  23. endif
  24. # ifneq ($(MACOS),true)
  25. CARLA_EXTRA_ARGS += USING_JUCE=false
  26. CARLA_EXTRA_ARGS += USING_JUCE_GUI_EXTRA=false
  27. # endif
  28. # --------------------------------------------------------------
  29. # Check for system-wide dependencies
  30. ifeq ($(SYSDEPS),true)
  31. ifneq ($(shell pkg-config --exists jansson && echo true),true)
  32. $(error jansson dependency not installed/available)
  33. endif
  34. ifneq ($(shell pkg-config --exists libarchive && echo true),true)
  35. $(error libarchive dependency not installed/available)
  36. endif
  37. ifneq ($(shell pkg-config --exists samplerate && echo true),true)
  38. $(error samplerate dependency not installed/available)
  39. endif
  40. ifneq ($(shell pkg-config --exists speexdsp && echo true),true)
  41. $(error speexdsp dependency not installed/available)
  42. endif
  43. endif
  44. ifeq ($(HEADLESS),true)
  45. ifneq ($(shell pkg-config --exists liblo && echo true),true)
  46. $(error liblo dependency not installed/available)
  47. endif
  48. endif
  49. # --------------------------------------------------------------
  50. # Check for X11+OpenGL dependencies (unless headless build)
  51. ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true)
  52. ifneq ($(WASM),true)
  53. ifneq ($(HEADLESS),true)
  54. ifneq ($(HAVE_OPENGL),true)
  55. $(error OpenGL dependency not installed/available)
  56. endif
  57. ifneq ($(HAVE_X11),true)
  58. $(error X11 dependency not installed/available)
  59. endif
  60. ifneq ($(HAVE_XEXT),true)
  61. $(warning Xext dependency not installed/available)
  62. endif
  63. ifneq ($(HAVE_XRANDR),true)
  64. $(warning Xrandr dependency not installed/available)
  65. endif
  66. else
  67. CARLA_EXTRA_ARGS += HAVE_OPENGL=false
  68. CARLA_EXTRA_ARGS += HAVE_X11=false
  69. CARLA_EXTRA_ARGS += HAVE_XEXT=false
  70. CARLA_EXTRA_ARGS += HAVE_XRANDR=false
  71. endif
  72. endif
  73. endif
  74. # --------------------------------------------------------------
  75. # MOD builds
  76. MOD_WORKDIR ?= $(HOME)/mod-workdir
  77. MOD_ENVIRONMENT = AR=${1}/host/usr/bin/${2}-gcc-ar CC=${1}/host/usr/bin/${2}-gcc CPP=${1}/host/usr/bin/${2}-cpp CXX=${1}/host/usr/bin/${2}-g++ LD=${1}/host/usr/bin/${2}-ld PKG_CONFIG=${1}/host/usr/bin/pkg-config STRIP=${1}/host/usr/bin/${2}-strip CFLAGS="-I${1}/staging/usr/include" CPPFLAGS= CXXFLAGS="-I${1}/staging/usr/include" LDFLAGS="-L${1}/staging/usr/lib" \ EXE_WRAPPER="qemu-${3}-static -L ${1}/target" HEADLESS=true MOD_BUILD=true NOOPT=true STATIC_BUILD=true
  78. modduo:
  79. $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/modduo-static,arm-mod-linux-gnueabihf.static,arm)
  80. modduox:
  81. $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/modduox-static,aarch64-mod-linux-gnueabi.static,aarch64)
  82. moddwarf:
  83. $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/moddwarf,aarch64-mod-linux-gnu,aarch64)
  84. publish:
  85. tar -C bin -cz $(subst bin/,,$(wildcard bin/*.lv2)) | base64 | curl -F 'package=@-' http://192.168.51.1/sdk/install && echo
  86. ifneq (,$(findstring modduo-,$(MAKECMDGOALS)))
  87. $(MAKECMDGOALS):
  88. $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/modduo-static,arm-mod-linux-gnueabihf.static,arm) $(subst modduo-,,$(MAKECMDGOALS))
  89. endif
  90. ifneq (,$(findstring modduox-,$(MAKECMDGOALS)))
  91. $(MAKECMDGOALS):
  92. $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/modduox-static,aarch64-mod-linux-gnueabi.static,aarch64) $(subst modduox-,,$(MAKECMDGOALS))
  93. endif
  94. ifneq (,$(findstring moddwarf-,$(MAKECMDGOALS)))
  95. $(MAKECMDGOALS):
  96. $(MAKE) $(call MOD_ENVIRONMENT,$(MOD_WORKDIR)/moddwarf,aarch64-mod-linux-gnu,aarch64) $(subst moddwarf-,,$(MAKECMDGOALS))
  97. endif
  98. # --------------------------------------------------------------
  99. # Individual targets
  100. cardinal: carla deps dgl plugins
  101. $(MAKE) all -C src $(CARLA_EXTRA_ARGS)
  102. carla:
  103. ifneq ($(STATIC_BUILD),true)
  104. $(MAKE) static-plugin -C carla $(CARLA_EXTRA_ARGS) \
  105. CAN_GENERATE_LV2_TTL=false \
  106. STATIC_PLUGIN_TARGET=true
  107. endif
  108. deps:
  109. ifeq ($(SYSDEPS),true)
  110. $(MAKE) quickjs -C deps
  111. else
  112. $(MAKE) all -C deps
  113. endif
  114. dgl:
  115. ifneq ($(HEADLESS),true)
  116. $(MAKE) -C dpf/dgl opengl NVG_DISABLE_SKIPPING_WHITESPACE=true NVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST USE_NANOVG_FBO=true
  117. endif
  118. plugins: deps
  119. $(MAKE) all -C plugins
  120. resources: cardinal
  121. $(MAKE) resources -C plugins
  122. ifneq ($(CROSS_COMPILING),true)
  123. gen: cardinal resources dpf/utils/lv2_ttl_generator
  124. @$(CURDIR)/dpf/utils/generate-ttl.sh
  125. dpf/utils/lv2_ttl_generator:
  126. $(MAKE) -C dpf/utils/lv2-ttl-generator
  127. else
  128. gen:
  129. endif
  130. # --------------------------------------------------------------
  131. # Packaging standalone for CI
  132. unzipfx: deps/unzipfx/unzipfx2cat$(APP_EXT) Cardinal.zip
  133. cat deps/unzipfx/unzipfx2cat$(APP_EXT) Cardinal.zip > Cardinal
  134. chmod +x Cardinal
  135. Cardinal.zip: bin/Cardinal bin/CardinalFX.lv2/resources
  136. mkdir -p build/unzipfx
  137. ln -sf ../../bin/Cardinal build/unzipfx/Cardinal
  138. ln -s ../../bin/CardinalFX.lv2/resources build/unzipfx/resources
  139. cd build/unzipfx && \
  140. zip -r -9 ../../Cardinal.zip Cardinal resources
  141. deps/unzipfx/unzipfx2cat:
  142. make -C deps/unzipfx -f Makefile.linux
  143. deps/unzipfx/unzipfx2cat.exe:
  144. make -C deps/unzipfx -f Makefile.win32
  145. # --------------------------------------------------------------
  146. # Clean step
  147. clean:
  148. $(MAKE) distclean -C carla
  149. $(MAKE) clean -C deps
  150. $(MAKE) clean -C dpf/dgl
  151. $(MAKE) clean -C dpf/utils/lv2-ttl-generator
  152. $(MAKE) clean -C plugins
  153. $(MAKE) clean -C src
  154. rm -rf bin build
  155. # --------------------------------------------------------------
  156. # Install step
  157. install:
  158. install -d $(DESTDIR)$(PREFIX)/bin
  159. install -d $(DESTDIR)$(PREFIX)/lib/lv2
  160. install -d $(DESTDIR)$(PREFIX)/lib/vst
  161. install -d $(DESTDIR)$(PREFIX)/lib/vst3
  162. install -d $(DESTDIR)$(PREFIX)/share/Cardinal
  163. cp -rL bin/Cardinal.lv2 $(DESTDIR)$(PREFIX)/lib/lv2/
  164. cp -rL bin/Cardinal.vst3 $(DESTDIR)$(PREFIX)/lib/vst3/
  165. cp -rL bin/CardinalFX.lv2 $(DESTDIR)$(PREFIX)/lib/lv2/
  166. cp -rL bin/CardinalFX.vst $(DESTDIR)$(PREFIX)/lib/vst/
  167. cp -rL bin/CardinalFX.vst3 $(DESTDIR)$(PREFIX)/lib/vst3/
  168. cp -rL bin/CardinalSynth.lv2 $(DESTDIR)$(PREFIX)/lib/lv2/
  169. cp -rL bin/CardinalSynth.vst $(DESTDIR)$(PREFIX)/lib/vst/
  170. cp -rL bin/CardinalSynth.vst3 $(DESTDIR)$(PREFIX)/lib/vst3/
  171. install -m 755 bin/Cardinal$(APP_EXT) $(DESTDIR)$(PREFIX)/bin/
  172. cp -rL bin/Cardinal.lv2/resources/* $(DESTDIR)$(PREFIX)/share/Cardinal/
  173. # --------------------------------------------------------------
  174. .PHONY: carla deps plugins