annotate Makefile.inc @ 131:e4f215205fdc

INCPATH -> INCLUDES (is not a simple path, contains the -I flags already)
author Chris Cannam <c.cannam@qmul.ac.uk>
date Thu, 10 Nov 2016 18:56:45 +0000
parents a8d054ec22ac
children 2255741a934c
rev   line source
c@120 1
c@120 2 default: help
c@120 3
c@120 4 help:
c@120 5 @echo
c@120 6 @echo "Supported make targets:"
c@120 7 @echo
c@120 8 @echo "$$ make em"
c@120 9 @echo " - build Javascript module using Emscripten"
c@120 10 @echo "$$ make linux"
c@124 11 @echo " - build native-code module on Linux (currently this is mostly for testing)"
c@120 12 @echo "$$ make clean"
c@120 13 @echo " - remove intermediate build files, but not targets"
c@122 14 @echo "$$ make distclean"
c@122 15 @echo " - remove all targets and intermediate build files"
c@120 16 @echo
c@120 17 @echo "Note: when switching from one target to another, make clean first"
c@120 18 @echo
c@120 19
c@121 20 MY_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
c@121 21
c@121 22 SRC_DIR := $(MY_DIR)/src
c@121 23 SDK_DIR := $(MY_DIR)/../vamp-plugin-sdk
c@121 24 PIPERCPP_DIR := $(MY_DIR)/../piper-cpp
c@120 25
c@120 26 ADAPTER_HEADERS := \
c@120 27 $(SRC_DIR)/PiperAdapter.h \
c@120 28 $(SRC_DIR)/PiperPluginLibrary.h
c@120 29 ADAPTER_SOURCES := \
c@120 30 $(SRC_DIR)/PiperPluginLibrary.cpp
c@120 31
c@120 32 SDK_SOURCES := \
c@120 33 $(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \
c@120 34 $(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \
c@120 35 $(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \
c@120 36 $(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
c@120 37 $(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \
c@120 38 $(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
c@120 39 $(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \
c@120 40 $(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \
c@120 41 $(SDK_DIR)/src/vamp-hostsdk/Files.cpp \
c@120 42 $(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \
c@120 43 $(SDK_DIR)/src/vamp-sdk/RealTime.cpp \
c@120 44 $(SDK_DIR)/src/vamp-sdk/FFT.cpp
c@120 45
c@120 46 OTHER_SOURCES := \
c@120 47 $(PIPERCPP_DIR)/json11/json11.cpp
c@120 48
c@120 49 EM_MODULE_EXT := .js
c@120 50 EM_MODULE := $(MODULE_NAME)$(EM_MODULE_EXT)
c@120 51 EM_MODULE_SYMBOL := $(MODULE_NAME)Module
c@120 52
c@120 53 SO_MODULE_EXT := .so
c@120 54 SO_MODULE := $(MODULE_NAME)$(SO_MODULE_EXT)
c@120 55
c@120 56 EMFLAGS := \
c@120 57 --memory-init-file 0 \
c@120 58 -s MODULARIZE=1 \
c@120 59 -s NO_FILESYSTEM=1 \
c@120 60 -s ERROR_ON_UNDEFINED_SYMBOLS=1 \
c@120 61 -s EXPORT_NAME="'$(EM_MODULE_SYMBOL)'" \
c@120 62 -s EXPORTED_FUNCTIONS="['_piperRequestJson','_piperProcessRaw','_piperFreeJson']" \
c@120 63 $(EMFLAGS)
c@120 64
c@120 65 CXX_SOURCES := $(MODULE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(SDK_SOURCES) $(OTHER_SOURCES)
c@121 66 C_SOURCES := $(PLUGIN_C_SOURCES) $(C_SOURCES)
c@120 67
c@120 68 #OPTFLAGS := -g3
c@120 69 OPTFLAGS := -O3 -ffast-math
c@120 70
c@120 71 DEFINES := $(DEFINES)
c@120 72
c@131 73 INCLUDES := -I$(SRC_DIR) -I$(SDK_DIR) -I$(PIPERCPP_DIR) $(INCLUDES)
c@120 74
c@120 75 em: $(EM_MODULE)
c@120 76 em: CXX := em++
c@120 77 em: CC := emcc
c@131 78 em: CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCLUDES)
c@131 79 em: CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCLUDES)
c@120 80 em: LDFLAGS := $(EMFLAGS)
c@120 81
c@120 82 linux: $(SO_MODULE)
c@131 83 linux: CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(INCLUDES)
c@131 84 linux: CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(INCLUDES)
c@120 85 linux: LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=$(SO_MODULE) -Wl,-z,defs -Wl,--version-script=$(SRC_DIR)/piper.map -ldl
c@120 86
c@120 87 OBJDIR := o
c@120 88
c@120 89 CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o)
c@120 90 C_OBJECTS := $(C_SOURCES:.c=.o)
c@122 91 ALL_OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS)
c@122 92 OBJECTS := $(addprefix $(OBJDIR)/,$(abspath $(ALL_OBJECTS)))
c@120 93
c@120 94 o/%.o: %.cpp
c@120 95 mkdir -p $(dir $@)
c@131 96 $(CXX) -c $(INCLUDES) $(CXXFLAGS) -o $@ $<
c@120 97
c@120 98 o/%.o: %.c
c@120 99 mkdir -p $(dir $@)
c@131 100 $(CC) -c $(INCLUDES) $(CFLAGS) -o $@ $<
c@120 101
c@120 102 $(EM_MODULE): $(OBJECTS)
c@121 103 $(CXX) $(OPTFLAGS) -o $@ $^ $(LDFLAGS) && \
c@122 104 ( echo "if (typeof process === 'object') module.exports=$(EM_MODULE_SYMBOL);" >> $(EM_MODULE) )
c@120 105
c@120 106 $(SO_MODULE): $(OBJECTS)
c@120 107 $(CXX) -o $@ $^ $(LDFLAGS)
c@120 108
c@120 109 clean:
c@120 110 rm -f $(OBJECTS)
c@122 111
c@122 112 distclean: clean
c@122 113 rm -f $(EM_MODULE) $(SO_MODULE)