@@ -1,12 +1,15 @@ | |||
[submodule "plugins/Cardinal/Rack"] | |||
path = plugins/Cardinal/Rack | |||
path = src/Rack | |||
url = https://github.com/VCVRack/Rack.git | |||
[submodule "dpf"] | |||
path = dpf | |||
url = https://github.com/DISTRHO/DPF.git | |||
[submodule "plugins/Cardinal/mingw-std-threads"] | |||
path = plugins/Cardinal/mingw-std-threads | |||
path = src/mingw-std-threads | |||
url = https://github.com/meganz/mingw-std-threads.git | |||
[submodule "plugins/Cardinal/sse2neon"] | |||
path = plugins/Cardinal/sse2neon | |||
path = src/sse2neon | |||
url = https://github.com/DLTcollab/sse2neon.git | |||
[submodule "plugins/Fundamental"] | |||
path = plugins/Fundamental | |||
url = https://github.com/VCVRack/Fundamental.git |
@@ -6,18 +6,25 @@ | |||
include dpf/Makefile.base.mk | |||
all: dgl plugins gen | |||
all: cardinal deps dgl plugins gen | |||
# -------------------------------------------------------------- | |||
cardinal: deps dgl plugins | |||
$(MAKE) all -C src | |||
deps: | |||
$(MAKE) all -C deps | |||
dgl: | |||
$(MAKE) USE_NANOVG_FBO=true USE_RGBA=true -C dpf/dgl opengl | |||
# $(MAKE) opengl -C dpf/dgl USE_NANOVG_FBO=true USE_RGBA=true | |||
plugins: dgl | |||
$(MAKE) all -C plugins/Cardinal | |||
plugins: deps | |||
$(MAKE) all -C plugins | |||
ifneq ($(CROSS_COMPILING),true) | |||
gen: plugins dpf/utils/lv2_ttl_generator | |||
gen: cardinal dpf/utils/lv2_ttl_generator | |||
@$(CURDIR)/dpf/utils/generate-ttl.sh | |||
ifeq ($(MACOS),true) | |||
@$(CURDIR)/dpf/utils/generate-vst-bundles.sh | |||
@@ -32,19 +39,13 @@ endif | |||
# -------------------------------------------------------------- | |||
clean: | |||
$(MAKE) clean -C deps | |||
$(MAKE) clean -C dpf/dgl | |||
$(MAKE) clean -C dpf/utils/lv2-ttl-generator | |||
$(MAKE) clean -C plugins/Cardinal | |||
$(MAKE) clean -C plugins | |||
$(MAKE) clean -C src | |||
rm -rf bin build | |||
rm -rf plugins/Cardinal/Rack/dep/bin | |||
rm -rf plugins/Cardinal/Rack/dep/include | |||
rm -rf plugins/Cardinal/Rack/dep/lib | |||
rm -rf plugins/Cardinal/Rack/dep/share | |||
rm -rf plugins/Cardinal/Rack/dep/jansson-2.12 | |||
rm -rf plugins/Cardinal/Rack/dep/libarchive-3.4.3 | |||
rm -rf plugins/Cardinal/Rack/dep/speexdsp-SpeexDSP-1.2rc3 | |||
rm -rf plugins/Cardinal/Rack/dep/zstd-1.4.5 | |||
# -------------------------------------------------------------- | |||
.PHONY: plugins | |||
.PHONY: deps plugins |
@@ -0,0 +1,149 @@ | |||
#!/usr/bin/make -f | |||
# Makefile for Cardinal # | |||
# --------------------- # | |||
# Created by falkTX | |||
# | |||
DEP_PATH = $(abspath ../src/Rack/dep) | |||
# -------------------------------------------------------------- | |||
# Import base definitions | |||
USE_NANOVG_FBO = true | |||
USE_RGBA = true | |||
include ../dpf/Makefile.base.mk | |||
# -------------------------------------------------------------- | |||
# override VCV arch.mk stuff so we can build more architectures | |||
ifeq ($(CPU_ARM),true) | |||
ARCH_NAME = arm | |||
MACHINE = i686-bring-forth-the-rack | |||
else ifeq ($(CPU_ARM64),true) | |||
ARCH_NAME = arm64 | |||
MACHINE = x86_64-bring-forth-the-rack | |||
else ifeq ($(CPU_AARCH64),true) | |||
ARCH_NAME = aarch64 | |||
MACHINE = x86_64-bring-forth-the-rack | |||
else | |||
MACHINE = $(TARGET_MACHINE) | |||
endif | |||
ifneq ($(MACOS_OR_WINDOWS),true) | |||
MACHINE_SUFFIX = -linux | |||
endif | |||
# NOTE speex fails to build when neon is enabled | |||
CONFIGURE = ./configure --prefix="$(DEP_PATH)" --host=$(TARGET_MACHINE) --enable-neon=no | |||
# -------------------------------------------------------------- | |||
# Fix up cmake | |||
SPACE = | |||
SPACE += | |||
CMAKE = cmake | |||
ifneq (,$(findstring -arch$(SPACE),$(CXXFLAGS))) | |||
CMAKE += -DCMAKE_OSX_ARCHITECTURES='$(subst $(SPACE),;,$(subst -arch=,,$(filter -arch=%,$(subst -arch$(SPACE),-arch=,$(CXXFLAGS)))))' | |||
endif | |||
ifneq (,$(findstring -mmacosx-version-min=,$(CXXFLAGS))) | |||
CMAKE += -DCMAKE_OSX_DEPLOYMENT_TARGET=$(subst -mmacosx-version-min=,,$(filter -mmacosx-version-min=%,$(CXXFLAGS))) | |||
endif | |||
ifeq ($(WINDOWS),true) | |||
CMAKE += -G 'Unix Makefiles' | |||
CMAKE += -DCMAKE_RC_COMPILER=$(subst gcc,windres,$(CC)) | |||
CMAKE += -DCMAKE_SYSTEM_NAME=Windows | |||
endif | |||
ifeq ($(DEBUG),true) | |||
CMAKE += -DCMAKE_BUILD_TYPE=Debug | |||
else | |||
CMAKE += -DCMAKE_BUILD_TYPE=Release | |||
endif | |||
CMAKE += -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX='$(DEP_PATH)' | |||
# -------------------------------------------------------------- | |||
# VCV internal dependencies target | |||
$(DEP_PATH)/lib/%.a: | |||
$(MAKE) \ | |||
ARCH_NAME=$(ARCH_NAME) \ | |||
CFLAGS="$(BUILD_C_FLAGS)" \ | |||
CXXFLAGS="$(BUILD_CXX_FLAGS)" \ | |||
LDFLAGS="$(LINK_FLAGS)" \ | |||
CMAKE="$(CMAKE)" \ | |||
CONFIGURE="$(CONFIGURE)" \ | |||
DEP_FLAGS="$(BASE_FLAGS)" \ | |||
DEP_MAC_SDK_FLAGS= \ | |||
MACHINE=$(MACHINE)$(MACHINE_SUFFIX) \ | |||
-C $(DEP_PATH) lib/$*.a | |||
$(DEP_PATH)/lib/libarchive.a: $(DEP_PATH)/lib/libzstd.a | |||
$(DEP_PATH)/lib/libarchive_static.a: $(DEP_PATH)/lib/libzstd.a | |||
ifeq ($(MACOS),true) | |||
# zstd cmake is borked, see https://github.com/facebook/zstd/issues/1401 | |||
$(DEP_PATH)/lib/libzstd.a: $(DEP_PATH)/zstd-1.4.5/.stamp-patched | |||
$(DEP_PATH)/zstd-1.4.5/.stamp-patched: | |||
$(MAKE) -C $(DEP_PATH) zstd-1.4.5 | |||
sed -i -e "56,66d" $(DEP_PATH)/zstd-1.4.5/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake | |||
touch $@ | |||
endif | |||
# libsamplerate fails to link its tests in some systems | |||
$(DEP_PATH)/libsamplerate-0.1.9: | |||
$(MAKE) -C $(DEP_PATH) libsamplerate-0.1.9 | |||
$(DEP_PATH)/lib/libsamplerate.a: $(DEP_PATH)/libsamplerate-0.1.9 | |||
cd $(DEP_PATH)/libsamplerate-0.1.9 && $(CONFIGURE) --disable-fftw --disable-sndfile | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/termination_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/simple_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/misc_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/callback_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/reset_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/varispeed_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/float_short_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/multi_channel_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/callback_hang_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/src-evaluate | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/throughput_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/multichan_throughput_test | |||
touch $(DEP_PATH)/libsamplerate-0.1.9/tests/downsample_test | |||
$(MAKE) -C $(DEP_PATH)/libsamplerate-0.1.9 | |||
$(MAKE) -C $(DEP_PATH)/libsamplerate-0.1.9 install | |||
# -------------------------------------------------------------- | |||
# Build targets | |||
TARGETS += $(DEP_PATH)/lib/libjansson.a | |||
TARGETS += $(DEP_PATH)/lib/libsamplerate.a | |||
TARGETS += $(DEP_PATH)/lib/libspeexdsp.a | |||
ifeq ($(WINDOWS),true) | |||
TARGETS += $(DEP_PATH)/lib/libarchive_static.a | |||
else | |||
TARGETS += $(DEP_PATH)/lib/libarchive.a | |||
endif | |||
TARGETS += $(DEP_PATH)/lib/libzstd.a | |||
all: $(TARGETS) | |||
clean: | |||
rm -f $(TARGETS) | |||
rm -rf $(DEP_PATH)/bin | |||
rm -rf $(DEP_PATH)/include | |||
rm -rf $(DEP_PATH)/lib | |||
rm -rf $(DEP_PATH)/share | |||
rm -rf $(DEP_PATH)/jansson-2.12 | |||
rm -rf $(DEP_PATH)/libarchive-3.4.3 | |||
rm -rf $(DEP_PATH)/libsamplerate-0.1.9 | |||
rm -rf $(DEP_PATH)/speexdsp-SpeexDSP-1.2rc3 | |||
rm -rf $(DEP_PATH)/zstd-1.4.5 | |||
# -------------------------------------------------------------- |
@@ -1 +1 @@ | |||
Subproject commit 2711cbefa481c3ebed1ca9dbda190bf915d8b0b9 | |||
Subproject commit 2f1b5127cc2da84e3c3f155808efb34d650b3489 |
@@ -1,24 +0,0 @@ | |||
/* | |||
* DISTRHO Cardinal Plugin | |||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
* published by the Free Software Foundation; either version 3 of | |||
* the License, or any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* For a full copy of the GNU General Public License see the LICENSE file. | |||
*/ | |||
#pragma once | |||
#ifdef NDEBUG | |||
# undef DEBUG | |||
#endif | |||
#include "OpenGL.hpp" |
@@ -1 +0,0 @@ | |||
Subproject commit 042a9ce026d253700ea14e340182900162ab4653 |
@@ -0,0 +1 @@ | |||
Subproject commit baaf463db2bcd9d4f577f209b3795d7321a174fe |
@@ -0,0 +1,99 @@ | |||
#!/usr/bin/make -f | |||
# Makefile for Cardinal # | |||
# --------------------- # | |||
# Created by falkTX | |||
# | |||
DEP_PATH = $(abspath ../src/Rack/dep) | |||
# -------------------------------------------------------------- | |||
# Import base definitions | |||
USE_NANOVG_FBO = true | |||
USE_RGBA = true | |||
include ../dpf/Makefile.base.mk | |||
# -------------------------------------------------------------- | |||
# Files to build | |||
PLUGIN_FILES = plugins.cpp | |||
# Fundamental | |||
PLUGIN_FILES += $(filter-out Fundamental/src/plugin.cpp,$(wildcard Fundamental/src/*.cpp)) | |||
# -------------------------------------------------------------- | |||
# Build setup | |||
BUILD_DIR = ../build/plugins | |||
PLUGIN_OBJS = $(PLUGIN_FILES:%=$(BUILD_DIR)/%.o) | |||
ifeq ($(MACOS),true) | |||
BASE_FLAGS += -DARCH_MAC | |||
else ifeq ($(WINDOWS),true) | |||
BASE_FLAGS += -DARCH_WIN | |||
else | |||
BASE_FLAGS += -DARCH_LIN | |||
endif | |||
BUILD_C_FLAGS += -std=gnu11 | |||
BASE_FLAGS += -I../dpf/dgl/src/nanovg | |||
BASE_FLAGS += -I../src | |||
BASE_FLAGS += -I../src/neon-compat | |||
BASE_FLAGS += -I../src/Rack/include | |||
BASE_FLAGS += -I../src/Rack/dep/include | |||
# BASE_FLAGS += -I../src/Rack/dep/filesystem/include | |||
# BASE_FLAGS += -I../src/Rack/dep/fuzzysearchdatabase/src | |||
BASE_FLAGS += -I../src/Rack/dep/glfw/include | |||
BASE_FLAGS += -I../src/Rack/dep/nanosvg/src | |||
# BASE_FLAGS += -I../src/Rack/dep/osdialog | |||
BASE_FLAGS += -I../src/Rack/dep/oui-blendish | |||
BASE_FLAGS += -I../src/Rack/dep/pffft | |||
BASE_FLAGS += -pthread | |||
ifeq ($(WINDOWS),true) | |||
BASE_FLAGS += -Imingw-compat | |||
BASE_FLAGS += -Imingw-std-threads | |||
endif | |||
# -------------------------------------------------------------- | |||
# FIXME lots of warnings from VCV side | |||
BASE_FLAGS += -Wno-unused-parameter | |||
BASE_FLAGS += -Wno-unused-variable | |||
# -------------------------------------------------------------- | |||
# Build targets | |||
TARGET = plugins.a | |||
all: $(TARGET) | |||
clean: | |||
rm -f $(TARGET) | |||
rm -rf $(BUILD_DIR) | |||
# -------------------------------------------------------------- | |||
# Build commands | |||
$(TARGET): $(PLUGIN_OBJS) | |||
@echo "Creating $@" | |||
$(SILENT)rm -f $@ | |||
$(SILENT)$(AR) crs $@ $^ | |||
$(BUILD_DIR)/plugins.cpp.o: plugins.cpp | |||
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
@echo "Compiling $<" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DpluginInstance=pluginInstance__Fundamental -c -o $@ | |||
$(BUILD_DIR)/Fundamental/%.cpp.o: Fundamental/%.cpp | |||
-@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" | |||
@echo "Compiling $<" | |||
$(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DpluginInstance=pluginInstance__Fundamental -c -o $@ | |||
# -------------------------------------------------------------- | |||
-include $(PLUGIN_OBJS:%.o=%.d) | |||
# -------------------------------------------------------------- |
@@ -0,0 +1,67 @@ | |||
/* | |||
* DISTRHO Cardinal Plugin | |||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
* published by the Free Software Foundation; either version 3 of | |||
* the License, or any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* For a full copy of the GNU General Public License see the LICENSE file. | |||
*/ | |||
#include <plugin.hpp> | |||
#include "Fundamental/src/plugin.hpp" | |||
Plugin* pluginInstance__Fundamental; | |||
namespace rack { | |||
namespace plugin { | |||
static void initStatic__Fundamental() | |||
{ | |||
Plugin* p = new Plugin; | |||
pluginInstance__Fundamental = p; | |||
p->addModel(modelVCO); | |||
p->addModel(modelVCO2); | |||
p->addModel(modelVCF); | |||
p->addModel(modelVCA_1); | |||
p->addModel(modelVCA); | |||
p->addModel(modelLFO); | |||
p->addModel(modelLFO2); | |||
p->addModel(modelDelay); | |||
p->addModel(modelADSR); | |||
p->addModel(modelVCMixer); | |||
p->addModel(model_8vert); | |||
p->addModel(modelUnity); | |||
p->addModel(modelMutes); | |||
p->addModel(modelPulses); | |||
p->addModel(modelScope); | |||
p->addModel(modelSEQ3); | |||
p->addModel(modelSequentialSwitch1); | |||
p->addModel(modelSequentialSwitch2); | |||
p->addModel(modelOctave); | |||
p->addModel(modelQuantizer); | |||
p->addModel(modelSplit); | |||
p->addModel(modelMerge); | |||
p->addModel(modelSum); | |||
p->addModel(modelViz); | |||
p->addModel(modelMidSide); | |||
p->addModel(modelNoise); | |||
p->addModel(modelRandom); | |||
plugins.push_back(p); | |||
} | |||
void initStaticPlugins() | |||
{ | |||
initStatic__Fundamental(); | |||
} | |||
} | |||
} |
@@ -40,6 +40,12 @@ | |||
#endif | |||
#include "DistrhoPlugin.hpp" | |||
namespace rack { | |||
namespace plugin { | |||
void initStaticPlugins(); | |||
} | |||
} | |||
START_NAMESPACE_DISTRHO | |||
// ----------------------------------------------------------------------------------------------------------- | |||
@@ -111,6 +117,8 @@ struct Initializer { | |||
midi::init(); // does nothing | |||
plugin::init(); | |||
ui::init(); | |||
plugin::initStaticPlugins(); | |||
} | |||
~Initializer() |
@@ -0,0 +1,124 @@ | |||
/* | |||
* DISTRHO Cardinal Plugin | |||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
* published by the Free Software Foundation; either version 3 of | |||
* the License, or any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* For a full copy of the GNU General Public License see the LICENSE file. | |||
*/ | |||
// this file matches the top of `OpenGL.hpp` provided by DPF | |||
#pragma once | |||
#ifdef NDEBUG | |||
# undef DEBUG | |||
#endif | |||
/* Check OS */ | |||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) | |||
# define DISTRHO_OS_WINDOWS 1 | |||
#else | |||
# if defined(__APPLE__) | |||
# define DISTRHO_OS_MAC 1 | |||
# endif | |||
#endif | |||
// ----------------------------------------------------------------------- | |||
// Fix OpenGL includes for Windows, based on glfw code (part 1) | |||
#undef DGL_CALLBACK_DEFINED | |||
#undef DGL_WINGDIAPI_DEFINED | |||
#ifdef DISTRHO_OS_WINDOWS | |||
#ifndef APIENTRY | |||
# define APIENTRY __stdcall | |||
#endif // APIENTRY | |||
/* We need WINGDIAPI defined */ | |||
#ifndef WINGDIAPI | |||
# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__POCC__) | |||
# define WINGDIAPI __declspec(dllimport) | |||
# elif defined(__LCC__) | |||
# define WINGDIAPI __stdcall | |||
# else | |||
# define WINGDIAPI extern | |||
# endif | |||
# define DGL_WINGDIAPI_DEFINED | |||
#endif // WINGDIAPI | |||
/* Some <GL/glu.h> files also need CALLBACK defined */ | |||
#ifndef CALLBACK | |||
# if defined(_MSC_VER) | |||
# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS) | |||
# define CALLBACK __stdcall | |||
# else | |||
# define CALLBACK | |||
# endif | |||
# else | |||
# define CALLBACK __stdcall | |||
# endif | |||
# define DGL_CALLBACK_DEFINED | |||
#endif // CALLBACK | |||
/* Most GL/glu.h variants on Windows need wchar_t */ | |||
#include <cstddef> | |||
#endif // DISTRHO_OS_WINDOWS | |||
// ----------------------------------------------------------------------- | |||
// OpenGL includes | |||
#ifdef DISTRHO_OS_MAC | |||
# ifdef DGL_USE_OPENGL3 | |||
# include <OpenGL/gl3.h> | |||
# include <OpenGL/gl3ext.h> | |||
# else | |||
# include <OpenGL/gl.h> | |||
# endif | |||
#else | |||
# ifdef DISTRHO_OS_WINDOWS | |||
# define GL_GLEXT_PROTOTYPES | |||
# endif | |||
# ifndef __GLEW_H__ | |||
# include <GL/gl.h> | |||
# include <GL/glext.h> | |||
# endif | |||
#endif | |||
// ----------------------------------------------------------------------- | |||
// Missing OpenGL defines | |||
#if defined(GL_BGR_EXT) && !defined(GL_BGR) | |||
# define GL_BGR GL_BGR_EXT | |||
#endif | |||
#if defined(GL_BGRA_EXT) && !defined(GL_BGRA) | |||
# define GL_BGRA GL_BGRA_EXT | |||
#endif | |||
#ifndef GL_CLAMP_TO_BORDER | |||
# define GL_CLAMP_TO_BORDER 0x812D | |||
#endif | |||
// ----------------------------------------------------------------------- | |||
// Fix OpenGL includes for Windows, based on glfw code (part 2) | |||
#ifdef DGL_CALLBACK_DEFINED | |||
# undef CALLBACK | |||
# undef DGL_CALLBACK_DEFINED | |||
#endif | |||
#ifdef DGL_WINGDIAPI_DEFINED | |||
# undef WINGDIAPI | |||
# undef DGL_WINGDIAPI_DEFINED | |||
#endif |
@@ -25,7 +25,7 @@ FILES_UI = \ | |||
USE_NANOVG_FBO = true | |||
USE_RGBA = true | |||
include ../../dpf/Makefile.base.mk | |||
include ../dpf/Makefile.base.mk | |||
# -------------------------------------------------------------- | |||
# Files to build (VCV stuff) | |||
@@ -50,107 +50,26 @@ FILES_DSP += $(wildcard Rack/src/*/*.c) | |||
FILES_DSP += $(filter-out Rack/src/dep.cpp Rack/src/discord.cpp Rack/src/gamepad.cpp Rack/src/keyboard.cpp Rack/src/library.cpp Rack/src/network.cpp Rack/src/rtaudio.cpp Rack/src/rtmidi.cpp, $(wildcard Rack/src/*.cpp)) | |||
FILES_DSP += $(filter-out Rack/src/window/Window.cpp, $(wildcard Rack/src/*/*.cpp)) | |||
EXTRA_DEPENDENCIES += Rack/dep/lib/libjansson.a | |||
EXTRA_DEPENDENCIES += Rack/dep/lib/libspeexdsp.a | |||
ifeq ($(WINDOWS),true) | |||
EXTRA_DEPENDENCIES += Rack/dep/lib/libarchive_static.a | |||
else | |||
EXTRA_DEPENDENCIES += Rack/dep/lib/libarchive.a | |||
endif | |||
EXTRA_DEPENDENCIES += Rack/dep/lib/libzstd.a | |||
EXTRA_LIBS = $(EXTRA_DEPENDENCIES) | |||
# -------------------------------------------------------------- | |||
# Do some magic | |||
include ../../dpf/Makefile.plugins.mk | |||
# -------------------------------------------------------------- | |||
# override VCV arch.mk stuff so we can build more architectures | |||
DEP_PATH = $(abspath Rack/dep) | |||
ifeq ($(CPU_ARM),true) | |||
ARCH_NAME = arm | |||
MACHINE = i686-bring-forth-the-rack | |||
else ifeq ($(CPU_ARM64),true) | |||
ARCH_NAME = arm64 | |||
MACHINE = x86_64-bring-forth-the-rack | |||
else ifeq ($(CPU_AARCH64),true) | |||
ARCH_NAME = aarch64 | |||
MACHINE = x86_64-bring-forth-the-rack | |||
else | |||
MACHINE = $(TARGET_MACHINE) | |||
endif | |||
ifneq ($(MACOS_OR_WINDOWS),true) | |||
MACHINE_SUFFIX = -linux | |||
endif | |||
# NOTE speex fails to build when neon is enabled | |||
CONFIGURE = ./configure --prefix="$(DEP_PATH)" --host=$(TARGET_MACHINE) --enable-neon=no | |||
# -------------------------------------------------------------- | |||
# Fix up cmake | |||
SPACE = | |||
SPACE += | |||
CMAKE = cmake | |||
ifneq (,$(findstring -arch$(SPACE),$(CXXFLAGS))) | |||
CMAKE += -DCMAKE_OSX_ARCHITECTURES='$(subst $(SPACE),;,$(subst -arch=,,$(filter -arch=%,$(subst -arch$(SPACE),-arch=,$(CXXFLAGS)))))' | |||
endif | |||
ifneq (,$(findstring -mmacosx-version-min=,$(CXXFLAGS))) | |||
CMAKE += -DCMAKE_OSX_DEPLOYMENT_TARGET=$(subst -mmacosx-version-min=,,$(filter -mmacosx-version-min=%,$(CXXFLAGS))) | |||
endif | |||
# Extra libraries to link against | |||
EXTRA_LIBS = ../plugins/plugins.a | |||
EXTRA_LIBS += Rack/dep/lib/libjansson.a | |||
EXTRA_LIBS += Rack/dep/lib/libsamplerate.a | |||
EXTRA_LIBS += Rack/dep/lib/libspeexdsp.a | |||
ifeq ($(WINDOWS),true) | |||
CMAKE += -G 'Unix Makefiles' | |||
CMAKE += -DCMAKE_RC_COMPILER=$(subst gcc,windres,$(CC)) | |||
CMAKE += -DCMAKE_SYSTEM_NAME=Windows | |||
endif | |||
ifeq ($(DEBUG),true) | |||
CMAKE += -DCMAKE_BUILD_TYPE=Debug | |||
EXTRA_LIBS += Rack/dep/lib/libarchive_static.a | |||
else | |||
CMAKE += -DCMAKE_BUILD_TYPE=Release | |||
EXTRA_LIBS += Rack/dep/lib/libarchive.a | |||
endif | |||
CMAKE += -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_PREFIX='$(DEP_PATH)' | |||
EXTRA_LIBS += Rack/dep/lib/libzstd.a | |||
# -------------------------------------------------------------- | |||
# VCV internal dependencies target | |||
Rack/dep/lib/%.a: | |||
$(MAKE) \ | |||
ARCH_NAME=$(ARCH_NAME) \ | |||
CFLAGS="$(BUILD_C_FLAGS)" \ | |||
CXXFLAGS="$(BUILD_CXX_FLAGS)" \ | |||
LDFLAGS="$(LINK_FLAGS)" \ | |||
CMAKE="$(CMAKE)" \ | |||
CONFIGURE="$(CONFIGURE)" \ | |||
DEP_FLAGS="$(BASE_FLAGS)" \ | |||
DEP_MAC_SDK_FLAGS= \ | |||
MACHINE=$(MACHINE)$(MACHINE_SUFFIX) \ | |||
-C Rack/dep lib/$*.a | |||
Rack/dep/lib/libarchive.a: Rack/dep/lib/libzstd.a | |||
Rack/dep/lib/libarchive_static.a: Rack/dep/lib/libzstd.a | |||
ifeq ($(MACOS),true) | |||
# zstd cmake is borked, see https://github.com/facebook/zstd/issues/1401 | |||
Rack/dep/lib/libzstd.a: Rack/dep/zstd-1.4.5/.stamp-patched | |||
# Do some magic | |||
Rack/dep/zstd-1.4.5/.stamp-patched: | |||
$(MAKE) -C Rack/dep zstd-1.4.5 | |||
sed -i -e "56,66d" Rack/dep/zstd-1.4.5/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake | |||
touch $@ | |||
endif | |||
DPF_PATH = ../dpf | |||
DPF_TARGET_DIR = ../bin | |||
include ../dpf/Makefile.plugins.mk | |||
# -------------------------------------------------------------- | |||
# Extra flags for VCV stuff | |||
@@ -163,18 +82,8 @@ else | |||
BASE_FLAGS += -DARCH_LIN | |||
endif | |||
BUILD_C_FLAGS += -std=gnu11 | |||
# temporary macro just to get the ball rolling | |||
ifeq ($(EXE_WRAPPER),wine) | |||
SOURCE_DIR = Z:$(subst /,\\,$(CURDIR)) | |||
else | |||
SOURCE_DIR = $(CURDIR) | |||
endif | |||
BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_SOURCE_DIR='"$(SOURCE_DIR)"' | |||
BASE_FLAGS += -D_APP_VERSION=Cardinal | |||
BASE_FLAGS += -I$(DPF_PATH)/dgl/src/nanovg | |||
BASE_FLAGS += -I../dpf/dgl/src/nanovg | |||
BASE_FLAGS += -IRack/include | |||
BASE_FLAGS += -IRack/dep/include | |||
BASE_FLAGS += -IRack/dep/filesystem/include | |||
@@ -184,20 +93,25 @@ BASE_FLAGS += -IRack/dep/nanosvg/src | |||
BASE_FLAGS += -IRack/dep/osdialog | |||
BASE_FLAGS += -IRack/dep/oui-blendish | |||
BASE_FLAGS += -IRack/dep/pffft | |||
BASE_FLAGS += -pthread | |||
BASE_FLAGS += -Ineon-compat | |||
BASE_FLAGS += -pthread | |||
ifeq ($(WINDOWS),true) | |||
BASE_FLAGS += -Imingw-compat | |||
BUILD_CXX_FLAGS += -Imingw-std-threads | |||
BASE_FLAGS += -Imingw-compat | |||
BASE_FLAGS += -Imingw-std-threads | |||
endif | |||
BUILD_C_FLAGS += -std=gnu11 | |||
# -------------------------------------------------------------- | |||
# FIXME lots of warnings from VCV side | |||
BASE_FLAGS += -Wno-unused-parameter | |||
BASE_FLAGS += -Wno-unused-variable | |||
# -------------------------------------------------------------- | |||
# extra linker flags | |||
ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) | |||
LINK_FLAGS += -ldl | |||
endif | |||
@@ -209,10 +123,19 @@ LINK_FLAGS += -ldbghelp -lshlwapi | |||
endif | |||
# -------------------------------------------------------------- | |||
# Enable all possible plugin types | |||
# temporary macro just to get the ball rolling | |||
ifeq ($(EXE_WRAPPER),wine) | |||
SOURCE_DIR = Z:$(subst /,\\,$(CURDIR)) | |||
else | |||
SOURCE_DIR = $(CURDIR) | |||
endif | |||
TARGETS = jack lv2 vst2 vst3 | |||
BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_SOURCE_DIR='"$(SOURCE_DIR)"' | |||
# -------------------------------------------------------------- | |||
# Enable all possible plugin types | |||
all: $(TARGETS) | |||
all: jack lv2 vst2 vst3 | |||
# -------------------------------------------------------------- |
@@ -0,0 +1 @@ | |||
Subproject commit 420e781fa7bfdcf47163ab1fa976c171c91cb92b |
@@ -17,6 +17,7 @@ | |||
#ifdef NDEBUG | |||
# undef DEBUG | |||
#endif | |||
#include "DistrhoUI.hpp" | |||
namespace rack { |
@@ -7,8 +7,14 @@ | |||
#endif | |||
#include "OpenGL.hpp" | |||
#define BLENDISH_IMPLEMENTATION | |||
#include <blendish.h> | |||
#ifdef DEBUG | |||
// fix blendish build, missing symbol in debug mode | |||
extern "C" { | |||
float bnd_clamp(float v, float mn, float mx) { | |||
return (v > mx)?mx:(v < mn)?mn:v; | |||
} | |||
} | |||
#endif | |||
#define NANOSVG_IMPLEMENTATION | |||
#define NANOSVG_ALL_COLOR_KEYWORDS |