Mercurial > hg > piper-vamp-js
changeset 120:975719b38bdb
Merge the EM and Linux build files
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Thu, 10 Nov 2016 11:34:04 +0000 |
parents | bab85491f6e1 |
children | d1a99d44812b |
files | Makefile.example.em Makefile.example.linux Makefile.inc Makefile.inc.em |
diffstat | 4 files changed, 107 insertions(+), 129 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.example.em Thu Nov 10 11:01:08 2016 +0000 +++ b/Makefile.example.em Thu Nov 10 11:34:04 2016 +0000 @@ -13,4 +13,4 @@ MODULE_SOURCE := examples/vamp-example-plugins.cpp -include Makefile.inc.em +include Makefile.inc
--- a/Makefile.example.linux Thu Nov 10 11:01:08 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ - -ADAPTER_HEADERS := PiperAdapter.h PiperPluginLibrary.h -ADAPTER_SOURCES := PiperPluginLibrary.cpp - -SDK_DIR := ../vamp-plugin-sdk -PIPERCPP_DIR := ../piper-cpp - -PLUGIN_SOURCES := \ - $(SDK_DIR)/examples/ZeroCrossing.cpp \ - $(SDK_DIR)/examples/SpectralCentroid.cpp \ - $(SDK_DIR)/examples/PercussionOnsetDetector.cpp \ - $(SDK_DIR)/examples/FixedTempoEstimator.cpp \ - $(SDK_DIR)/examples/AmplitudeFollower.cpp \ - $(SDK_DIR)/examples/PowerSpectrum.cpp - -OTHER_SOURCES := \ - $(PIPERCPP_DIR)/json11/json11.cpp - -SDK_LIBS := \ - $(SDK_DIR)/libvamp-hostsdk.a \ - $(SDK_DIR)/libvamp-sdk.a - -EXAMPLE_EXT := .so -EXAMPLE := example$(EXAMPLE_EXT) -EXAMPLE_SOURCE := example.cpp -EXAMPLE_SOURCES := $(EXAMPLE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(OTHER_SOURCES) -EXAMPLE_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=example.so -Wl,-z,defs -Wl,--version-script=piper.map - -TEST := quick-test -TEST_SOURCE := quick-test.cpp -TEST_LDFLAGS := -ldl - -CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra -g -INCPATH := -I$(SDK_DIR) -I$(PIPERCPP_DIR) $(INCPATH) - -all: $(EXAMPLE) $(TEST) - ./$(TEST) - -$(EXAMPLE): $(EXAMPLE_SOURCES) $(ADAPTER_HEADERS) $(SDK_LIBS) - $(CXX) $(CXXFLAGS) $(INCPATH) -o $(EXAMPLE) \ - $(EXAMPLE_SOURCES) $(SDK_LIBS) $(EXAMPLE_LDFLAGS) - -$(TEST): $(TEST_SOURCE) - $(CXX) $(CXXFLAGS) -o $(TEST) $(TEST_SOURCE) $(TEST_LDFLAGS) - -clean: - rm -f $(EXAMPLE) $(TEST)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile.inc Thu Nov 10 11:34:04 2016 +0000 @@ -0,0 +1,106 @@ + +default: help + +help: + @echo + @echo "Supported make targets:" + @echo + @echo "$$ make em" + @echo " - build Javascript module using Emscripten" + @echo "$$ make linux" + @echo " - build native-code module on Linux (mostly for testing)" + @echo "$$ make clean" + @echo " - remove intermediate build files, but not targets" + @echo + @echo "Note: when switching from one target to another, make clean first" + @echo + +SRC_DIR := src +SDK_DIR := ../vamp-plugin-sdk +PIPERCPP_DIR := ../piper-cpp + +ADAPTER_HEADERS := \ + $(SRC_DIR)/PiperAdapter.h \ + $(SRC_DIR)/PiperPluginLibrary.h +ADAPTER_SOURCES := \ + $(SRC_DIR)/PiperPluginLibrary.cpp + +SDK_SOURCES := \ + $(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \ + $(SDK_DIR)/src/vamp-hostsdk/Files.cpp \ + $(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \ + $(SDK_DIR)/src/vamp-sdk/RealTime.cpp \ + $(SDK_DIR)/src/vamp-sdk/FFT.cpp + +OTHER_SOURCES := \ + $(PIPERCPP_DIR)/json11/json11.cpp + +EM_MODULE_EXT := .js +EM_MODULE := $(MODULE_NAME)$(EM_MODULE_EXT) +EM_MODULE_SYMBOL := $(MODULE_NAME)Module + +SO_MODULE_EXT := .so +SO_MODULE := $(MODULE_NAME)$(SO_MODULE_EXT) + +EMFLAGS := \ + --memory-init-file 0 \ + -s MODULARIZE=1 \ + -s NO_FILESYSTEM=1 \ + -s ERROR_ON_UNDEFINED_SYMBOLS=1 \ + -s EXPORT_NAME="'$(EM_MODULE_SYMBOL)'" \ + -s EXPORTED_FUNCTIONS="['_piperRequestJson','_piperProcessRaw','_piperFreeJson']" \ + $(EMFLAGS) + +CXX_SOURCES := $(MODULE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(SDK_SOURCES) $(OTHER_SOURCES) +C_SOURCES := $(PLUGIN_C_SOURCES) + +#OPTFLAGS := -g3 +OPTFLAGS := -O3 -ffast-math + +DEFINES := $(DEFINES) + +INCPATH := -I$(SRC_DIR) -I$(SDK_DIR) -I$(PIPERCPP_DIR) $(INCPATH) + +em: $(EM_MODULE) +em: CXX := em++ +em: CC := emcc +em: CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH) +em: CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH) +em: LDFLAGS := $(EMFLAGS) + +linux: $(SO_MODULE) +linux: CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(INCPATH) +linux: CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(INCPATH) +linux: LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=$(SO_MODULE) -Wl,-z,defs -Wl,--version-script=$(SRC_DIR)/piper.map -ldl + +OBJDIR := o + +CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o) +C_OBJECTS := $(C_SOURCES:.c=.o) +OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS) +OBJECTS := $(addprefix $(OBJDIR)/,$(realpath $(OBJECTS))) + +o/%.o: %.cpp + mkdir -p $(dir $@) + $(CXX) -c $(INCPATH) $(CXXFLAGS) -o $@ $< + +o/%.o: %.c + mkdir -p $(dir $@) + $(CC) -c $(INCPATH) $(CFLAGS) -o $@ $< + +$(EM_MODULE): $(OBJECTS) + $(CXX) $(OPTFLAGS) $(EMFLAGS) -o $@ $^ $(LDFLAGS) && \ + ( echo "if (typeof process === 'object') module.exports=$(MODULE_SYMBOL);" >> $(EM_MODULE) ) + +$(SO_MODULE): $(OBJECTS) + $(CXX) -o $@ $^ $(LDFLAGS) + +clean: + rm -f $(OBJECTS)
--- a/Makefile.inc.em Thu Nov 10 11:01:08 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ - -SRC_DIR := src -SDK_DIR := ../vamp-plugin-sdk -PIPERCPP_DIR := ../piper-cpp - -ADAPTER_HEADERS := \ - $(SRC_DIR)/PiperAdapter.h \ - $(SRC_DIR)/PiperPluginLibrary.h -ADAPTER_SOURCES := \ - $(SRC_DIR)/PiperPluginLibrary.cpp - -SDK_SOURCES := \ - $(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \ - $(SDK_DIR)/src/vamp-hostsdk/Files.cpp \ - $(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \ - $(SDK_DIR)/src/vamp-sdk/RealTime.cpp \ - $(SDK_DIR)/src/vamp-sdk/FFT.cpp - -OTHER_SOURCES := \ - $(PIPERCPP_DIR)/json11/json11.cpp - -MODULE_EXT := .js -MODULE := $(MODULE_NAME)$(MODULE_EXT) -MODULE_SYMBOL := $(MODULE_NAME)Module - -EMFLAGS := \ - --memory-init-file 0 \ - -s MODULARIZE=1 \ - -s NO_FILESYSTEM=1 \ - -s ERROR_ON_UNDEFINED_SYMBOLS=1 \ - -s EXPORT_NAME="'$(MODULE_SYMBOL)'" \ - -s EXPORTED_FUNCTIONS="['_piperRequestJson','_piperProcessRaw','_piperFreeJson']" \ - $(EMFLAGS) - -CXX_SOURCES := $(MODULE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(SDK_SOURCES) $(OTHER_SOURCES) -C_SOURCES := $(PLUGIN_C_SOURCES) -LDFLAGS := $(EMFLAGS) - -CXX := em++ -CC := emcc - -#OPTFLAGS := -g3 -OPTFLAGS := -O3 -ffast-math - -DEFINES := $(DEFINES) - -INCPATH := -I$(SRC_DIR) -I$(SDK_DIR) -I$(PIPERCPP_DIR) $(INCPATH) - -CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH) -CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH) - -OBJDIR := o - -CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o) -C_OBJECTS := $(C_SOURCES:.c=.o) -OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS) -OBJECTS := $(addprefix $(OBJDIR)/,$(realpath $(OBJECTS))) - -o/%.o: %.cpp - mkdir -p $(dir $@) - $(CXX) $(INCPATH) $(CXXFLAGS) -o $@ $< - -o/%.o: %.c - mkdir -p $(dir $@) - $(CC) $(INCPATH) $(CFLAGS) -o $@ $< - -all: $(MODULE) - -$(MODULE): $(OBJECTS) - $(CXX) $(OPTFLAGS) $(EMFLAGS) -o $(MODULE) $(OBJECTS) $(MODULE_LDFLAGS) && \ - ( echo "if (typeof process === 'object') module.exports=$(MODULE_SYMBOL);" >> $(MODULE) ) - -clean: - rm -f $(MODULE) $(OBJECTS)