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.

191 lines
4.9KB

  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. ifeq ($(WITH_LTO),true)
  66. BASE_FLAGS += -fno-strict-aliasing -flto
  67. endif
  68. BUILD_C_FLAGS += -std=gnu11
  69. BUILD_C_FLAGS += -fno-finite-math-only
  70. BUILD_CXX_FLAGS += -fno-finite-math-only
  71. # use our custom function to filter out VCV trademarks
  72. BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal
  73. # --------------------------------------------------------------
  74. # Rack files to build
  75. RACK_FILES += AsyncDialog.cpp
  76. RACK_FILES += override/Engine.cpp
  77. RACK_FILES += override/asset.cpp
  78. RACK_FILES += override/context.cpp
  79. RACK_FILES += override/dep.cpp
  80. RACK_FILES += override/library.cpp
  81. RACK_FILES += override/network.cpp
  82. RACK_FILES += override/osdialog.cpp
  83. RACK_FILES += Rack/dep/pffft/pffft.c
  84. RACK_FILES += Rack/dep/pffft/fftpack.c
  85. RACK_FILES += Rack/dep/osdialog/osdialog.c
  86. RACK_FILES += Rack/dep/oui-blendish/blendish.c
  87. IGNORED_FILES = Rack/src/asset.cpp
  88. IGNORED_FILES += Rack/src/common.cpp
  89. IGNORED_FILES += Rack/src/context.cpp
  90. IGNORED_FILES += Rack/src/dep.cpp
  91. IGNORED_FILES += Rack/src/discord.cpp
  92. IGNORED_FILES += Rack/src/gamepad.cpp
  93. IGNORED_FILES += Rack/src/keyboard.cpp
  94. IGNORED_FILES += Rack/src/library.cpp
  95. IGNORED_FILES += Rack/src/network.cpp
  96. IGNORED_FILES += Rack/src/rtaudio.cpp
  97. IGNORED_FILES += Rack/src/rtmidi.cpp
  98. IGNORED_FILES += Rack/src/app/MenuBar.cpp
  99. IGNORED_FILES += Rack/src/engine/Engine.cpp
  100. IGNORED_FILES += Rack/src/window/Window.cpp
  101. RACK_FILES += $(wildcard Rack/src/*.c)
  102. RACK_FILES += $(wildcard Rack/src/*/*.c)
  103. RACK_FILES += $(filter-out $(IGNORED_FILES),$(wildcard Rack/src/*.cpp))
  104. RACK_FILES += $(filter-out $(IGNORED_FILES), $(wildcard Rack/src/*/*.cpp))
  105. # --------------------------------------------------------------
  106. # lots of warnings from VCV side
  107. BASE_FLAGS += -Wno-unused-but-set-variable
  108. BASE_FLAGS += -Wno-unused-parameter
  109. BASE_FLAGS += -Wno-unused-result
  110. BASE_FLAGS += -Wno-unused-variable
  111. ifeq ($(MACOS),true)
  112. BASE_FLAGS += -Wno-unknown-warning-option
  113. endif
  114. # --------------------------------------------------------------
  115. # Build targets
  116. TARGET = rack.a
  117. all: $(TARGET)
  118. $(MAKE) -C CardinalFX
  119. $(MAKE) -C CardinalSynth
  120. $(MAKE) -C Cardinal
  121. resources:
  122. $(MAKE) resources -C Cardinal
  123. $(MAKE) resources -C CardinalFX
  124. $(MAKE) resources -C CardinalSynth
  125. clean:
  126. rm -f $(TARGET)
  127. rm -rf $(BUILD_DIR)
  128. $(MAKE) clean -C Cardinal
  129. $(MAKE) clean -C CardinalFX
  130. $(MAKE) clean -C CardinalSynth
  131. # --------------------------------------------------------------
  132. # Build commands
  133. RACK_OBJS = $(RACK_FILES:%=$(BUILD_DIR)/%.o)
  134. $(TARGET): $(RACK_OBJS)
  135. @echo "Creating $@"
  136. $(SILENT)rm -f $@
  137. $(SILENT)$(AR) crs $@ $^
  138. $(BUILD_DIR)/%.c.o: %.c
  139. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  140. @echo "Compiling $<"
  141. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  142. $(BUILD_DIR)/Rack/src/core/%.cpp.o: Rack/src/core/%.cpp
  143. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  144. @echo "Compiling $<"
  145. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -UPRIVATE -c -o $@
  146. $(BUILD_DIR)/%.cpp.o: %.cpp
  147. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  148. @echo "Compiling $<"
  149. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  150. # --------------------------------------------------------------
  151. -include $(RACK_OBJS:%.o=%.d)
  152. # --------------------------------------------------------------