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@120
|
11 @echo " - build native-code module on Linux (mostly for testing)"
|
c@120
|
12 @echo "$$ make clean"
|
c@120
|
13 @echo " - remove intermediate build files, but not targets"
|
c@120
|
14 @echo
|
c@120
|
15 @echo "Note: when switching from one target to another, make clean first"
|
c@120
|
16 @echo
|
c@120
|
17
|
c@120
|
18 SRC_DIR := src
|
c@120
|
19 SDK_DIR := ../vamp-plugin-sdk
|
c@120
|
20 PIPERCPP_DIR := ../piper-cpp
|
c@120
|
21
|
c@120
|
22 ADAPTER_HEADERS := \
|
c@120
|
23 $(SRC_DIR)/PiperAdapter.h \
|
c@120
|
24 $(SRC_DIR)/PiperPluginLibrary.h
|
c@120
|
25 ADAPTER_SOURCES := \
|
c@120
|
26 $(SRC_DIR)/PiperPluginLibrary.cpp
|
c@120
|
27
|
c@120
|
28 SDK_SOURCES := \
|
c@120
|
29 $(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \
|
c@120
|
30 $(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \
|
c@120
|
31 $(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \
|
c@120
|
32 $(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
|
c@120
|
33 $(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \
|
c@120
|
34 $(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
|
c@120
|
35 $(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \
|
c@120
|
36 $(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \
|
c@120
|
37 $(SDK_DIR)/src/vamp-hostsdk/Files.cpp \
|
c@120
|
38 $(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \
|
c@120
|
39 $(SDK_DIR)/src/vamp-sdk/RealTime.cpp \
|
c@120
|
40 $(SDK_DIR)/src/vamp-sdk/FFT.cpp
|
c@120
|
41
|
c@120
|
42 OTHER_SOURCES := \
|
c@120
|
43 $(PIPERCPP_DIR)/json11/json11.cpp
|
c@120
|
44
|
c@120
|
45 EM_MODULE_EXT := .js
|
c@120
|
46 EM_MODULE := $(MODULE_NAME)$(EM_MODULE_EXT)
|
c@120
|
47 EM_MODULE_SYMBOL := $(MODULE_NAME)Module
|
c@120
|
48
|
c@120
|
49 SO_MODULE_EXT := .so
|
c@120
|
50 SO_MODULE := $(MODULE_NAME)$(SO_MODULE_EXT)
|
c@120
|
51
|
c@120
|
52 EMFLAGS := \
|
c@120
|
53 --memory-init-file 0 \
|
c@120
|
54 -s MODULARIZE=1 \
|
c@120
|
55 -s NO_FILESYSTEM=1 \
|
c@120
|
56 -s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
c@120
|
57 -s EXPORT_NAME="'$(EM_MODULE_SYMBOL)'" \
|
c@120
|
58 -s EXPORTED_FUNCTIONS="['_piperRequestJson','_piperProcessRaw','_piperFreeJson']" \
|
c@120
|
59 $(EMFLAGS)
|
c@120
|
60
|
c@120
|
61 CXX_SOURCES := $(MODULE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(SDK_SOURCES) $(OTHER_SOURCES)
|
c@120
|
62 C_SOURCES := $(PLUGIN_C_SOURCES)
|
c@120
|
63
|
c@120
|
64 #OPTFLAGS := -g3
|
c@120
|
65 OPTFLAGS := -O3 -ffast-math
|
c@120
|
66
|
c@120
|
67 DEFINES := $(DEFINES)
|
c@120
|
68
|
c@120
|
69 INCPATH := -I$(SRC_DIR) -I$(SDK_DIR) -I$(PIPERCPP_DIR) $(INCPATH)
|
c@120
|
70
|
c@120
|
71 em: $(EM_MODULE)
|
c@120
|
72 em: CXX := em++
|
c@120
|
73 em: CC := emcc
|
c@120
|
74 em: CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH)
|
c@120
|
75 em: CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH)
|
c@120
|
76 em: LDFLAGS := $(EMFLAGS)
|
c@120
|
77
|
c@120
|
78 linux: $(SO_MODULE)
|
c@120
|
79 linux: CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(INCPATH)
|
c@120
|
80 linux: CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(INCPATH)
|
c@120
|
81 linux: LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=$(SO_MODULE) -Wl,-z,defs -Wl,--version-script=$(SRC_DIR)/piper.map -ldl
|
c@120
|
82
|
c@120
|
83 OBJDIR := o
|
c@120
|
84
|
c@120
|
85 CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o)
|
c@120
|
86 C_OBJECTS := $(C_SOURCES:.c=.o)
|
c@120
|
87 OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS)
|
c@120
|
88 OBJECTS := $(addprefix $(OBJDIR)/,$(realpath $(OBJECTS)))
|
c@120
|
89
|
c@120
|
90 o/%.o: %.cpp
|
c@120
|
91 mkdir -p $(dir $@)
|
c@120
|
92 $(CXX) -c $(INCPATH) $(CXXFLAGS) -o $@ $<
|
c@120
|
93
|
c@120
|
94 o/%.o: %.c
|
c@120
|
95 mkdir -p $(dir $@)
|
c@120
|
96 $(CC) -c $(INCPATH) $(CFLAGS) -o $@ $<
|
c@120
|
97
|
c@120
|
98 $(EM_MODULE): $(OBJECTS)
|
c@120
|
99 $(CXX) $(OPTFLAGS) $(EMFLAGS) -o $@ $^ $(LDFLAGS) && \
|
c@120
|
100 ( echo "if (typeof process === 'object') module.exports=$(MODULE_SYMBOL);" >> $(EM_MODULE) )
|
c@120
|
101
|
c@120
|
102 $(SO_MODULE): $(OBJECTS)
|
c@120
|
103 $(CXX) -o $@ $^ $(LDFLAGS)
|
c@120
|
104
|
c@120
|
105 clean:
|
c@120
|
106 rm -f $(OBJECTS)
|