Chris@15
|
1
|
Chris@50
|
2 SRC_DIR := src
|
Chris@15
|
3 SDK_DIR := ../vamp-plugin-sdk
|
Chris@43
|
4 PIPERCPP_DIR := ../piper-cpp
|
Chris@15
|
5
|
Chris@50
|
6 ADAPTER_HEADERS := \
|
Chris@50
|
7 $(SRC_DIR)/PiperAdapter.h \
|
Chris@50
|
8 $(SRC_DIR)/PiperPluginLibrary.h
|
Chris@50
|
9 ADAPTER_SOURCES := \
|
Chris@50
|
10 $(SRC_DIR)/PiperPluginLibrary.cpp
|
Chris@50
|
11
|
Chris@15
|
12 SDK_SOURCES := \
|
Chris@50
|
13 $(SDK_DIR)/src/vamp-hostsdk/PluginBufferingAdapter.cpp \
|
Chris@15
|
14 $(SDK_DIR)/src/vamp-hostsdk/PluginChannelAdapter.cpp \
|
Chris@50
|
15 $(SDK_DIR)/src/vamp-hostsdk/PluginHostAdapter.cpp \
|
Chris@50
|
16 $(SDK_DIR)/src/vamp-hostsdk/PluginInputDomainAdapter.cpp \
|
Chris@50
|
17 $(SDK_DIR)/src/vamp-hostsdk/PluginLoader.cpp \
|
Chris@50
|
18 $(SDK_DIR)/src/vamp-hostsdk/PluginSummarisingAdapter.cpp \
|
Chris@50
|
19 $(SDK_DIR)/src/vamp-hostsdk/PluginWrapper.cpp \
|
Chris@50
|
20 $(SDK_DIR)/src/vamp-hostsdk/RealTime.cpp \
|
Chris@50
|
21 $(SDK_DIR)/src/vamp-hostsdk/Files.cpp \
|
Chris@15
|
22 $(SDK_DIR)/src/vamp-sdk/PluginAdapter.cpp \
|
Chris@15
|
23 $(SDK_DIR)/src/vamp-sdk/RealTime.cpp \
|
Chris@15
|
24 $(SDK_DIR)/src/vamp-sdk/FFT.cpp
|
Chris@15
|
25
|
Chris@15
|
26 OTHER_SOURCES := \
|
Chris@43
|
27 $(PIPERCPP_DIR)/json11/json11.cpp
|
Chris@15
|
28
|
Chris@15
|
29 MODULE_EXT := .js
|
Chris@15
|
30 MODULE := $(MODULE_NAME)$(MODULE_EXT)
|
Chris@15
|
31 MODULE_SYMBOL := $(MODULE_NAME)Module
|
Chris@15
|
32
|
Chris@15
|
33 EMFLAGS := \
|
Chris@15
|
34 --memory-init-file 0 \
|
Chris@15
|
35 -s MODULARIZE=1 \
|
Chris@15
|
36 -s NO_FILESYSTEM=1 \
|
Chris@15
|
37 -s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
Chris@15
|
38 -s EXPORT_NAME="'$(MODULE_SYMBOL)'" \
|
Chris@43
|
39 -s EXPORTED_FUNCTIONS="['_piperRequestJson','_piperProcessRaw','_piperFreeJson']" \
|
Chris@17
|
40 $(EMFLAGS)
|
Chris@15
|
41
|
Chris@37
|
42 CXX_SOURCES := $(MODULE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(SDK_SOURCES) $(OTHER_SOURCES)
|
Chris@50
|
43 C_SOURCES := $(PLUGIN_C_SOURCES)
|
Chris@15
|
44 LDFLAGS := $(EMFLAGS)
|
Chris@15
|
45
|
Chris@15
|
46 CXX := em++
|
Chris@37
|
47 CC := emcc
|
Chris@15
|
48
|
Chris@15
|
49 #OPTFLAGS := -g3
|
Chris@15
|
50 OPTFLAGS := -O3 -ffast-math
|
Chris@15
|
51
|
Chris@35
|
52 DEFINES := $(DEFINES)
|
Chris@15
|
53
|
Chris@50
|
54 INCPATH := -I$(SRC_DIR) -I$(SDK_DIR) -I$(PIPERCPP_DIR) $(INCPATH)
|
Chris@15
|
55
|
Chris@37
|
56 CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH)
|
Chris@37
|
57 CFLAGS := -fPIC -Wall -Wextra $(DEFINES) $(OPTFLAGS) $(EMFLAGS) $(INCPATH)
|
Chris@37
|
58
|
Chris@50
|
59 OBJDIR := o
|
Chris@50
|
60
|
Chris@37
|
61 CXX_OBJECTS := $(CXX_SOURCES:.cpp=.o)
|
Chris@37
|
62 C_OBJECTS := $(C_SOURCES:.c=.o)
|
Chris@37
|
63 OBJECTS := $(CXX_OBJECTS) $(C_OBJECTS)
|
Chris@50
|
64 OBJECTS := $(addprefix $(OBJDIR)/,$(realpath $(OBJECTS)))
|
Chris@50
|
65
|
Chris@50
|
66 o/%.o: %.cpp
|
Chris@50
|
67 mkdir -p $(dir $@)
|
Chris@50
|
68 $(CXX) $(INCPATH) $(CXXFLAGS) -o $@ $<
|
Chris@50
|
69
|
Chris@50
|
70 o/%.o: %.c
|
Chris@50
|
71 mkdir -p $(dir $@)
|
Chris@50
|
72 $(CC) $(INCPATH) $(CFLAGS) -o $@ $<
|
Chris@15
|
73
|
Chris@15
|
74 all: $(MODULE)
|
Chris@15
|
75
|
Chris@37
|
76 $(MODULE): $(OBJECTS)
|
Chris@38
|
77 $(CXX) $(OPTFLAGS) $(EMFLAGS) -o $(MODULE) $(OBJECTS) $(MODULE_LDFLAGS) && \
|
Chris@21
|
78 ( echo "if (typeof process === 'object') module.exports=$(MODULE_SYMBOL);" >> $(MODULE) )
|
Chris@15
|
79
|
Chris@15
|
80 clean:
|
Chris@37
|
81 rm -f $(MODULE) $(OBJECTS)
|