#!/usr/bin/make -f # Makefile for DISTRHO Plugins # # ---------------------------- # # Created by falkTX # # -------------------------------------------------------------- # Project name, used for binaries NAME = ProM # -------------------------------------------------------------- # Files to build FILES_DSP = \ DistrhoPluginProM.cpp FILES_UI = \ DistrhoUIProM.cpp # -------------------------------------------------------------- # Check for system-wide projectM HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) # -------------------------------------------------------------- # Import base definitions FILE_BROWSER_DISABLED = true include ../../dpf/Makefile.base.mk # -------------------------------------------------------------- # Use local copy if needed ifneq ($(HAVE_PROJECTM),true) FILES_UI += \ projectM/src/libprojectM/ConfigFile.cpp \ projectM/src/libprojectM/FileScanner.cpp \ projectM/src/libprojectM/KeyHandler.cpp \ projectM/src/libprojectM/PCM.cpp \ projectM/src/libprojectM/PipelineMerger.cpp \ projectM/src/libprojectM/Preset.cpp \ projectM/src/libprojectM/PresetChooser.cpp \ projectM/src/libprojectM/PresetFactory.cpp \ projectM/src/libprojectM/PresetFactoryManager.cpp \ projectM/src/libprojectM/PresetLoader.cpp \ projectM/src/libprojectM/TimeKeeper.cpp \ projectM/src/libprojectM/fftsg.cpp \ projectM/src/libprojectM/projectM.cpp \ projectM/src/libprojectM/timer.cpp \ projectM/src/libprojectM/wipemalloc.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/BuiltinParams.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/CustomShape.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/CustomWave.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/Eval.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/Expr.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/Func.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/IdlePreset.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/InitCond.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/MilkdropPreset.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/Param.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/Parser.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/PerFrameEqn.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/PerPixelEqn.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/PerPointEqn.cpp \ projectM/src/libprojectM/MilkdropPresetFactory/PresetFrameIO.cpp \ projectM/src/libprojectM/NativePresetFactory/NativePresetFactory.cpp \ projectM/src/libprojectM/Renderer/BeatDetect.cpp \ projectM/src/libprojectM/Renderer/Renderable.cpp \ projectM/src/libprojectM/Renderer/Filters.cpp \ projectM/src/libprojectM/Renderer/Renderer.cpp \ projectM/src/libprojectM/Renderer/MilkdropWaveform.cpp \ projectM/src/libprojectM/Renderer/Shader.cpp \ projectM/src/libprojectM/Renderer/PerPixelMesh.cpp \ projectM/src/libprojectM/Renderer/ShaderEngine.cpp \ projectM/src/libprojectM/Renderer/PerlinNoise.cpp \ projectM/src/libprojectM/Renderer/StaticGlShaders.cpp \ projectM/src/libprojectM/Renderer/PerlinNoiseWithAlpha.cpp \ projectM/src/libprojectM/Renderer/Texture.cpp \ projectM/src/libprojectM/Renderer/Pipeline.cpp \ projectM/src/libprojectM/Renderer/TextureManager.cpp \ projectM/src/libprojectM/Renderer/PipelineContext.cpp \ projectM/src/libprojectM/Renderer/VideoEcho.cpp \ projectM/src/libprojectM/Renderer/RenderItemDistanceMetric.cpp \ projectM/src/libprojectM/Renderer/Waveform.cpp \ projectM/src/libprojectM/Renderer/RenderItemMatcher.cpp \ projectM/src/libprojectM/Renderer/hlslparser/src/CodeWriter.cpp \ projectM/src/libprojectM/Renderer/hlslparser/src/HLSLParser.cpp \ projectM/src/libprojectM/Renderer/hlslparser/src/Engine.cpp \ projectM/src/libprojectM/Renderer/hlslparser/src/HLSLTokenizer.cpp \ projectM/src/libprojectM/Renderer/hlslparser/src/GLSLGenerator.cpp \ projectM/src/libprojectM/Renderer/hlslparser/src/HLSLTree.cpp \ projectM/src/libprojectM/Renderer/SOIL2/SOIL2.c \ projectM/src/libprojectM/Renderer/SOIL2/image_DXT.c \ projectM/src/libprojectM/Renderer/SOIL2/etc1_utils.c \ projectM/src/libprojectM/Renderer/SOIL2/image_helper.c ifeq ($(WINDOWS),true) FILES_UI += \ projectM/msvc/dlfcn.c \ projectM/msvc/GL/glew.c endif # WINDOWS endif # !HAVE_PROJECTM # -------------------------------------------------------------- # Do some magic UI_TYPE = opengl3 USE_VST2_BUNDLE = true include ../../dpf/Makefile.plugins.mk # -------------------------------------------------------------- # Extra flags ifeq ($(HAVE_PROJECTM),true) BASE_FLAGS += -DPROJECTM_DATA_DIR='"$(shell pkg-config --variable=pkgdatadir libprojectM)"' BASE_FLAGS += $(shell pkg-config --cflags libprojectM) LINK_FLAGS += $(shell pkg-config --libs libprojectM) ifeq ($(shell pkg-config --atleast-version=3.1.8 libprojectM && echo true),true) BASE_FLAGS += -DHAVE_PROJECTM_TEXT_FUNCTIONS endif else # HAVE_PROJECTM # custom macros for ProM BASE_FLAGS += -DHAVE_PROJECTM_TEXT_FUNCTIONS # compiler macros from projectM BASE_FLAGS += -DUSE_TEXT_MENU=1 BASE_FLAGS += -DUSE_THREADS=1 # GLES stuff # BASE_FLAGS += -DUSE_GLES=1 # Experimental # BASE_FLAGS += -DHAVE_LLVM=1 ifeq ($(WINDOWS),true) BASE_FLAGS += -DDLLEXPORT= BASE_FLAGS += -DprojectM_FONT_TITLE='"fonts/Vera.tff"' BASE_FLAGS += -DprojectM_FONT_MENU='"fonts/VeraMono.ttf"' BASE_FLAGS += -DSTBI_NO_DDS=1 else # WINDOWS BASE_FLAGS += -DDATADIR_PATH='"."' BASE_FLAGS += -DHAVE_ALIGNED_ALLOC=1 BASE_FLAGS += -DHAVE_FTS_H=1 BASE_FLAGS += -DHAVE_POSIX_MEMALIGN=1 endif # WINDOWS # include dirs BASE_FLAGS += -IprojectM/src BASE_FLAGS += -IprojectM/src/libprojectM BASE_FLAGS += -IprojectM/src/libprojectM/Renderer BASE_FLAGS += -IprojectM/src/libprojectM/Renderer/hlslparser/src BASE_FLAGS += -IprojectM/src/libprojectM/MilkdropPresetFactory BASE_FLAGS += -IprojectM/src/libprojectM/NativePresetFactory BASE_FLAGS += -IprojectM/vendor ifeq ($(WINDOWS),true) BASE_FLAGS += -IprojectM/msvc endif # WINDOWS # silence projectM warnings BASE_FLAGS += -Wno-ignored-qualifiers BASE_FLAGS += -Wno-implicit-fallthrough BASE_FLAGS += -Wno-overflow BASE_FLAGS += -Wno-shift-negative-value BASE_FLAGS += -Wno-sign-compare BASE_FLAGS += -Wno-unused-parameter BASE_FLAGS += -Wno-unused-variable ifeq ($(MACOS),true) BASE_FLAGS += -Wno-constant-conversion BASE_FLAGS += -Wno-delete-non-abstract-non-virtual-dtor BASE_FLAGS += -Wno-mismatched-tags else BASE_FLAGS += -Wno-maybe-uninitialized BASE_FLAGS += -Wno-unused-but-set-variable endif # MACOS ifeq ($(WINDOWS),true) BASE_FLAGS += -Wno-cast-function-type BASE_FLAGS += -Wno-unknown-pragmas else BASE_FLAGS += -Wno-unused-function endif # WINDOWS # openmp (optional) ifeq ($(DISABLE_OPENMP),) ifneq ($(MACOS),true) CUSTOM_BUILD_FLAGS += -D_OPENMP -fopenmp CUSTOM_LINK_FLAGS += -fopenmp endif # MACOS endif # DISABLE_OPENMP # extra linker flags ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) LINK_FLAGS += -ldl endif ifeq ($(WINDOWS),true) LINK_FLAGS += -lpsapi endif endif # HAVE_PROJECTM LINK_FLAGS += -lpthread # -------------------------------------------------------------- # Enable all possible plugin types TARGETS = lv2 vst2 vst3 all: $(TARGETS) # --------------------------------------------------------------