Browse Source

prepare for Linux port (can build lib and shared_lib targets)

pull/1639/head
bsp2 6 years ago
parent
commit
60aa9ec138
19 changed files with 198 additions and 18 deletions
  1. BIN
      dep/dep.7z
  2. +18
    -1
      include/plugin.hpp
  3. +14
    -4
      make.objects
  4. +37
    -0
      makefile.linux
  5. +5
    -5
      makefile.msvc
  6. +26
    -0
      makefile_lib.linux
  7. +34
    -0
      makefile_shared_lib.linux
  8. +10
    -0
      makefile_vst_effect.linux
  9. +2
    -1
      makefile_vst_effect.msvc
  10. +8
    -0
      makefile_vst_instr.linux
  11. +1
    -1
      makefile_vst_instr.msvc
  12. +2
    -0
      src/engine.cpp
  13. +3
    -3
      src/plugin.cpp
  14. +1
    -1
      src/vst2_main.cpp
  15. +2
    -2
      src/window.cpp
  16. +18
    -0
      vst2_common_linux.mk
  17. +3
    -0
      vst2_common_linux_post.mk
  18. +14
    -0
      vst2_common_linux_pre.mk
  19. +0
    -0
      vst2_common_msvc.mk

BIN
dep/dep.7z View File


+ 18
- 1
include/plugin.hpp View File

@@ -4,6 +4,7 @@
#include <stdio.h> // debug
#include <list>
#include "tags.hpp"
#include "util/common.hpp"


#define RACK_PLUGIN_INIT_ID_INTERNAL p->slug = TOSTRING(SLUG); p->version = TOSTRING(VERSION)
@@ -26,7 +27,11 @@ extern void vst2_handle_ui_param (int uniqueParamId, float normValue);
extern void vst2_queue_param_sync (int _uniqueParamId, float _value, bool _bNormalized);

#define RACK_PLUGIN_DECLARE(pluginname)
#ifdef _MSC_VER
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p)
#else
#define RACK_PLUGIN_INIT(pluginname) extern "C" void CONCAT(init_plugin_, pluginname) (rack::Plugin *p)
#endif // _MSC_VER
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL

#else
@@ -87,7 +92,11 @@ RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p)
#else
// Statically linked plugin build
#define RACK_PLUGIN_DECLARE(pluginname)
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p)
#ifdef _MSC_VER
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p)
#else
#define RACK_PLUGIN_INIT(pluginname) extern "C" void CONCAT(init_plugin_, pluginname) (rack::Plugin *p)
#endif
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL
#endif // RACK_PLUGIN_SHARED
#endif // RACK_PLUGIN_SHARED_LIB_BUILD
@@ -107,9 +116,17 @@ RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p)
#define RACK_PLUGIN_INIT_MANUAL(url) p->manual = url
#define RACK_PLUGIN_INIT_VERSION(ver) p->version = ver

#ifdef _MSC_VER
#define RACK_PLUGIN_MODEL_DECLARE(pluginname, modelname) extern Model *create_model_##pluginname##_##modelname##(void)
#define RACK_PLUGIN_MODEL_INIT(pluginname, modelname) Model *create_model_##pluginname##_##modelname##(void)
#define RACK_PLUGIN_MODEL_ADD(pluginname, modelname) p->addModel(create_model_##pluginname##_##modelname##())
#else
#define CONCAT_USCORE_LITERAL(x, y) x ## _ ## y
#define CONCAT_USCORE(x, y) CONCAT_USCORE_LITERAL(x, y)
#define RACK_PLUGIN_MODEL_DECLARE(pluginname, modelname) extern Model *CONCAT(create_model_, CONCAT_USCORE(pluginname, modelname))(void)
#define RACK_PLUGIN_MODEL_INIT(pluginname, modelname) Model *CONCAT(create_model_, CONCAT_USCORE(pluginname, modelname))(void)
#define RACK_PLUGIN_MODEL_ADD(pluginname, modelname) p->addModel(CONCAT(create_model_, CONCAT_USCORE(pluginname, modelname))())
#endif // _MSC_VER


