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.

162 lines
4.2KB

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