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.

255 lines
6.6KB

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