namespace rack {


+ 14
- 4
make.objects View File

@@ -1,9 +1,10 @@
COMMON_OBJ= \
COMMON_DEP_OBJ= \
dep/jpommier-pffft-29e4f76ac53b/fftpack.o \
dep/jpommier-pffft-29e4f76ac53b/pffft.o \
dep/nanovg/src/nanovg.o \
dep/osdialog/osdialog.o \
dep/osdialog/osdialog_win.o \
dep/osdialog/osdialog.o

COMMON_OBJ= \
src/app/app.o \
src/app/AudioWidget.o \
src/app/CircularShadow.o \
@@ -84,6 +85,9 @@ COMMON_OBJ= \

# src/keyboard.o

COMMON_OBJ+=$(COMMON_DEP_OBJ)


HOST_OBJ= \
src/Core/AudioInterface.o \
src/Core/Blank.o \
@@ -101,11 +105,17 @@ LIB_OBJ= \
LIB_OBJ_WIN= \
src/util/dirent_win32/dirent.o \
dep/lglw/lglw_windows.o \
dep/lglw/lglw_windows_cpp.o
dep/lglw/lglw_windows_cpp.o \
dep/osdialog/osdialog_win.o

LIB_OBJ_LINUX= \
dep/lglw/lglw_linux.o \
dep/osdialog/osdialog_gtk2.o

SHARED_LIB_OBJ= \
$(COMMON_OBJ)


MAIN_OBJ= \
src/vst2_main.o \
src/main.o


+ 37
- 0
makefile.linux View File

@@ -0,0 +1,37 @@
#
# Makefile for VCV rack lib + GCC
#
#

#NUM_JOBS=20
NUM_JOBS=1

.PHONY: bin
bin: vst

.PHONY: lib
lib:
make -f makefile_lib.linux bin -j $(NUM_JOBS)

.PHONY: shared_lib
shared_lib:
make -f makefile_shared_lib.linux bin -j $(NUM_JOBS) && mv Rack_shared.a plugins/

.PHONY: vst
vst: lib
rm -f src/vst2_main.o
make -f makefile_vst_instr.linux bin -j $(NUM_JOBS)
rm -f src/vst2_main.o
make -f makefile_vst_effect.linux bin -j $(NUM_JOBS)
mv veeseevstrack_instr.so vst2_bin/
mv veeseevstrack_effect.so vst2_bin/
@ls -l vst2_bin/veeseevstrack_instr.so
@ls -l vst2_bin/veeseevstrack_effect.so

.PHONY: clean
clean:
make -f makefile_lib.linux clean
make -f makefile_shared_lib.linux clean
make -f makefile_vst_instr.linux clean
make -f makefile_vst_effect.linux clean


+ 5
- 5
makefile.msvc View File

@@ -5,29 +5,29 @@

NUM_JOBS=20

.PHONY:
.PHONY: bin
bin: vst

.PHONY:
.PHONY: lib
lib:
make -f makefile_lib.msvc bin -j $(NUM_JOBS)

.PHONY:
.PHONY: shared_lib
shared_lib:
make -f makefile_shared_lib.msvc bin -j $(NUM_JOBS) && mv Rack_shared.lib plugins/

.PHONY:
.PHONY: vst
vst: lib
rm -f src/vst2_main.o
make -f makefile_vst_instr.msvc bin -j $(NUM_JOBS)
rm -f src/vst2_main.o
make -f makefile_vst_effect.msvc bin -j $(NUM_JOBS)
# (note) cannot use both instrument and effect plugin at the same time!
mv veeseevstrack_instr.dll vst2_bin/
mv veeseevstrack_effect.dll vst2_bin/
@ls -l vst2_bin/veeseevstrack_instr.dll
@ls -l vst2_bin/veeseevstrack_effect.dll

.PHONY: clean
clean:
make -f makefile_lib.msvc clean
make -f makefile_shared_lib.msvc clean


+ 26
- 0
makefile_lib.linux View File

@@ -0,0 +1,26 @@
#
# Makefile for VCV rack lib + GCC
#
#

include dep/yac/install_linux.mk

TARGET_BASENAME=Rack

EXTRAFLAGS= -DVERSION=0.6.1 -DARCH_LIN -D_USE_MATH_DEFINES -DRACK_HOST -DUSE_VST2 -Iinclude/ -Idep/include -Idep/

# for osdialog:
EXTRAFLAGS+= `pkg-config gtk+-2.0 --cflags`

EXTRALIBS+=

# need to link these later on:
#jansson.a

PLAF_OBJ=

include make.objects

ALL_OBJ=$(LIB_OBJ) $(LIB_OBJ_LINUX)

include dep/yac/staticlib_linux.mk

+ 34
- 0
makefile_shared_lib.linux View File

@@ -0,0 +1,34 @@
#
# Makefile for VCV rack shared lib + GCC
#
#

include dep/yac/install_linux.mk

TARGET_BASENAME=Rack_shared

EXTRAFLAGS= -DVERSION=0.6.1 -DARCH_LIN -D_USE_MATH_DEFINES -DRACK_PLUGIN -DRACK_PLUGIN_SHARED -DUSE_VST2 -Iinclude/ -Idep/include -Idep/
EXTRAFLAGS+= -DRACK_PLUGIN_SHARED_LIB_BUILD

# for osdialog:
EXTRAFLAGS+= `pkg-config gtk+-2.0 --cflags`

ifeq ($(BUILD_64),y)
EXTRALIBS_DEP= dep/lib/linux_gcc/x64
else
EXTRALIBS_DEP= dep/lib/linux_gcc/x86
endif

# need to link these later on:
#EXTRALIBS+= `pkg-config gtk+-2.0 --libs`
#EXTRALIBS+= $(EXTRALIBS_DEP)/jansson.a
#EXTRALIBS+= $(EXTRALIBS_DEP)/glew.a
#libspeexdsp.a

PLAF_OBJ=

include make.objects

ALL_OBJ=$(SHARED_LIB_OBJ) $(LIB_OBJ_LINUX)

include dep/yac/staticlib_linux.mk

+ 10
- 0
makefile_vst_effect.linux View File

@@ -0,0 +1,10 @@

PLUGIN_DIR=plugins/community/repos/

include dep/yac/install_linux.mk

TARGET_BASENAME=veeseevstrack_effect

EXTRAFLAGS+= -DVST2_EFFECT

include vst2_common_linux.mk

+ 2
- 1
makefile_vst_effect.msvc View File

@@ -6,4 +6,5 @@ include dep/yac/install_msvc.mk
TARGET_BASENAME=veeseevstrack_effect

EXTRAFLAGS+= -DVST2_EFFECT
include vst2_common.mk

include vst2_common_msvc.mk

+ 8
- 0
makefile_vst_instr.linux View File

@@ -0,0 +1,8 @@

PLUGIN_DIR=plugins/community/repos/

include dep/yac/install_linux.mk

TARGET_BASENAME=veeseevstrack_instr

include vst2_common_linux.mk

+ 1
- 1
makefile_vst_instr.msvc View File

@@ -5,4 +5,4 @@ include dep/yac/install_msvc.mk

TARGET_BASENAME=veeseevstrack_instr

include vst2_common.mk
include vst2_common_msvc.mk

+ 2
- 0
src/engine.cpp View File

@@ -114,10 +114,12 @@ static void engineStep() {
}

static void engineRun() {
#ifdef _MSC_VER
// Set CPU to flush-to-zero (FTZ) and denormals-are-zero (DAZ) mode
// https://software.intel.com/en-us/node/682949
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
_MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
#endif // _MSC_VER

// Every time the engine waits and locks a mutex, it steps this many frames
const int mutexSteps = 64;


+ 3
- 3
src/plugin.cpp View File

@@ -767,11 +767,11 @@ using namespace rack;

#ifdef USE_VST2
#ifdef ARCH_WIN
extern "C" extern long seed_initialized;
extern "C" { extern long seed_initialized; }
#else
extern "C" extern volatile char seed_initialized;
extern "C" { extern volatile char seed_initialized; }
#endif // ARCH_WIN
extern "C" extern volatile uint32_t hashtable_seed;
extern "C" { extern volatile uint32_t hashtable_seed; }
void vst2_set_shared_plugin_tls_globals(void) {
// Called in audio thread (see vst2_main.cpp:VSTPluginProcessReplacingFloat32())
for(Plugin *p : global->plugin.gPlugins) {


+ 1
- 1
src/vst2_main.cpp View File

@@ -18,7 +18,7 @@
/// created: 25Jun2018
/// changed: 26Jun2018, 27Jun2018, 29Jun2018, 01Jul2018, 02Jul2018, 06Jul2018, 13Jul2018
/// 26Jul2018, 04Aug2018, 05Aug2018, 06Aug2018, 07Aug2018, 09Aug2018, 11Aug2018
/// 18Aug2018, 19Aug2018, 05Sep2018, 06Sep2018
/// 18Aug2018, 19Aug2018, 05Sep2018, 06Sep2018, 10Oct2018
///
///



+ 2
- 2
src/window.cpp View File

@@ -38,8 +38,8 @@

#ifndef RACK_PLUGIN_SHARED_LIB_BUILD
extern void vst2_set_globals (void *_wrapper);
extern "C" extern void lglw_timer_cbk (lglw_t _lglw); // implemented in vst2_main.cpp
extern "C" extern void lglw_redraw_cbk (lglw_t _lglw); // implemented in vst2_main.cpp
extern "C" { extern void lglw_timer_cbk (lglw_t _lglw); } // implemented in vst2_main.cpp
extern "C" { extern void lglw_redraw_cbk (lglw_t _lglw); } // implemented in vst2_main.cpp
#else
void vst2_set_globals(void *) { }
void vst2_window_size_set(int, int) { }


+ 18
- 0
vst2_common_linux.mk View File

@@ -0,0 +1,18 @@
#
# Makefile for VCV rack VST2 plugin
#
#

EXTRAFLAGS+= -DVERSION=0.6.1 -D_USE_MATH_DEFINES -Iinclude/ -Idep/include -Idep/ -DUSE_VST2

include vst2_common_linux_pre.mk

include vst2_common_staticlibs.mk

PLAF_OBJ=

include make.objects

ALL_OBJ= $(MAIN_OBJ)

include vst2_common_linux_post.mk

+ 3
- 0
vst2_common_linux_post.mk View File

@@ -0,0 +1,3 @@
EXTRALIBS+= Rack.a

include dep/yac/sharedlib_linux.mk

+ 14
- 0
vst2_common_linux_pre.mk View File

@@ -0,0 +1,14 @@
EXTRAFLAGS+= -DARCH_LIN
EXTRAFLAGS+= -I../../dev/vstsdk2.4/pluginterfaces/vst2.x/

EXTRALIBS=

ifeq ($(BUILD_64),y)
EXTRALIBS_DEP= dep/lib/linux_gcc/x64
else
EXTRALIBS_DEP= dep/lib/linux_gcc/x86
endif

EXTRALIBS+= $(EXTRALIBS_DEP)/libspeexdsp.a $(EXTRALIBS_DEP)/glew.a -lGL

plugin_lib = $(PLUGIN_DIR)/$(1)/$(1).a

vst2_common.mk → vst2_common_msvc.mk View File


Loading…
Cancel
Save