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.

216 lines
5.7KB

  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. # Project name, used for binaries
  13. NAME = Cardinal
  14. # --------------------------------------------------------------
  15. # Files to build (DPF stuff)
  16. FILES_DSP = \
  17. CardinalPlugin.cpp
  18. FILES_UI = \
  19. CardinalUI.cpp \
  20. dep.cpp \
  21. Window.cpp
  22. # --------------------------------------------------------------
  23. # Import base definitions
  24. USE_NANOVG_FBO = true
  25. USE_RGBA = true
  26. include ../dpf/Makefile.base.mk
  27. # --------------------------------------------------------------
  28. # Files to build (VCV stuff)
  29. FILES_DSP += Rack/dep/pffft/pffft.c
  30. FILES_DSP += Rack/dep/pffft/fftpack.c
  31. FILES_UI += Rack/dep/oui-blendish/blendish.c
  32. # FIXME dont use this
  33. FILES_UI += Rack/dep/osdialog/osdialog.c
  34. ifeq ($(MACOS),true)
  35. FILES_UI += Rack/dep/osdialog/osdialog_mac.m
  36. else ifeq ($(WINDOWS),true)
  37. FILES_UI += Rack/dep/osdialog/osdialog_win.c
  38. else
  39. FILES_UI += Rack/dep/osdialog/osdialog_zenity.c
  40. endif
  41. FILES_DSP += $(wildcard Rack/src/*.c)
  42. FILES_DSP += $(wildcard Rack/src/*/*.c)
  43. FILES_DSP += $(filter-out Rack/src/asset.cpp Rack/src/common.cpp Rack/src/dep.cpp Rack/src/discord.cpp Rack/src/gamepad.cpp Rack/src/keyboard.cpp Rack/src/library.cpp Rack/src/network.cpp Rack/src/rtaudio.cpp Rack/src/rtmidi.cpp, $(wildcard Rack/src/*.cpp))
  44. FILES_DSP += $(filter-out Rack/src/window/Window.cpp, $(wildcard Rack/src/*/*.cpp))
  45. # --------------------------------------------------------------
  46. # Extra libraries to link against
  47. ifneq ($(SYSDEPS),true)
  48. EXTRA_LIBS = ../plugins/plugins.a
  49. EXTRA_LIBS += Rack/dep/lib/libjansson.a
  50. EXTRA_LIBS += Rack/dep/lib/libsamplerate.a
  51. EXTRA_LIBS += Rack/dep/lib/libspeexdsp.a
  52. ifeq ($(WINDOWS),true)
  53. EXTRA_LIBS += Rack/dep/lib/libarchive_static.a
  54. else
  55. EXTRA_LIBS += Rack/dep/lib/libarchive.a
  56. endif
  57. EXTRA_LIBS += Rack/dep/lib/libzstd.a
  58. EXTRA_DEPENDENCIES = $(EXTRA_LIBS)
  59. endif
  60. # --------------------------------------------------------------
  61. # Do some magic
  62. DPF_PATH = ../dpf
  63. DPF_BUILD_DIR = ../build
  64. DPF_TARGET_DIR = ../bin
  65. USE_VST2_BUNDLE = true
  66. include ../dpf/Makefile.plugins.mk
  67. # --------------------------------------------------------------
  68. # Extra flags for VCV stuff
  69. ifeq ($(MACOS),true)
  70. BASE_FLAGS += -DARCH_MAC
  71. else ifeq ($(WINDOWS),true)
  72. BASE_FLAGS += -DARCH_WIN
  73. else
  74. BASE_FLAGS += -DARCH_LIN
  75. endif
  76. BASE_FLAGS += -fno-finite-math-only
  77. BASE_FLAGS += -I../dpf/dgl/src/nanovg
  78. BASE_FLAGS += -I../include
  79. BASE_FLAGS += -I../include/neon-compat
  80. BASE_FLAGS += -IRack/include
  81. ifeq ($(SYSDEPS),true)
  82. BASE_FLAGS += $(shell pkg-config --cflags jansson libarchive samplerate speexdsp)
  83. else
  84. BASE_FLAGS += -IRack/dep/include
  85. endif
  86. BASE_FLAGS += -IRack/dep/filesystem/include
  87. BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src
  88. BASE_FLAGS += -IRack/dep/glfw/include
  89. BASE_FLAGS += -IRack/dep/nanosvg/src
  90. BASE_FLAGS += -IRack/dep/osdialog
  91. BASE_FLAGS += -IRack/dep/oui-blendish
  92. BASE_FLAGS += -IRack/dep/pffft
  93. BASE_FLAGS += -pthread
  94. ifeq ($(WINDOWS),true)
  95. BASE_FLAGS += -D_USE_MATH_DEFINES
  96. BASE_FLAGS += -DWIN32_LEAN_AND_MEAN
  97. BASE_FLAGS += -I../include/mingw-compat
  98. BASE_FLAGS += -I../include/mingw-std-threads
  99. endif
  100. ifeq ($(WITH_LTO),true)
  101. BASE_FLAGS += -fno-strict-aliasing -flto
  102. endif
  103. BUILD_C_FLAGS += -std=gnu11
  104. # --------------------------------------------------------------
  105. # FIXME lots of warnings from VCV side
  106. BASE_FLAGS += -Wno-unused-parameter
  107. BASE_FLAGS += -Wno-unused-variable
  108. # --------------------------------------------------------------
  109. # extra linker flags
  110. LINK_FLAGS += -pthread
  111. ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true)
  112. LINK_FLAGS += -ldl
  113. endif
  114. ifeq ($(MACOS),true)
  115. LINK_FLAGS += -framework IOKit
  116. else ifeq ($(WINDOWS),true)
  117. LINK_FLAGS += -ldbghelp -lshlwapi
  118. # needed by JW-Modules
  119. EXTRA_LIBS += -lws2_32 -lwinmm
  120. endif
  121. ifeq ($(SYSDEPS),true)
  122. LINK_FLAGS += $(shell pkg-config --libs jansson libarchive samplerate speexdsp)
  123. endif
  124. ifeq ($(WITH_LTO),true)
  125. LINK_FLAGS += -fno-strict-aliasing -flto -Werror=odr -Werror=lto-type-mismatch
  126. endif
  127. # --------------------------------------------------------------
  128. # fallback path to resource files
  129. ifeq ($(EXE_WRAPPER),wine)
  130. SOURCE_DIR = Z:$(subst /,\\,$(CURDIR))
  131. else
  132. SOURCE_DIR = $(CURDIR)
  133. endif
  134. ifneq ($(SYSDEPS),true)
  135. BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_SOURCE_DIR='"$(SOURCE_DIR)"'
  136. endif
  137. BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"'
  138. # --------------------------------------------------------------
  139. # Enable all possible plugin types
  140. all: jack lv2 vst2 vst3 resources
  141. # --------------------------------------------------------------
  142. CORE_RESOURCES = $(subst Rack/res/,,$(wildcard Rack/res/*)) template.vcv
  143. PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.lv2/resources/%)
  144. ifeq ($(MACOS),true)
  145. PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.vst/Contents/Resources/%)
  146. else
  147. PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.vst/resources/%)
  148. endif
  149. PLUGIN_RESOURCES += $(CORE_RESOURCES:%=../bin/Cardinal.vst3/Contents/Resources/%)
  150. resources: $(PLUGIN_RESOURCES)
  151. ../bin/Cardinal.%/template.vcv: template.vcv
  152. -@mkdir -p "$(shell dirname $@)"
  153. ln -sf $(abspath $<) $@
  154. ../bin/Cardinal.lv2/resources/%: Rack/res/%
  155. -@mkdir -p "$(shell dirname $@)"
  156. ln -sf $(abspath $<) $@
  157. ../bin/Cardinal.vst/resources/%: Rack/res/%
  158. -@mkdir -p "$(shell dirname $@)"
  159. ln -sf $(abspath $<) $@
  160. ../bin/Cardinal.vst/Contents/Resources/%: Rack/res/%
  161. -@mkdir -p "$(shell dirname $@)"
  162. ln -sf $(abspath $<) $@
  163. ../bin/Cardinal.vst3/Contents/Resources/%: Rack/res/%
  164. -@mkdir -p "$(shell dirname $@)"
  165. ln -sf $(abspath $<) $@
  166. # --------------------------------------------------------------