Collection of DPF-based plugins for packaging
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.

214 lines
7.2KB

  1. #!/usr/bin/make -f
  2. # Makefile for DISTRHO Plugins #
  3. # ---------------------------- #
  4. # Created by falkTX
  5. #
  6. # --------------------------------------------------------------
  7. # Project name, used for binaries
  8. NAME = ProM
  9. # --------------------------------------------------------------
  10. # Files to build
  11. FILES_DSP = \
  12. DistrhoPluginProM.cpp
  13. FILES_UI = \
  14. DistrhoUIProM.cpp
  15. # --------------------------------------------------------------
  16. # Check for system-wide projectM
  17. HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true)
  18. # --------------------------------------------------------------
  19. # Import base definitions
  20. FILE_BROWSER_DISABLED = true
  21. include ../../dpf/Makefile.base.mk
  22. # --------------------------------------------------------------
  23. # Use local copy if needed
  24. ifneq ($(HAVE_PROJECTM),true)
  25. FILES_UI += \
  26. projectM/src/libprojectM/ConfigFile.cpp \
  27. projectM/src/libprojectM/FileScanner.cpp \
  28. projectM/src/libprojectM/KeyHandler.cpp \
  29. projectM/src/libprojectM/PCM.cpp \
  30. projectM/src/libprojectM/PipelineMerger.cpp \
  31. projectM/src/libprojectM/Preset.cpp \
  32. projectM/src/libprojectM/PresetChooser.cpp \
  33. projectM/src/libprojectM/PresetFactory.cpp \
  34. projectM/src/libprojectM/PresetFactoryManager.cpp \
  35. projectM/src/libprojectM/PresetLoader.cpp \
  36. projectM/src/libprojectM/TimeKeeper.cpp \
  37. projectM/src/libprojectM/fftsg.cpp \
  38. projectM/src/libprojectM/projectM.cpp \
  39. projectM/src/libprojectM/timer.cpp \
  40. projectM/src/libprojectM/wipemalloc.cpp \
  41. projectM/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp \
  42. projectM/src/libprojectM/MilkdropPresetFactory/BuiltinParams.cpp \
  43. projectM/src/libprojectM/MilkdropPresetFactory/CustomShape.cpp \
  44. projectM/src/libprojectM/MilkdropPresetFactory/CustomWave.cpp \
  45. projectM/src/libprojectM/MilkdropPresetFactory/Eval.cpp \
  46. projectM/src/libprojectM/MilkdropPresetFactory/Expr.cpp \
  47. projectM/src/libprojectM/MilkdropPresetFactory/Func.cpp \
  48. projectM/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp \
  49. projectM/src/libprojectM/MilkdropPresetFactory/InitCond.cpp \
  50. projectM/src/libprojectM/MilkdropPresetFactory/MilkdropPreset.cpp \
  51. projectM/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp \
  52. projectM/src/libprojectM/MilkdropPresetFactory/Param.cpp \
  53. projectM/src/libprojectM/MilkdropPresetFactory/Parser.cpp \
  54. projectM/src/libprojectM/MilkdropPresetFactory/PerFrameEqn.cpp \
  55. projectM/src/libprojectM/MilkdropPresetFactory/PerPixelEqn.cpp \
  56. projectM/src/libprojectM/MilkdropPresetFactory/PerPointEqn.cpp \
  57. projectM/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp \
  58. projectM/src/libprojectM/NativePresetFactory/NativePresetFactory.cpp \
  59. projectM/src/libprojectM/Renderer/BeatDetect.cpp \
  60. projectM/src/libprojectM/Renderer/Renderable.cpp \
  61. projectM/src/libprojectM/Renderer/Filters.cpp \
  62. projectM/src/libprojectM/Renderer/Renderer.cpp \
  63. projectM/src/libprojectM/Renderer/MilkdropWaveform.cpp \
  64. projectM/src/libprojectM/Renderer/Shader.cpp \
  65. projectM/src/libprojectM/Renderer/PerPixelMesh.cpp \
  66. projectM/src/libprojectM/Renderer/ShaderEngine.cpp \
  67. projectM/src/libprojectM/Renderer/PerlinNoise.cpp \
  68. projectM/src/libprojectM/Renderer/StaticGlShaders.cpp \
  69. projectM/src/libprojectM/Renderer/PerlinNoiseWithAlpha.cpp \
  70. projectM/src/libprojectM/Renderer/Texture.cpp \
  71. projectM/src/libprojectM/Renderer/Pipeline.cpp \
  72. projectM/src/libprojectM/Renderer/TextureManager.cpp \
  73. projectM/src/libprojectM/Renderer/PipelineContext.cpp \
  74. projectM/src/libprojectM/Renderer/VideoEcho.cpp \
  75. projectM/src/libprojectM/Renderer/RenderItemDistanceMetric.cpp \
  76. projectM/src/libprojectM/Renderer/Waveform.cpp \
  77. projectM/src/libprojectM/Renderer/RenderItemMatcher.cpp \
  78. projectM/src/libprojectM/Renderer/hlslparser/src/CodeWriter.cpp \
  79. projectM/src/libprojectM/Renderer/hlslparser/src/HLSLParser.cpp \
  80. projectM/src/libprojectM/Renderer/hlslparser/src/Engine.cpp \
  81. projectM/src/libprojectM/Renderer/hlslparser/src/HLSLTokenizer.cpp \
  82. projectM/src/libprojectM/Renderer/hlslparser/src/GLSLGenerator.cpp \
  83. projectM/src/libprojectM/Renderer/hlslparser/src/HLSLTree.cpp \
  84. projectM/src/libprojectM/Renderer/SOIL2/SOIL2.c \
  85. projectM/src/libprojectM/Renderer/SOIL2/image_DXT.c \
  86. projectM/src/libprojectM/Renderer/SOIL2/etc1_utils.c \
  87. projectM/src/libprojectM/Renderer/SOIL2/image_helper.c
  88. ifeq ($(WINDOWS),true)
  89. FILES_UI += \
  90. projectM/msvc/dlfcn.c \
  91. projectM/msvc/GL/glew.c
  92. endif # WINDOWS
  93. endif # !HAVE_PROJECTM
  94. # --------------------------------------------------------------
  95. # Do some magic
  96. UI_TYPE = opengl3
  97. USE_CLAP_BUNDLE = true
  98. USE_VST2_BUNDLE = true
  99. include ../../dpf/Makefile.plugins.mk
  100. # --------------------------------------------------------------
  101. # Extra flags
  102. ifeq ($(HAVE_PROJECTM),true)
  103. BASE_FLAGS += -DPROJECTM_DATA_DIR='"$(shell pkg-config --variable=pkgdatadir libprojectM)"'
  104. BASE_FLAGS += $(shell pkg-config --cflags libprojectM)
  105. LINK_FLAGS += $(shell pkg-config --libs libprojectM)
  106. ifeq ($(shell pkg-config --atleast-version=3.1.8 libprojectM && echo true),true)
  107. BASE_FLAGS += -DHAVE_PROJECTM_TEXT_FUNCTIONS
  108. endif
  109. else # HAVE_PROJECTM
  110. # custom macros for ProM
  111. BASE_FLAGS += -DHAVE_PROJECTM_TEXT_FUNCTIONS
  112. # compiler macros from projectM
  113. BASE_FLAGS += -DUSE_TEXT_MENU=1
  114. BASE_FLAGS += -DUSE_THREADS=1
  115. # GLES stuff
  116. # BASE_FLAGS += -DUSE_GLES=1
  117. # Experimental
  118. # BASE_FLAGS += -DHAVE_LLVM=1
  119. ifeq ($(WINDOWS),true)
  120. BASE_FLAGS += -DDLLEXPORT=
  121. BASE_FLAGS += -DprojectM_FONT_TITLE='"fonts/Vera.tff"'
  122. BASE_FLAGS += -DprojectM_FONT_MENU='"fonts/VeraMono.ttf"'
  123. BASE_FLAGS += -DSTBI_NO_DDS=1
  124. else # WINDOWS
  125. BASE_FLAGS += -DDATADIR_PATH='"."'
  126. BASE_FLAGS += -DHAVE_ALIGNED_ALLOC=1
  127. BASE_FLAGS += -DHAVE_FTS_H=1
  128. BASE_FLAGS += -DHAVE_POSIX_MEMALIGN=1
  129. endif # WINDOWS
  130. # include dirs
  131. BASE_FLAGS += -IprojectM/src
  132. BASE_FLAGS += -IprojectM/src/libprojectM
  133. BASE_FLAGS += -IprojectM/src/libprojectM/Renderer
  134. BASE_FLAGS += -IprojectM/src/libprojectM/Renderer/hlslparser/src
  135. BASE_FLAGS += -IprojectM/src/libprojectM/MilkdropPresetFactory
  136. BASE_FLAGS += -IprojectM/src/libprojectM/NativePresetFactory
  137. BASE_FLAGS += -IprojectM/vendor
  138. ifeq ($(WINDOWS),true)
  139. BASE_FLAGS += -IprojectM/msvc
  140. endif # WINDOWS
  141. # silence projectM warnings
  142. BASE_FLAGS += -Wno-ignored-qualifiers
  143. BASE_FLAGS += -Wno-implicit-fallthrough
  144. BASE_FLAGS += -Wno-overflow
  145. BASE_FLAGS += -Wno-shift-negative-value
  146. BASE_FLAGS += -Wno-sign-compare
  147. BASE_FLAGS += -Wno-unused-parameter
  148. BASE_FLAGS += -Wno-unused-variable
  149. ifeq ($(MACOS),true)
  150. BASE_FLAGS += -Wno-constant-conversion
  151. BASE_FLAGS += -Wno-delete-non-abstract-non-virtual-dtor
  152. BASE_FLAGS += -Wno-mismatched-tags
  153. else
  154. BASE_FLAGS += -Wno-maybe-uninitialized
  155. BASE_FLAGS += -Wno-unused-but-set-variable
  156. endif # MACOS
  157. ifeq ($(WINDOWS),true)
  158. BASE_FLAGS += -Wno-cast-function-type
  159. BASE_FLAGS += -Wno-unknown-pragmas
  160. else
  161. BASE_FLAGS += -Wno-unused-function
  162. endif # WINDOWS
  163. # openmp (optional)
  164. ifeq ($(DISABLE_OPENMP),)
  165. ifneq ($(MACOS),true)
  166. CUSTOM_BUILD_FLAGS += -D_OPENMP -fopenmp
  167. CUSTOM_LINK_FLAGS += -fopenmp
  168. endif # MACOS
  169. endif # DISABLE_OPENMP
  170. # extra linker flags
  171. ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true)
  172. LINK_FLAGS += -ldl
  173. endif
  174. ifeq ($(WINDOWS),true)
  175. LINK_FLAGS += -lpsapi
  176. endif
  177. endif # HAVE_PROJECTM
  178. LINK_FLAGS += -lpthread
  179. # --------------------------------------------------------------
  180. # Enable all possible plugin types
  181. TARGETS = lv2 vst2 vst3 clap
  182. all: $(TARGETS)
  183. # --------------------------------------------------------------