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)