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.

271 lines
7.1KB

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