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.

176 lines
4.5KB

  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 += -I../dpf/dgl/src/nanovg
  26. BASE_FLAGS += -I../dpf/distrho
  27. BASE_FLAGS += -I../include
  28. BASE_FLAGS += -I../include/neon-compat
  29. BASE_FLAGS += -IRack/include
  30. ifeq ($(SYSDEPS),true)
  31. BASE_FLAGS += -DCARDINAL_SYSDEPS
  32. BASE_FLAGS += $(shell pkg-config --cflags jansson libarchive samplerate speexdsp)
  33. else
  34. BASE_FLAGS += -DZSTDLIB_VISIBILITY=
  35. BASE_FLAGS += -IRack/dep/include
  36. endif
  37. BASE_FLAGS += -IRack/dep/filesystem/include
  38. BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src
  39. BASE_FLAGS += -IRack/dep/glfw/include
  40. BASE_FLAGS += -IRack/dep/nanosvg/src
  41. BASE_FLAGS += -IRack/dep/osdialog
  42. BASE_FLAGS += -IRack/dep/oui-blendish
  43. BASE_FLAGS += -IRack/dep/pffft
  44. ifeq ($(HEADLESS),true)
  45. BASE_FLAGS += -DHEADLESS
  46. endif
  47. ifeq ($(WASM),true)
  48. BASE_FLAGS += -DNANOVG_GLES2=1
  49. BASE_FLAGS += -msse -msse2 -msse3 -msimd128
  50. # FIXME
  51. BASE_FLAGS += -DRTLD_DEEPBIND=0
  52. else
  53. BASE_FLAGS += -pthread
  54. endif
  55. ifeq ($(WINDOWS),true)
  56. BASE_FLAGS += -D_USE_MATH_DEFINES
  57. BASE_FLAGS += -DWIN32_LEAN_AND_MEAN
  58. BASE_FLAGS += -I../include/mingw-compat
  59. BASE_FLAGS += -I../include/mingw-std-threads
  60. endif
  61. ifeq ($(WITH_LTO),true)
  62. BASE_FLAGS += -fno-strict-aliasing -flto
  63. endif
  64. BUILD_C_FLAGS += -std=gnu11
  65. BUILD_C_FLAGS += -fno-finite-math-only
  66. BUILD_CXX_FLAGS += -fno-finite-math-only
  67. # use our custom function to filter out VCV trademarks
  68. BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal
  69. # --------------------------------------------------------------
  70. # Rack files to build
  71. RACK_FILES += AsyncDialog.cpp
  72. RACK_FILES += override/Engine.cpp
  73. RACK_FILES += override/asset.cpp
  74. RACK_FILES += override/context.cpp
  75. RACK_FILES += override/dep.cpp
  76. RACK_FILES += override/library.cpp
  77. RACK_FILES += override/network.cpp
  78. RACK_FILES += override/osdialog.cpp
  79. RACK_FILES += Rack/dep/pffft/pffft.c
  80. RACK_FILES += Rack/dep/pffft/fftpack.c
  81. RACK_FILES += Rack/dep/osdialog/osdialog.c
  82. RACK_FILES += Rack/dep/oui-blendish/blendish.c
  83. IGNORED_FILES = Rack/src/asset.cpp
  84. IGNORED_FILES += Rack/src/common.cpp
  85. IGNORED_FILES += Rack/src/context.cpp
  86. IGNORED_FILES += Rack/src/dep.cpp
  87. IGNORED_FILES += Rack/src/discord.cpp
  88. IGNORED_FILES += Rack/src/gamepad.cpp
  89. IGNORED_FILES += Rack/src/keyboard.cpp
  90. IGNORED_FILES += Rack/src/library.cpp
  91. IGNORED_FILES += Rack/src/network.cpp
  92. IGNORED_FILES += Rack/src/rtaudio.cpp
  93. IGNORED_FILES += Rack/src/rtmidi.cpp
  94. IGNORED_FILES += Rack/src/app/MenuBar.cpp
  95. IGNORED_FILES += Rack/src/engine/Engine.cpp
  96. IGNORED_FILES += Rack/src/window/Window.cpp
  97. RACK_FILES += $(wildcard Rack/src/*.c)
  98. RACK_FILES += $(wildcard Rack/src/*/*.c)
  99. RACK_FILES += $(filter-out $(IGNORED_FILES),$(wildcard Rack/src/*.cpp))
  100. RACK_FILES += $(filter-out $(IGNORED_FILES), $(wildcard Rack/src/*/*.cpp))
  101. # --------------------------------------------------------------
  102. # lots of warnings from VCV side
  103. BASE_FLAGS += -Wno-unused-but-set-variable
  104. BASE_FLAGS += -Wno-unused-parameter
  105. BASE_FLAGS += -Wno-unused-result
  106. BASE_FLAGS += -Wno-unused-variable
  107. # --------------------------------------------------------------
  108. # Build targets
  109. TARGET = rack.a
  110. all: $(TARGET)
  111. $(MAKE) -C CardinalFX
  112. $(MAKE) -C CardinalSynth
  113. $(MAKE) -C Cardinal
  114. resources:
  115. $(MAKE) resources -C Cardinal
  116. $(MAKE) resources -C CardinalFX
  117. $(MAKE) resources -C CardinalSynth
  118. clean:
  119. rm -f $(TARGET)
  120. rm -rf $(BUILD_DIR)
  121. $(MAKE) clean -C Cardinal
  122. $(MAKE) clean -C CardinalFX
  123. $(MAKE) clean -C CardinalSynth
  124. # --------------------------------------------------------------
  125. # Build commands
  126. RACK_OBJS = $(RACK_FILES:%=$(BUILD_DIR)/%.o)
  127. $(TARGET): $(RACK_OBJS)
  128. @echo "Creating $@"
  129. $(SILENT)rm -f $@
  130. $(SILENT)$(AR) crs $@ $^
  131. $(BUILD_DIR)/%.c.o: %.c
  132. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  133. @echo "Compiling $<"
  134. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  135. $(BUILD_DIR)/%.cpp.o: %.cpp
  136. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  137. @echo "Compiling $<"
  138. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@
  139. # --------------------------------------------------------------
  140. -include $(RACK_OBJS:%.o=%.d)
  141. # --------------------------------------------------------------