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.

243 lines
6.6KB

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