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.

169 lines
4.4KB

  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. # List of modules to build, based on their C++ model name
  13. MODULES += SpringReverb
  14. # --------------------------------------------------------------
  15. # Import base definitions
  16. USE_NANOVG_FBO = true
  17. include ../dpf/Makefile.base.mk
  18. # --------------------------------------------------------------
  19. # Build setup
  20. BUILD_DIR = ../build/lv2export
  21. ifeq ($(MACOS),true)
  22. BASE_FLAGS += -DARCH_MAC
  23. else ifeq ($(WINDOWS),true)
  24. BASE_FLAGS += -DARCH_WIN
  25. else
  26. BASE_FLAGS += -DARCH_LIN
  27. endif
  28. BASE_FLAGS += -fno-finite-math-only
  29. BASE_FLAGS += -I../dpf/dgl/src/nanovg
  30. BASE_FLAGS += -I../dpf/distrho
  31. BASE_FLAGS += -I../include
  32. BASE_FLAGS += -I../include/neon-compat
  33. BASE_FLAGS += -I../src/Rack/include
  34. ifeq ($(SYSDEPS),true)
  35. BASE_FLAGS += $(shell pkg-config --cflags jansson libarchive samplerate speexdsp)
  36. else
  37. BASE_FLAGS += -I../src/Rack/dep/include
  38. endif
  39. BASE_FLAGS += -I../src/Rack/dep/filesystem/include
  40. BASE_FLAGS += -I../src/Rack/dep/fuzzysearchdatabase/src
  41. BASE_FLAGS += -I../src/Rack/dep/glfw/include
  42. BASE_FLAGS += -I../src/Rack/dep/nanosvg/src
  43. # BASE_FLAGS += -IRack/dep/osdialog
  44. BASE_FLAGS += -I../src/Rack/dep/oui-blendish
  45. BASE_FLAGS += -I../src/Rack/dep/pffft
  46. BASE_FLAGS += -pthread
  47. ifeq ($(WINDOWS),true)
  48. BASE_FLAGS += -D_USE_MATH_DEFINES
  49. BASE_FLAGS += -DWIN32_LEAN_AND_MEAN
  50. BASE_FLAGS += -I../include/mingw-compat
  51. BASE_FLAGS += -I../include/mingw-std-threads
  52. endif
  53. ifeq ($(HEADLESS),true)
  54. BASE_FLAGS += -DHEADLESS
  55. endif
  56. ifeq ($(WITH_LTO),true)
  57. BASE_FLAGS += -fno-strict-aliasing -flto
  58. endif
  59. # --------------------------------------------------------------
  60. # FIXME lots of warnings from VCV side
  61. BASE_FLAGS += -Wno-unused-parameter
  62. BASE_FLAGS += -Wno-unused-variable
  63. # --------------------------------------------------------------
  64. # extra linker flags
  65. LINK_FLAGS += -pthread
  66. ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true)
  67. LINK_FLAGS += -ldl
  68. endif
  69. ifeq ($(MACOS),true)
  70. LINK_FLAGS += -framework IOKit
  71. else ifeq ($(WINDOWS),true)
  72. # needed by VCVRack
  73. EXTRA_LIBS += -ldbghelp -lshlwapi
  74. # needed by JW-Modules
  75. EXTRA_LIBS += -lws2_32 -lwinmm
  76. endif
  77. ifeq ($(SYSDEPS),true)
  78. EXTRA_LIBS += $(shell pkg-config --libs jansson libarchive samplerate speexdsp)
  79. endif
  80. ifeq ($(WITH_LTO),true)
  81. LINK_FLAGS += -fno-strict-aliasing -flto -Werror=odr -Werror=lto-type-mismatch
  82. endif
  83. # --------------------------------------------------------------
  84. # Build targets
  85. BUILD_FILES = lv2plugin.cpp
  86. BUILD_FILES += test.cpp
  87. BUILD_FILES += dep.cpp
  88. BUILD_FILES += dep2.cpp
  89. BUILD_FILES += ../src/Rack/src/logger.cpp
  90. BUILD_FILES += ../src/Rack/src/random.cpp
  91. BUILD_FILES += ../src/Rack/src/string.cpp
  92. BUILD_FILES += ../src/Rack/src/system.cpp
  93. BUILD_FILES += ../src/Rack/src/tinyexpr.c
  94. BUILD_FILES += ../src/Rack/src/Quantity.cpp
  95. BUILD_FILES += ../src/Rack/src/engine/Module.cpp
  96. BUILD_FILES += ../src/Rack/src/engine/ParamQuantity.cpp
  97. BUILD_FILES += ../src/Rack/src/engine/PortInfo.cpp
  98. ifneq ($(SYSDEPS),true)
  99. BUILD_FILES += ../src/Rack/dep/pffft/pffft.c
  100. BUILD_FILES += ../src/Rack/dep/pffft/fftpack.c
  101. endif
  102. TARGETS = test$(APP_EXT) lv2plugin$(LIB_EXT)
  103. all: $(TARGETS)
  104. EXTRA_LIBS = ../plugins/plugins.a
  105. ifneq ($(SYSDEPS),true)
  106. EXTRA_LIBS += ../src/Rack/dep/lib/libjansson.a
  107. EXTRA_LIBS += ../src/Rack/dep/lib/libsamplerate.a
  108. EXTRA_LIBS += ../src/Rack/dep/lib/libspeexdsp.a
  109. ifeq ($(WINDOWS),true)
  110. EXTRA_LIBS += ../src/Rack/dep/lib/libarchive_static.a
  111. else
  112. EXTRA_LIBS += ../src/Rack/dep/lib/libarchive.a
  113. endif
  114. EXTRA_LIBS += ../src/Rack/dep/lib/libzstd.a
  115. endif
  116. # --------------------------------------------------------------
  117. # Build commands
  118. # OBJS = $(BUILD_FILES:%=$(BUILD_DIR)/%.o)
  119. FILES1 = $(filter-out lv2plugin.cpp,$(BUILD_FILES))
  120. FILES2 = $(filter-out test.cpp,$(BUILD_FILES))
  121. test$(APP_EXT): $(FILES1:%=$(BUILD_DIR)/%.o)
  122. -@mkdir -p $(shell dirname $@)
  123. $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) -o $@
  124. lv2plugin$(LIB_EXT): $(FILES2:%=$(BUILD_DIR)/%.o)
  125. -@mkdir -p $(shell dirname $@)
  126. $(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(EXTRA_LIBS) $(SHARED) -o $@
  127. $(BUILD_DIR)/%.c.o: %.c
  128. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  129. @echo "Compiling $<"
  130. $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@
  131. $(BUILD_DIR)/%.cpp.o: %.cpp
  132. -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)"
  133. @echo "Compiling $<"
  134. $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@