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.

192 lines
5.0KB

  1. #!/usr/bin/make -f
  2. # Makefile for DISTRHO Plugins #
  3. # ---------------------------- #
  4. # Created by falkTX
  5. #
  6. # --------------------------------------------------------------
  7. # Build config
  8. PREFIX ?= /usr/local
  9. DESTDIR ?=
  10. SYSDEPS ?= false
  11. # --------------------------------------------------------------
  12. # Import base definitions
  13. USE_NANOVG_FBO = true
  14. include ../dpf/Makefile.base.mk
  15. # --------------------------------------------------------------
  16. # Build setup
  17. BUILD_DIR = ../build/rack
  18. ifeq ($(MACOS),true)
  19. BASE_FLAGS += -DARCH_MAC
  20. else ifeq ($(WINDOWS),true)
  21. BASE_FLAGS += -DARCH_WIN
  22. else
  23. BASE_FLAGS += -DARCH_LIN
  24. endif
  25. BASE_FLAGS += -DPRIVATE=
  26. BASE_FLAGS += -I../dpf/dgl/src/nanovg
  27. BASE_FLAGS += -I../dpf/distrho
  28. BASE_FLAGS += -I../include
  29. BASE_FLAGS += -I../include/neon-compat
  30. BASE_FLAGS += -IRack/include
  31. ifeq ($(SYSDEPS),true)
  32. BASE_FLAGS += -DCARDINAL_SYSDEPS
  33. BASE_FLAGS += $(shell pkg-config --cflags jansson libarchive samplerate speexdsp)
  34. else
  35. BASE_FLAGS += -DZSTDLIB_VISIBILITY=
  36. BASE_FLAGS += -IRack/dep/include
  37. endif
  38. BASE_FLAGS += -IRack/dep/filesystem/include
  39. BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src
  40. BASE_FLAGS += -IRack/dep/glfw/include
  41. BASE_FLAGS += -IRack/dep/nanosvg/src
  42. BASE_FLAGS += -IRack/dep/osdialog
  43. BASE_FLAGS += -IRack/dep/oui-blendish
  44. BASE_FLAGS += -IRack/dep/pffft
  45. ifeq ($(DEBUG),true)
  46. BASE_FLAGS += -UDEBUG
  47. endif
  48. ifeq ($(HEADLESS),true)
  49. BASE_FLAGS += -DHEADLESS
  50. endif
  51. ifeq ($(WASM),true)
  52. BASE_FLAGS += -DNANOVG_GLES2=1
  53. BASE_FLAGS += -msse -msse2 -msse3 -msimd128
  54. # FIXME
  55. BASE_FLAGS += -DRTLD_DEEPBIND=0
  56. else
  57. BASE_FLAGS += -pthread
  58. endif
  59. ifeq ($(WINDOWS),true)
  60. BASE_FLAGS += -D_USE_MATH_DEFINES
  61. BASE_FLAGS += -DWIN32_LEAN_AND_MEAN
  62. BASE_FLAGS += -I../include/mingw-compat
  63. BASE_FLAGS += -I../include/mingw-std-threads
  64. endif
  65. BUILD_C_FLAGS += -std=gnu11
  66. BUILD_C_FLAGS += -fno-finite-math-only
  67. BUILD_CXX_FLAGS += -fno-finite-math-only
  68. # use our custom function to filter out VCV trademarks
  69. BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal
  70. # --------------------------------------------------------------
  71. # Rack files to build
  72. RACK_FILES += AsyncDialog.cpp
  73. RACK_FILES += override/Engine.cpp
  74. RACK_FILES += override/asset.cpp
  75. RACK_FILES += override/context.cpp
  76. RACK_FILES += override/dep.cpp
  77. RACK_FILES += override/library.cpp
  78. RACK_FILES += override/network.cpp
  79. RACK_FILES += override/osdialog.cpp
  80. RACK_FILES += Rack/dep/pffft/pffft.c
  81. RACK_FILES += Rack/dep/pffft/fftpack.c
  82. RACK_FILES += Rack/dep/osdialog/osdialog.c
  83. RACK_FILES += Rack/dep/oui-blendish/blendish.c
  84. IGNORED_FILES = Rack/src/asset.cpp
  85. IGNORED_FILES += Rack/src/common.cpp
  86. IGNORED_FILES += Rack/src/context.cpp
  87. IGNORED_FILES += Rack/src/dep.cpp
  88. IGNORED_FILES += Rack/src/discord.cpp
  89. IGNORED_FILES += Rack/src/gamepad.cpp
  90. IGNORED_FILES += Rack/src/keyboard.cpp
  91. IGNORED_FILES += Rack/src/library.cpp
  92. IGNORED_FILES += Rack/src/network.cpp
  93. IGNORED_FILES += Rack/src/rtaudio.cpp
  94. IGNORED_FILES += Rack/src/rtmidi.cpp
  95. IGNORED_FILES += Rack/src/app/MenuBar.cpp
  96. IGNORED_FILES += Rack/src/engine/Engine.cpp
  97. IGNORED_FILES += Rack/src/window/Window.cpp
  98. RACK_FILES += $(wildcard Rack/src/*.c)
  99. RACK_FILES += $(wildcard Rack/src/*/*.c)
  100. RACK_FILES += $(filter-out $(IGNORED_FILES),$(wildcard Rack/src/*.cpp))
  101. RACK_FILES += $(filter-out $(IGNORED_FILES), $(wildcard Rack/src/*/*.cpp))
  102. # --------------------------------------------------------------
  103. # lots of warnings from VCV side
  104. BASE_FLAGS += -Wno-unused-but-set-variable
  105. BASE_FLAGS += -Wno-unused-parameter
  106. BASE_FLAGS += -Wno-unused-result
  107. BASE_FLAGS += -Wno-unused-variable
  108. ifeq ($(MACOS),true)
  109. BASE_FLAGS += -Wno-unknown-warning-option
  110. endif
  111. # --------------------------------------------------------------
  112. # Build targets
  113. TARGET = rack.a
  114. all: $(TARGET)
  115. $(MAKE) -C CardinalFX
  116. $(MAKE) -C CardinalSynth
  117. $(MAKE) -C Cardinal
  118. resources:
  119. $(MAKE) resources -C Cardinal
  120. $(MAKE) resources -C CardinalFX
  121. $(MAKE) resources -C CardinalSynth
  122. clean:
  123. rm -f $(TARGET)
  124. rm -rf $(BUILD_DIR)
  125. $(MAKE) clean -C Cardinal
  126. $(MAKE) clean -C CardinalFX
  127. $(MAKE) clean -C CardinalSynth
  128. # --------------------------------------------------------------
  129. # Build commands
  130. RACK_OBJS = $(RACK_FILES:%=$(BUILD_DIR)/%.o)
  131. $(TARGET): $(RACK_OBJS)
  132. @echo "Creating $@"
  133. $(SILENT)rm -f $@
  134. $(SILENT)$(AR) crs $@ $^
  135. $(BUILD_DIR)/%.c.o: %.c
  136. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  137. @echo "Compiling $<"
  138. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  139. $(BUILD_DIR)/Rack/src/core/Blank.cpp.o: Rack/src/core/Blank.cpp
  140. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  141. @echo "Compiling $<"
  142. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -UPRIVATE -D'nvgRGB(r,g,b)=nvgRGBblank(r,g,b)' -c -o $@
  143. $(BUILD_DIR)/Rack/src/core/%.cpp.o: Rack/src/core/%.cpp
  144. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  145. @echo "Compiling $<"
  146. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -UPRIVATE -c -o $@
  147. $(BUILD_DIR)/%.cpp.o: %.cpp
  148. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  149. @echo "Compiling $<"
  150. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  151. # --------------------------------------------------------------
  152. -include $(RACK_OBJS:%.o=%.d)
  153. # --------------------------------------------------------------