Mercurial > hg > piper-vamp-js
view Makefile.inc @ 51:1062bd8432e0
Merge the EM and Linux build files
author | Chris Cannam |
---|---|
date | Thu, 10 Nov 2016 11:34:04 +0000 |
parents | Makefile.inc.em@afaeb2258678 |
children | 9aa535cc3939 |
line wrap: on
line source
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)