electro-smith / DaisySP

A Powerful DSP Library in C++
https://www.electro-smith.com/daisy
Other
883 stars 139 forks source link

Enable compilation on native host #74

Closed zeroisnan closed 3 years ago

zeroisnan commented 3 years ago

Hello!

From the project description and comments within the code, I understood you want DaisySP to be platform independent.

I had this idea I could plug DaisySP into the VCV Rack plugin development flow, and use VCV as a sort of rapid prototyping platform/virtual bench for DSP cores developed with DaisySP, and move to Daisy HW once I have done enough debugging/cleanup.

To achieve this I had to implement very minimal changes to the DaisySP codebase:

For reference, this is the Makefile for the VCV plugin build. It is the Makefile shipped with the plugin template, I only had to append the search paths for the DaisySP include and module files.

# If RACK_DIR is not defined when calling the Makefile, default to two directories above
RACK_DIR ?= <path to Rack SDK>

DAISYSP_DIR = <path to DaisySP>

# FLAGS will be passed to both the C and C++ compiler
FLAGS += -I$(DAISYSP_DIR) -I$(DAISYSP_DIR)/modules
CFLAGS +=
CXXFLAGS +=

# Careful about linking to shared libraries, since you can't assume much about the user's environment and library search path.
# Static libraries are fine, but they should be added to this plugin's build system.
LDFLAGS +=

# Add .cpp files to the build
SOURCES += $(wildcard src/*.cpp)
SOURCES += $(wildcard $(DAISYSP_DIR)/modules/*.cpp)

# Add files to the ZIP package when running `make dist`
# The compiled plugin and "plugin.json" are automatically added.
DISTRIBUTABLES += res
DISTRIBUTABLES += $(wildcard LICENSE*)

# Include the Rack plugin Makefile framework
include $(RACK_DIR)/plugin.mk

I hope this could be useful for the DaisySP users and developers.

Best, nico