summaryrefslogtreecommitdiffhomepage
path: root/webassembly/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'webassembly/Makefile')
-rw-r--r--webassembly/Makefile32
1 files changed, 32 insertions, 0 deletions
diff --git a/webassembly/Makefile b/webassembly/Makefile
new file mode 100644
index 0000000..0487d2a
--- /dev/null
+++ b/webassembly/Makefile
@@ -0,0 +1,32 @@
+TARGET=libwhiteboard.wasm
+TARGETJS=$(TARGET:.wasm=.js)
+
+OBJS=diff.o
+
+CXX=em++
+
+CXXFLAGS=-I./include -O2 -std=c++20
+LDFLAGS=-s WASM=1 -s EXPORTED_FUNCTIONS="['_diff_create', '_diff_apply', '_free']"
+# Note: Instead of the above explicit EXPORTED_FUNCTIONS, the following causes ~7x wasm file size:
+#-s LINKABLE=1 -s EXPORT_ALL=1
+
+default: $(TARGET)
+
+$(OBJS): include
+
+include:
+ mkdir include
+ cp -r /usr/include/boost include/boost
+
+$(TARGET): $(OBJS)
+ $(CXX) $(LDFLAGS) $(OBJS) -o $(TARGETJS)
+ cp $(TARGETJS) $(TARGET) ../html/
+
+diff.o: ../diff.cpp
+ $(CXX) -c $< $(CXXFLAGS) -o $@
+ # run again in case em++ just asked to re-run (on pbuilder/buildd)
+ test -e $@ || $(CXX) -c $< $(CXXFLAGS) -o $@
+
+clean:
+ -rm -f *.o *.js *.wasm *.html
+ -rm -rf include