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.

261 lines
7.0KB

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