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.

218 lines
6.1KB

  1. #!/usr/bin/make -f
  2. # Makefile for DISTRHO Plugins #
  3. # ---------------------------- #
  4. # Created by falkTX
  5. #
  6. BUILDING_RACK = true
  7. ROOT = ..
  8. include $(ROOT)/Makefile.base.mk
  9. # --------------------------------------------------------------
  10. # Build setup
  11. ifeq ($(HEADLESS),true)
  12. BUILD_DIR = ../build-headless/rack
  13. else
  14. BUILD_DIR = ../build/rack
  15. endif
  16. BASE_FLAGS += -DPRIVATE=
  17. BASE_FLAGS += -I$(abspath $(ROOT)/src/Rack/dep/osdialog)
  18. ifeq ($(HAVE_LIBLO),true)
  19. BASE_FLAGS += -DHAVE_LIBLO $(LIBLO_FLAGS)
  20. endif
  21. # use our custom function to invert some colors
  22. BUILD_CXX_FLAGS += -DnsvgDelete=nsvgDeleteCardinal
  23. BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal
  24. # --------------------------------------------------------------
  25. # Rack files to build
  26. RACK_FILES += AsyncDialog.cpp
  27. RACK_FILES += CardinalModuleWidget.cpp
  28. RACK_FILES += custom/Browser.cpp
  29. RACK_FILES += custom/asset.cpp
  30. RACK_FILES += custom/dep.cpp
  31. RACK_FILES += custom/library.cpp
  32. RACK_FILES += custom/network.cpp
  33. RACK_FILES += custom/osdialog.cpp
  34. RACK_FILES += override/blendish.c
  35. RACK_FILES += override/context.cpp
  36. RACK_FILES += override/minblep.cpp
  37. RACK_FILES += override/plugin.cpp
  38. RACK_FILES += override/Engine.cpp
  39. RACK_FILES += override/Model.cpp
  40. RACK_FILES += override/ModuleWidget.cpp
  41. RACK_FILES += override/OpenGlWidget.cpp
  42. RACK_FILES += override/Scene.cpp
  43. RACK_FILES += Rack/dep/pffft/pffft.c
  44. RACK_FILES += Rack/dep/pffft/fftpack.c
  45. RACK_FILES += Rack/dep/osdialog/osdialog.c
  46. IGNORED_FILES = Rack/src/asset.cpp
  47. IGNORED_FILES += Rack/src/audio.cpp
  48. IGNORED_FILES += Rack/src/common.cpp
  49. IGNORED_FILES += Rack/src/context.cpp
  50. IGNORED_FILES += Rack/src/dep.cpp
  51. IGNORED_FILES += Rack/src/discord.cpp
  52. IGNORED_FILES += Rack/src/gamepad.cpp
  53. IGNORED_FILES += Rack/src/keyboard.cpp
  54. IGNORED_FILES += Rack/src/library.cpp
  55. IGNORED_FILES += Rack/src/midi.cpp
  56. IGNORED_FILES += Rack/src/midiloopback.cpp
  57. IGNORED_FILES += Rack/src/network.cpp
  58. IGNORED_FILES += Rack/src/plugin.cpp
  59. IGNORED_FILES += Rack/src/rtaudio.cpp
  60. IGNORED_FILES += Rack/src/rtmidi.cpp
  61. IGNORED_FILES += Rack/src/app/AudioDisplay.cpp
  62. IGNORED_FILES += Rack/src/app/Browser.cpp
  63. IGNORED_FILES += Rack/src/app/MenuBar.cpp
  64. IGNORED_FILES += Rack/src/app/MidiDisplay.cpp
  65. IGNORED_FILES += Rack/src/app/ModuleWidget.cpp
  66. IGNORED_FILES += Rack/src/app/Scene.cpp
  67. IGNORED_FILES += Rack/src/app/TipWindow.cpp
  68. IGNORED_FILES += Rack/src/dsp/minblep.cpp
  69. IGNORED_FILES += Rack/src/engine/Engine.cpp
  70. IGNORED_FILES += Rack/src/plugin/Model.cpp
  71. IGNORED_FILES += Rack/src/widget/OpenGlWidget.cpp
  72. IGNORED_FILES += Rack/src/window/Window.cpp
  73. IGNORED_FILES += $(wildcard Rack/src/core/*.cpp)
  74. RACK_FILES += Rack/dep/tinyexpr/tinyexpr.c
  75. RACK_FILES += $(wildcard Rack/src/*.c)
  76. RACK_FILES += $(wildcard Rack/src/*/*.c)
  77. RACK_FILES += $(filter-out $(IGNORED_FILES),$(wildcard Rack/src/*.cpp))
  78. RACK_FILES += $(filter-out $(IGNORED_FILES), $(wildcard Rack/src/*/*.cpp))
  79. ifeq ($(WASM),true)
  80. RACK_FILES += emscripten/WasmUtils.cpp
  81. endif
  82. # --------------------------------------------------------------
  83. # lots of warnings from VCV side
  84. BASE_FLAGS += -Wno-unused-but-set-variable
  85. BASE_FLAGS += -Wno-unused-parameter
  86. BASE_FLAGS += -Wno-unused-result
  87. BASE_FLAGS += -Wno-unused-variable
  88. ifeq ($(MACOS),true)
  89. BASE_FLAGS += -Wno-unknown-warning-option
  90. endif
  91. # --------------------------------------------------------------
  92. # Build targets
  93. ifeq ($(HEADLESS),true)
  94. TARGET_SUFFIX = -headless
  95. endif
  96. TARGETS = rack$(TARGET_SUFFIX).a rack-headless.a
  97. ifneq ($(MACOS),true)
  98. CARDINAL_FX_ARGS = VST2_FILENAME=Cardinal.vst/CardinalFX$(LIB_EXT) CLAP_FILENAME=Cardinal.clap/CardinalFX.clap
  99. CARDINAL_SYNTH_ARGS = VST2_FILENAME=Cardinal.vst/CardinalSynth$(LIB_EXT) CLAP_FILENAME=Cardinal.clap/CardinalSynth.clap
  100. endif
  101. all: $(TARGETS)
  102. ifeq ($(MOD_BUILD),true)
  103. $(MAKE) -C Cardinal lv2
  104. $(MAKE) -C CardinalFX lv2
  105. $(MAKE) -C CardinalMiniSep lv2_sep
  106. else ifeq ($(WASM),true)
  107. $(MAKE) -C CardinalNative
  108. $(MAKE) -C CardinalMini
  109. else
  110. $(MAKE) -C Cardinal
  111. $(MAKE) -C CardinalMini
  112. $(MAKE) -C CardinalMiniSep
  113. $(MAKE) -C CardinalNative
  114. $(MAKE) -C CardinalFX $(CARDINAL_FX_ARGS)
  115. $(MAKE) -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  116. endif
  117. jack: $(TARGETS)
  118. $(MAKE) jack -C Cardinal
  119. native: $(TARGETS)
  120. $(MAKE) jack -C CardinalNative
  121. mini: $(TARGETS)
  122. $(MAKE) jack -C CardinalMini
  123. $(MAKE) lv2_sep -C CardinalMiniSep
  124. au: $(TARGETS)
  125. $(MAKE) au -C CardinalFX $(CARDINAL_SYNTH_ARGS)
  126. $(MAKE) au -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  127. mapi: $(TARGETS)
  128. $(MAKE) mapi -C CardinalFX $(CARDINAL_FX_ARGS)
  129. lv2: $(TARGETS)
  130. $(MAKE) lv2 -C Cardinal
  131. $(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS)
  132. $(MAKE) lv2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  133. $(MAKE) lv2_sep -C CardinalMiniSep
  134. vst2: $(TARGETS)
  135. $(MAKE) vst2 -C CardinalFX $(CARDINAL_FX_ARGS)
  136. $(MAKE) vst2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  137. vst2fx: $(TARGETS)
  138. $(MAKE) vst2 -C CardinalFX $(CARDINAL_FX_ARGS)
  139. vst3: $(TARGETS)
  140. $(MAKE) vst3 -C Cardinal
  141. $(MAKE) vst3 -C CardinalFX $(CARDINAL_FX_ARGS)
  142. $(MAKE) vst3 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  143. clap: $(TARGETS)
  144. $(MAKE) clap -C CardinalFX $(CARDINAL_FX_ARGS)
  145. $(MAKE) clap -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  146. clean:
  147. rm -f *.a
  148. rm -rf $(BUILD_DIR)
  149. $(MAKE) clean -C Cardinal
  150. $(MAKE) clean -C CardinalFX $(CARDINAL_FX_ARGS)
  151. $(MAKE) clean -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  152. # --------------------------------------------------------------
  153. # Build commands
  154. RACK_OBJS = $(RACK_FILES:%=$(BUILD_DIR)/%.o)
  155. rack$(TARGET_SUFFIX).a: $(RACK_OBJS)
  156. @echo "Creating $@"
  157. $(SILENT)rm -f $@
  158. $(SILENT)$(AR) crs $@ $^
  159. ifneq ($(HEADLESS),true)
  160. rack-headless.a:
  161. $(MAKE) HEADLESS=true $@
  162. endif
  163. $(BUILD_DIR)/%.c.o: %.c
  164. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  165. @echo "Compiling $<"
  166. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  167. $(BUILD_DIR)/%.cpp.o: %.cpp
  168. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  169. @echo "Compiling $<"
  170. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  171. $(BUILD_DIR)/emscripten/WasmUtils.cpp.o: BUILD_CXX_FLAGS += -fno-exceptions
  172. $(BUILD_DIR)/Rack/dep/tinyexpr/tinyexpr.c.o: BUILD_C_FLAGS += -DTE_POW_FROM_RIGHT -DTE_NAT_LOG
  173. # --------------------------------------------------------------
  174. -include $(RACK_OBJS:%.o=%.d)
  175. # --------------------------------------------------------------