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.

212 lines
5.9KB

  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/asset.cpp
  29. RACK_FILES += custom/dep.cpp
  30. RACK_FILES += custom/library.cpp
  31. RACK_FILES += custom/network.cpp
  32. RACK_FILES += custom/osdialog.cpp
  33. RACK_FILES += override/blendish.c
  34. RACK_FILES += override/context.cpp
  35. RACK_FILES += override/minblep.cpp
  36. RACK_FILES += override/plugin.cpp
  37. RACK_FILES += override/Engine.cpp
  38. RACK_FILES += override/Model.cpp
  39. RACK_FILES += override/ModuleWidget.cpp
  40. RACK_FILES += override/OpenGlWidget.cpp
  41. RACK_FILES += override/Scene.cpp
  42. RACK_FILES += Rack/dep/pffft/pffft.c
  43. RACK_FILES += Rack/dep/pffft/fftpack.c
  44. RACK_FILES += Rack/dep/osdialog/osdialog.c
  45. IGNORED_FILES = Rack/src/asset.cpp
  46. IGNORED_FILES += Rack/src/audio.cpp
  47. IGNORED_FILES += Rack/src/common.cpp
  48. IGNORED_FILES += Rack/src/context.cpp
  49. IGNORED_FILES += Rack/src/dep.cpp
  50. IGNORED_FILES += Rack/src/discord.cpp
  51. IGNORED_FILES += Rack/src/gamepad.cpp
  52. IGNORED_FILES += Rack/src/keyboard.cpp
  53. IGNORED_FILES += Rack/src/library.cpp
  54. IGNORED_FILES += Rack/src/midi.cpp
  55. IGNORED_FILES += Rack/src/midiloopback.cpp
  56. IGNORED_FILES += Rack/src/network.cpp
  57. IGNORED_FILES += Rack/src/plugin.cpp
  58. IGNORED_FILES += Rack/src/rtaudio.cpp
  59. IGNORED_FILES += Rack/src/rtmidi.cpp
  60. IGNORED_FILES += Rack/src/app/AudioDisplay.cpp
  61. IGNORED_FILES += Rack/src/app/MenuBar.cpp
  62. IGNORED_FILES += Rack/src/app/MidiDisplay.cpp
  63. IGNORED_FILES += Rack/src/app/ModuleWidget.cpp
  64. IGNORED_FILES += Rack/src/app/Scene.cpp
  65. IGNORED_FILES += Rack/src/app/TipWindow.cpp
  66. IGNORED_FILES += Rack/src/dsp/minblep.cpp
  67. IGNORED_FILES += Rack/src/engine/Engine.cpp
  68. IGNORED_FILES += Rack/src/plugin/Model.cpp
  69. IGNORED_FILES += Rack/src/widget/OpenGlWidget.cpp
  70. IGNORED_FILES += Rack/src/window/Window.cpp
  71. IGNORED_FILES += $(wildcard Rack/src/core/*.cpp)
  72. RACK_FILES += Rack/dep/tinyexpr/tinyexpr.c
  73. RACK_FILES += $(wildcard Rack/src/*.c)
  74. RACK_FILES += $(wildcard Rack/src/*/*.c)
  75. RACK_FILES += $(filter-out $(IGNORED_FILES),$(wildcard Rack/src/*.cpp))
  76. RACK_FILES += $(filter-out $(IGNORED_FILES), $(wildcard Rack/src/*/*.cpp))
  77. ifeq ($(WASM),true)
  78. RACK_FILES += emscripten/WasmUtils.cpp
  79. endif
  80. # --------------------------------------------------------------
  81. # lots of warnings from VCV side
  82. BASE_FLAGS += -Wno-unused-but-set-variable
  83. BASE_FLAGS += -Wno-unused-parameter
  84. BASE_FLAGS += -Wno-unused-result
  85. BASE_FLAGS += -Wno-unused-variable
  86. ifeq ($(MACOS),true)
  87. BASE_FLAGS += -Wno-unknown-warning-option
  88. endif
  89. # --------------------------------------------------------------
  90. # Build targets
  91. ifeq ($(HEADLESS),true)
  92. TARGET_SUFFIX = -headless
  93. endif
  94. TARGETS = rack$(TARGET_SUFFIX).a rack-headless.a
  95. ifneq ($(MACOS),true)
  96. CARDINAL_FX_ARGS = VST2_FILENAME=Cardinal.vst/CardinalFX$(LIB_EXT) CLAP_FILENAME=Cardinal.clap/CardinalFX.clap
  97. CARDINAL_SYNTH_ARGS = VST2_FILENAME=Cardinal.vst/CardinalSynth$(LIB_EXT) CLAP_FILENAME=Cardinal.clap/CardinalSynth.clap
  98. endif
  99. all: $(TARGETS)
  100. ifeq ($(MOD_BUILD),true)
  101. $(MAKE) -C Cardinal lv2
  102. $(MAKE) -C CardinalFX lv2
  103. $(MAKE) -C CardinalMiniSep lv2_sep
  104. else ifeq ($(WASM),true)
  105. $(MAKE) -C CardinalNative
  106. $(MAKE) -C CardinalMini
  107. else
  108. $(MAKE) -C Cardinal
  109. $(MAKE) -C CardinalMini
  110. $(MAKE) -C CardinalMiniSep
  111. $(MAKE) -C CardinalNative
  112. $(MAKE) -C CardinalFX $(CARDINAL_FX_ARGS)
  113. $(MAKE) -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  114. endif
  115. jack: $(TARGETS)
  116. $(MAKE) jack -C Cardinal
  117. native: $(TARGETS)
  118. $(MAKE) jack -C CardinalNative
  119. mini: $(TARGETS)
  120. $(MAKE) jack -C CardinalMini
  121. au: $(TARGETS)
  122. $(MAKE) au -C CardinalFX $(CARDINAL_SYNTH_ARGS)
  123. $(MAKE) au -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  124. lv2: $(TARGETS)
  125. $(MAKE) lv2 -C Cardinal
  126. $(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS)
  127. $(MAKE) lv2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  128. $(MAKE) lv2_sep -C CardinalMiniSep
  129. vst2: $(TARGETS)
  130. $(MAKE) vst2 -C CardinalFX $(CARDINAL_FX_ARGS)
  131. $(MAKE) vst2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  132. vst2fx: $(TARGETS)
  133. $(MAKE) vst2 -C CardinalFX $(CARDINAL_FX_ARGS)
  134. vst3: $(TARGETS)
  135. $(MAKE) vst3 -C Cardinal
  136. $(MAKE) vst3 -C CardinalFX $(CARDINAL_FX_ARGS)
  137. $(MAKE) vst3 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  138. clap: $(TARGETS)
  139. $(MAKE) clap -C CardinalFX $(CARDINAL_FX_ARGS)
  140. $(MAKE) clap -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  141. clean:
  142. rm -f *.a
  143. rm -rf $(BUILD_DIR)
  144. $(MAKE) clean -C Cardinal
  145. $(MAKE) clean -C CardinalFX $(CARDINAL_FX_ARGS)
  146. $(MAKE) clean -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  147. # --------------------------------------------------------------
  148. # Build commands
  149. RACK_OBJS = $(RACK_FILES:%=$(BUILD_DIR)/%.o)
  150. rack$(TARGET_SUFFIX).a: $(RACK_OBJS)
  151. @echo "Creating $@"
  152. $(SILENT)rm -f $@
  153. $(SILENT)$(AR) crs $@ $^
  154. ifneq ($(HEADLESS),true)
  155. rack-headless.a:
  156. $(MAKE) HEADLESS=true $@
  157. endif
  158. $(BUILD_DIR)/%.c.o: %.c
  159. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  160. @echo "Compiling $<"
  161. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  162. $(BUILD_DIR)/%.cpp.o: %.cpp
  163. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  164. @echo "Compiling $<"
  165. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  166. $(BUILD_DIR)/emscripten/WasmUtils.cpp.o: BUILD_CXX_FLAGS += -fno-exceptions
  167. $(BUILD_DIR)/Rack/dep/tinyexpr/tinyexpr.c.o: BUILD_C_FLAGS += -DTE_POW_FROM_RIGHT -DTE_NAT_LOG
  168. # --------------------------------------------------------------
  169. -include $(RACK_OBJS:%.o=%.d)
  170. # --------------------------------------------------------------