Signed-off-by: falkTX <falktx@falktx.com>master
| @@ -6,7 +6,7 @@ | |||||
| include dpf/Makefile.base.mk | include dpf/Makefile.base.mk | ||||
| all: dgl plugins gen | |||||
| all: dgl plugins resources gen | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Check for system-wide projectM | # Check for system-wide projectM | ||||
| @@ -23,6 +23,25 @@ plugins: dgl | |||||
| ifneq ($(HAVE_PROJECTM),true) | ifneq ($(HAVE_PROJECTM),true) | ||||
| resources: plugins | resources: plugins | ||||
| # LV2 fonts | |||||
| install -d bin/ProM.lv2/resources/fonts | |||||
| ln -sf $(CURDIR)/plugins/ProM/projectM/fonts/*.ttf bin/ProM.lv2/resources/fonts/ | |||||
| # LV2 presets | |||||
| install -d bin/ProM.lv2/resources/presets | |||||
| ln -sf $(CURDIR)/plugins/ProM/projectM/presets/presets_* bin/ProM.lv2/resources/presets/ | |||||
| ifeq ($(MACOS),true) | |||||
| # TODO | |||||
| else | |||||
| # VST directory | |||||
| install -d bin/ProM.vst | |||||
| mv bin/ProM-vst$(LIB_EXT) bin/ProM.vst/ProM$(LIB_EXT) | |||||
| # VST fonts | |||||
| install -d bin/ProM.vst/resources/fonts | |||||
| ln -sf $(CURDIR)/plugins/ProM/projectM/fonts/*.ttf bin/ProM.vst/resources/fonts/ | |||||
| # VST presets | |||||
| install -d bin/ProM.vst/resources/presets | |||||
| ln -sf $(CURDIR)/plugins/ProM/projectM/presets/presets_* bin/ProM.vst/resources/presets/ | |||||
| endif | |||||
| else | else | ||||
| resources: | resources: | ||||
| endif | endif | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit 168e8a5333c52175a7e94016b3ef994c7b253aa9 | |||||
| Subproject commit 05d91f5852f4bccfd2bce1d4d2e2b3036e29db03 | |||||
| @@ -1,6 +1,6 @@ | |||||
| /* | /* | ||||
| * DISTRHO ProM Plugin | * DISTRHO ProM Plugin | ||||
| * Copyright (C) 2015 Filipe Coelho <falktx@falktx.com> | |||||
| * Copyright (C) 2015-2021 Filipe Coelho <falktx@falktx.com> | |||||
| * | * | ||||
| * This program is free software; you can redistribute it and/or | * This program is free software; you can redistribute it and/or | ||||
| * modify it under the terms of the GNU Lesser General Public | * modify it under the terms of the GNU Lesser General Public | ||||
| @@ -24,6 +24,7 @@ | |||||
| #define DISTRHO_PLUGIN_HAS_UI 1 | #define DISTRHO_PLUGIN_HAS_UI 1 | ||||
| #define DISTRHO_PLUGIN_NUM_INPUTS 2 | #define DISTRHO_PLUGIN_NUM_INPUTS 2 | ||||
| #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | ||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | |||||
| // required by projectM | // required by projectM | ||||
| #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 | #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 | ||||
| @@ -19,10 +19,46 @@ | |||||
| #include "libprojectM/projectM.hpp" | #include "libprojectM/projectM.hpp" | ||||
| #ifdef DISTRHO_OS_WINDOWS | |||||
| # include <shlobj.h> | |||||
| #else | |||||
| # include <dlfcn.h> | |||||
| #endif | |||||
| START_NAMESPACE_DISTRHO | START_NAMESPACE_DISTRHO | ||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| static String getCurrentExecutableDataDir() | |||||
| { | |||||
| static String datadir; | |||||
| if (datadir.isNotEmpty()) | |||||
| return datadir; | |||||
| #ifdef DISTRHO_OS_WINDOWS | |||||
| CHAR filename[MAX_PATH + 256]; | |||||
| filename[0] = 0; | |||||
| GetModuleFileName(nullptr, filename, sizeof(filename)); | |||||
| datadir = String(filename); | |||||
| #else | |||||
| Dl_info info; | |||||
| dladdr((void*)getCurrentExecutableDataDir, &info); | |||||
| datadir = String(info.dli_fname); | |||||
| bool hasSlash; | |||||
| const std::size_t slashPos = datadir.rfind('/', &hasSlash); | |||||
| if (hasSlash) | |||||
| datadir.truncate(slashPos); | |||||
| #endif | |||||
| return datadir; | |||||
| } | |||||
| // ----------------------------------------------------------------------- | |||||
| DistrhoUIProM::DistrhoUIProM() | DistrhoUIProM::DistrhoUIProM() | ||||
| : UI(512, 512), | : UI(512, 512), | ||||
| fPM(nullptr), | fPM(nullptr), | ||||
| @@ -76,6 +112,7 @@ void DistrhoUIProM::uiIdle() | |||||
| void DistrhoUIProM::uiReshape(uint width, uint height) | void DistrhoUIProM::uiReshape(uint width, uint height) | ||||
| { | { | ||||
| #if 0 | |||||
| glEnable(GL_BLEND); | glEnable(GL_BLEND); | ||||
| glEnable(GL_LINE_SMOOTH); | glEnable(GL_LINE_SMOOTH); | ||||
| glEnable(GL_POINT_SMOOTH); | glEnable(GL_POINT_SMOOTH); | ||||
| @@ -99,17 +136,21 @@ void DistrhoUIProM::uiReshape(uint width, uint height) | |||||
| glClearColor(0.0f, 0.0f, 0.0f, 0.0f); | glClearColor(0.0f, 0.0f, 0.0f, 0.0f); | ||||
| glLineStipple(2, 0xAAAA); | glLineStipple(2, 0xAAAA); | ||||
| #endif | |||||
| if (fPM == nullptr) | if (fPM == nullptr) | ||||
| { | { | ||||
| #ifdef PROJECTM_DATA_DIR | #ifdef PROJECTM_DATA_DIR | ||||
| fPM = new projectM(PROJECTM_DATA_DIR "/config.inp"); | fPM = new projectM(PROJECTM_DATA_DIR "/config.inp"); | ||||
| #else | #else | ||||
| const String datadir(getCurrentExecutableDataDir()); | |||||
| d_stdout("ProM datadir: '%s'", datadir.buffer()); | |||||
| projectM::Settings settings; | projectM::Settings settings; | ||||
| settings.presetURL = "/Users/falktx/Source/ProM/plugins/ProM/projectM/presets"; | |||||
| settings.titleFontURL = "fonts/Vera.ttf"; | |||||
| settings.menuFontURL = "fonts/VeraMono.ttf"; | |||||
| settings.datadir = "/Users/falktx/Source/ProM/plugins/ProM/projectM"; | |||||
| settings.presetURL = datadir + "/resources/presets"; | |||||
| settings.titleFontURL = datadir + "/resources/fonts/Vera.ttf"; | |||||
| settings.menuFontURL = datadir + "/resources/fonts/VeraMono.ttf"; | |||||
| settings.datadir = datadir + "/resources"; | |||||
| fPM = new projectM(settings); | fPM = new projectM(settings); | ||||
| #endif | #endif | ||||
| } | } | ||||
| @@ -23,6 +23,11 @@ FILES_UI = \ | |||||
| HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) | HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true) | ||||
| # -------------------------------------------------------------- | |||||
| # Import base definitions | |||||
| include ../../dpf/Makefile.base.mk | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Use local copy if needed | # Use local copy if needed | ||||
| @@ -90,7 +95,12 @@ FILES_UI += \ | |||||
| projectM/src/libprojectM/Renderer/SOIL2/image_DXT.c \ | projectM/src/libprojectM/Renderer/SOIL2/image_DXT.c \ | ||||
| projectM/src/libprojectM/Renderer/SOIL2/etc1_utils.c \ | projectM/src/libprojectM/Renderer/SOIL2/etc1_utils.c \ | ||||
| projectM/src/libprojectM/Renderer/SOIL2/image_helper.c | projectM/src/libprojectM/Renderer/SOIL2/image_helper.c | ||||
| endif | |||||
| ifeq ($(WINDOWS),true) | |||||
| FILES_UI += \ | |||||
| projectM/msvc/dlfcn.c \ | |||||
| projectM/msvc/GL/glew.c | |||||
| endif # WINDOWS | |||||
| endif # !HAVE_PROJECTM | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Do some magic | # Do some magic | ||||
| @@ -101,12 +111,27 @@ include ../../dpf/Makefile.plugins.mk | |||||
| # Extra flags | # Extra flags | ||||
| ifeq ($(HAVE_PROJECTM),true) | ifeq ($(HAVE_PROJECTM),true) | ||||
| BASE_FLAGS += -DPROJECTM_DATA_DIR='"$(shell pkg-config --variable=pkgdatadir libprojectM)"' | BASE_FLAGS += -DPROJECTM_DATA_DIR='"$(shell pkg-config --variable=pkgdatadir libprojectM)"' | ||||
| BASE_FLAGS += $(shell pkg-config --cflags libprojectM) | BASE_FLAGS += $(shell pkg-config --cflags libprojectM) | ||||
| LINK_FLAGS += $(shell pkg-config --libs libprojectM) | LINK_FLAGS += $(shell pkg-config --libs libprojectM) | ||||
| else # HAVE_PROJECTM | else # HAVE_PROJECTM | ||||
| # compiler macros | # compiler macros | ||||
| BASE_FLAGS += -DUSE_TEXT_MENU | |||||
| 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 | |||||
| # these below do nothing | |||||
| BASE_FLAGS += -DUSE_FTGL | |||||
| BASE_FLAGS += -DUSE_NATIVE_GLEW | |||||
| else # WINDOWS | |||||
| BASE_FLAGS += -DDATADIR_PATH='"."' | BASE_FLAGS += -DDATADIR_PATH='"."' | ||||
| endif # WINDOWS | |||||
| # include dirs | # include dirs | ||||
| BASE_FLAGS += -IprojectM/src | BASE_FLAGS += -IprojectM/src | ||||
| BASE_FLAGS += -IprojectM/src/libprojectM | BASE_FLAGS += -IprojectM/src/libprojectM | ||||
| @@ -115,6 +140,10 @@ BASE_FLAGS += -IprojectM/src/libprojectM/Renderer/hlslparser/src | |||||
| BASE_FLAGS += -IprojectM/src/libprojectM/MilkdropPresetFactory | BASE_FLAGS += -IprojectM/src/libprojectM/MilkdropPresetFactory | ||||
| BASE_FLAGS += -IprojectM/src/libprojectM/NativePresetFactory | BASE_FLAGS += -IprojectM/src/libprojectM/NativePresetFactory | ||||
| BASE_FLAGS += -IprojectM/vendor | BASE_FLAGS += -IprojectM/vendor | ||||
| ifeq ($(WINDOWS),true) | |||||
| BASE_FLAGS += -IprojectM/msvc | |||||
| endif # WINDOWS | |||||
| # silence projectM warnings | # silence projectM warnings | ||||
| BASE_FLAGS += -Wno-ignored-qualifiers | BASE_FLAGS += -Wno-ignored-qualifiers | ||||
| BASE_FLAGS += -Wno-implicit-fallthrough | BASE_FLAGS += -Wno-implicit-fallthrough | ||||
| @@ -129,7 +158,12 @@ ifeq ($(MACOS),true) | |||||
| BASE_FLAGS += -Wno-constant-conversion | BASE_FLAGS += -Wno-constant-conversion | ||||
| BASE_FLAGS += -Wno-delete-non-abstract-non-virtual-dtor | BASE_FLAGS += -Wno-delete-non-abstract-non-virtual-dtor | ||||
| BASE_FLAGS += -Wno-mismatched-tags | BASE_FLAGS += -Wno-mismatched-tags | ||||
| endif | |||||
| endif # MACOS | |||||
| ifeq ($(WINDOWS),true) | |||||
| BASE_FLAGS += -Wno-cast-function-type | |||||
| BASE_FLAGS += -Wno-unknown-pragmas | |||||
| endif # WIN32 | |||||
| # openmp (optional) | # openmp (optional) | ||||
| ifeq ($(DISABLE_OPENMP),) | ifeq ($(DISABLE_OPENMP),) | ||||
| ifneq ($(MACOS),true) | ifneq ($(MACOS),true) | ||||
| @@ -137,10 +171,15 @@ CUSTOM_BUILD_FLAGS += -D_OPENMP -fopenmp | |||||
| CUSTOM_LINK_FLAGS += -fopenmp | CUSTOM_LINK_FLAGS += -fopenmp | ||||
| endif # MACOS | endif # MACOS | ||||
| endif # DISABLE_OPENMP | endif # DISABLE_OPENMP | ||||
| # extra linker flags | # extra linker flags | ||||
| ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) | ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) | ||||
| LINK_FLAGS += -ldl | LINK_FLAGS += -ldl | ||||
| endif # HAIKU_OR_MACOS_OR_WINDOWS | |||||
| endif | |||||
| ifeq ($(WINDOWS),true) | |||||
| LINK_FLAGS += -lpsapi | |||||
| endif | |||||
| endif # HAVE_PROJECTM | endif # HAVE_PROJECTM | ||||
| LINK_FLAGS += -lpthread | LINK_FLAGS += -lpthread | ||||
| @@ -17,7 +17,6 @@ | |||||
| #pragma once | #pragma once | ||||
| #define HAVE_ALIGNED_ALLOC 1 | #define HAVE_ALIGNED_ALLOC 1 | ||||
| #define HAVE_DLFCN_H 1 | |||||
| #define HAVE_FTS_H 1 | #define HAVE_FTS_H 1 | ||||
| #define HAVE_GL 1 | #define HAVE_GL 1 | ||||
| #define HAVE_GL_GL_H 1 | #define HAVE_GL_GL_H 1 | ||||
| @@ -33,10 +32,15 @@ | |||||
| #define HAVE_SYS_STAT_H 1 | #define HAVE_SYS_STAT_H 1 | ||||
| #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_TYPES_H 1 | ||||
| #define HAVE_UNISTD_H 1 | #define HAVE_UNISTD_H 1 | ||||
| #define HAVE_WINDOWS_H 1 | |||||
| #define STDC_HEADERS 1 | #define STDC_HEADERS 1 | ||||
| #define USE_THREADS 1 | #define USE_THREADS 1 | ||||
| #define HAVE_DLFCN_H 1 | |||||
| #ifdef WIN32 | |||||
| # define HAVE_WINDOWS_H 1 | |||||
| #endif | |||||
| // GLES stuff | // GLES stuff | ||||
| /* | /* | ||||
| #define HAVE_GLES_GL_H 1 | #define HAVE_GLES_GL_H 1 | ||||