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.

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