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.

244 lines
6.5KB

  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 config
  12. ifeq ($(BSD),true)
  13. SYSDEPS ?= true
  14. else
  15. SYSDEPS ?= false
  16. endif
  17. # --------------------------------------------------------------
  18. # Build setup
  19. BUILD_DIR = ../build/rack
  20. ifeq ($(MACOS),true)
  21. BASE_FLAGS += -DARCH_MAC
  22. else ifeq ($(WINDOWS),true)
  23. BASE_FLAGS += -DARCH_WIN
  24. else
  25. BASE_FLAGS += -DARCH_LIN
  26. endif
  27. ifeq ($(HAIKU),true)
  28. BASE_FLAGS += -I../include/haiku-compat
  29. endif
  30. BASE_FLAGS += -DPRIVATE=
  31. BASE_FLAGS += -I../dpf/dgl/src/nanovg
  32. BASE_FLAGS += -I../dpf/distrho
  33. BASE_FLAGS += -I../include
  34. BASE_FLAGS += -I../include/neon-compat
  35. BASE_FLAGS += -IRack/include
  36. ifeq ($(SYSDEPS),true)
  37. BASE_FLAGS += -DCARDINAL_SYSDEPS
  38. BASE_FLAGS += $(shell pkg-config --cflags jansson libarchive samplerate speexdsp)
  39. else
  40. BASE_FLAGS += -DZSTDLIB_VISIBILITY=
  41. BASE_FLAGS += -IRack/dep/include
  42. endif
  43. BASE_FLAGS += -IRack/dep/filesystem/include
  44. BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src
  45. BASE_FLAGS += -IRack/dep/glfw/include
  46. BASE_FLAGS += -IRack/dep/nanosvg/src
  47. BASE_FLAGS += -IRack/dep/osdialog
  48. BASE_FLAGS += -IRack/dep/oui-blendish
  49. BASE_FLAGS += -IRack/dep/pffft
  50. ifeq ($(DEBUG),true)
  51. BASE_FLAGS += -UDEBUG
  52. endif
  53. ifeq ($(HAVE_LIBLO),true)
  54. BASE_FLAGS += -DHAVE_LIBLO $(LIBLO_FLAGS)
  55. endif
  56. ifeq ($(HEADLESS),true)
  57. BASE_FLAGS += -DHEADLESS
  58. endif
  59. ifeq ($(BSD),true)
  60. BASE_FLAGS += -DCLOCK_MONOTONIC_RAW=CLOCK_MONOTONIC_PRECISE
  61. endif
  62. ifeq ($(HAIKU),true)
  63. BASE_FLAGS += -DCLOCK_MONOTONIC_RAW=CLOCK_MONOTONIC
  64. endif
  65. ifeq ($(WASM),true)
  66. BASE_FLAGS += -DNANOVG_GLES2=1
  67. BASE_FLAGS += -msse -msse2 -msse3 -msimd128
  68. # FIXME
  69. BASE_FLAGS += -DRTLD_DEEPBIND=0
  70. else ifneq ($(HAIKU),true)
  71. BASE_FLAGS += -pthread
  72. endif
  73. ifeq ($(WINDOWS),true)
  74. BASE_FLAGS += -D_USE_MATH_DEFINES
  75. BASE_FLAGS += -DWIN32_LEAN_AND_MEAN
  76. BASE_FLAGS += -I../include/mingw-compat
  77. BASE_FLAGS += -I../include/mingw-std-threads
  78. endif
  79. BUILD_C_FLAGS += -std=gnu11
  80. BUILD_C_FLAGS += -fno-finite-math-only -fno-strict-aliasing
  81. BUILD_CXX_FLAGS += -fno-finite-math-only -fno-strict-aliasing -faligned-new
  82. # use our custom function to invert some colors
  83. BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal
  84. # Rack code is not tested for this flag, unset it
  85. BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
  86. # --------------------------------------------------------------
  87. # Rack files to build
  88. RACK_FILES += AsyncDialog.cpp
  89. RACK_FILES += CardinalModuleWidget.cpp
  90. RACK_FILES += custom/asset.cpp
  91. RACK_FILES += custom/dep.cpp
  92. RACK_FILES += custom/library.cpp
  93. RACK_FILES += custom/network.cpp
  94. RACK_FILES += custom/osdialog.cpp
  95. RACK_FILES += override/blendish.c
  96. RACK_FILES += override/context.cpp
  97. RACK_FILES += override/minblep.cpp
  98. RACK_FILES += override/plugin.cpp
  99. RACK_FILES += override/Engine.cpp
  100. RACK_FILES += override/MenuBar.cpp
  101. RACK_FILES += override/Model.cpp
  102. RACK_FILES += override/Scene.cpp
  103. RACK_FILES += Rack/dep/pffft/pffft.c
  104. RACK_FILES += Rack/dep/pffft/fftpack.c
  105. RACK_FILES += Rack/dep/osdialog/osdialog.c
  106. IGNORED_FILES = Rack/src/asset.cpp
  107. IGNORED_FILES += Rack/src/audio.cpp
  108. IGNORED_FILES += Rack/src/common.cpp
  109. IGNORED_FILES += Rack/src/context.cpp
  110. IGNORED_FILES += Rack/src/dep.cpp
  111. IGNORED_FILES += Rack/src/discord.cpp
  112. IGNORED_FILES += Rack/src/gamepad.cpp
  113. IGNORED_FILES += Rack/src/keyboard.cpp
  114. IGNORED_FILES += Rack/src/library.cpp
  115. IGNORED_FILES += Rack/src/midi.cpp
  116. IGNORED_FILES += Rack/src/network.cpp
  117. IGNORED_FILES += Rack/src/plugin.cpp
  118. IGNORED_FILES += Rack/src/rtaudio.cpp
  119. IGNORED_FILES += Rack/src/rtmidi.cpp
  120. IGNORED_FILES += Rack/src/app/AudioDisplay.cpp
  121. IGNORED_FILES += Rack/src/app/MenuBar.cpp
  122. IGNORED_FILES += Rack/src/app/MidiDisplay.cpp
  123. IGNORED_FILES += Rack/src/app/Scene.cpp
  124. IGNORED_FILES += Rack/src/app/TipWindow.cpp
  125. IGNORED_FILES += Rack/src/dsp/minblep.cpp
  126. IGNORED_FILES += Rack/src/engine/Engine.cpp
  127. IGNORED_FILES += Rack/src/plugin/Model.cpp
  128. IGNORED_FILES += Rack/src/window/Window.cpp
  129. IGNORED_FILES += $(wildcard Rack/src/core/*.cpp)
  130. RACK_FILES += $(wildcard Rack/src/*.c)
  131. RACK_FILES += $(wildcard Rack/src/*/*.c)
  132. RACK_FILES += $(filter-out $(IGNORED_FILES),$(wildcard Rack/src/*.cpp))
  133. RACK_FILES += $(filter-out $(IGNORED_FILES), $(wildcard Rack/src/*/*.cpp))
  134. # --------------------------------------------------------------
  135. # lots of warnings from VCV side
  136. BASE_FLAGS += -Wno-unused-but-set-variable
  137. BASE_FLAGS += -Wno-unused-parameter
  138. BASE_FLAGS += -Wno-unused-result
  139. BASE_FLAGS += -Wno-unused-variable
  140. ifeq ($(MACOS),true)
  141. BASE_FLAGS += -Wno-unknown-warning-option
  142. endif
  143. # --------------------------------------------------------------
  144. # Build targets
  145. TARGET = rack.a
  146. ifneq ($(MACOS),true)
  147. CARDINAL_FX_ARGS = VST2_FILENAME=Cardinal.vst/CardinalFX$(LIB_EXT)
  148. CARDINAL_SYNTH_ARGS = VST2_FILENAME=Cardinal.vst/CardinalSynth$(LIB_EXT)
  149. endif
  150. all: $(TARGET)
  151. ifeq ($(MOD_BUILD),true)
  152. $(MAKE) -C CardinalFX lv2
  153. else
  154. $(MAKE) -C Cardinal
  155. $(MAKE) -C CardinalFX $(CARDINAL_FX_ARGS)
  156. $(MAKE) -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  157. endif
  158. jack: $(TARGET)
  159. $(MAKE) jack -C Cardinal
  160. lv2: $(TARGET)
  161. $(MAKE) lv2 -C Cardinal
  162. $(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS)
  163. $(MAKE) lv2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  164. vst2: $(TARGET)
  165. $(MAKE) vst2 -C CardinalFX $(CARDINAL_FX_ARGS)
  166. $(MAKE) vst2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  167. vst3: $(TARGET)
  168. $(MAKE) vst3 -C Cardinal
  169. $(MAKE) vst3 -C CardinalFX $(CARDINAL_FX_ARGS)
  170. $(MAKE) vst3 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  171. clean:
  172. rm -f $(TARGET)
  173. rm -rf $(BUILD_DIR)
  174. $(MAKE) clean -C Cardinal
  175. $(MAKE) clean -C CardinalFX $(CARDINAL_FX_ARGS)
  176. $(MAKE) clean -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
  177. # --------------------------------------------------------------
  178. # Build commands
  179. RACK_OBJS = $(RACK_FILES:%=$(BUILD_DIR)/%.o)
  180. $(TARGET): $(RACK_OBJS)
  181. @echo "Creating $@"
  182. $(SILENT)rm -f $@
  183. $(SILENT)$(AR) crs $@ $^
  184. $(BUILD_DIR)/%.c.o: %.c
  185. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  186. @echo "Compiling $<"
  187. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  188. $(BUILD_DIR)/override/MIDI_CV.cpp.o: override/MIDI_CV.cpp
  189. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  190. @echo "Compiling $<"
  191. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -UPRIVATE -c -o $@
  192. $(BUILD_DIR)/%.cpp.o: %.cpp
  193. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  194. @echo "Compiling $<"
  195. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  196. # --------------------------------------------------------------
  197. -include $(RACK_OBJS:%.o=%.d)
  198. # --------------------------------------------------------------