summaryrefslogtreecommitdiff
path: root/wasm/GNUmakefile.in
diff options
context:
space:
mode:
Diffstat (limited to 'wasm/GNUmakefile.in')
-rw-r--r--wasm/GNUmakefile.in32
1 files changed, 32 insertions, 0 deletions
diff --git a/wasm/GNUmakefile.in b/wasm/GNUmakefile.in
new file mode 100644
index 0000000000..18ddd06739
--- /dev/null
+++ b/wasm/GNUmakefile.in
@@ -0,0 +1,32 @@
+include Makefile
+include $(srcdir)/template/GNUmakefile.in
+
+wasmdir = $(srcdir)/wasm
+GNUmakefile: $(wasmdir)/GNUmakefile.in
+WASMOPT = @WASMOPT@
+wasmoptflags = @wasmoptflags@
+
+WASM_TESTRUNNER = wasmtime
+WASM_TESTS = $(wasmdir)/tests/machine_test.wasm $(wasmdir)/tests/setjmp_test.wasm $(wasmdir)/tests/fiber_test.wasm
+WASM_OBJS = $(wasmdir)/machine_core.o $(wasmdir)/machine.o $(wasmdir)/setjmp.o $(wasmdir)/setjmp_core.o $(wasmdir)/fiber.o $(wasmdir)/runtime.o
+
+wasm/missing.$(OBJEXT): $(wasmdir)/missing.c $(PLATFORM_D)
+wasm/fiber.$(OBJEXT): $(wasmdir)/fiber.c $(wasmdir)/fiber.h $(wasmdir)/asyncify.h $(PLATFORM_D)
+wasm/machine.$(OBJEXT): $(wasmdir)/machine.c $(srcdir)/wasm/machine.h $(wasmdir)/asyncify.h $(PLATFORM_D)
+wasm/setjmp.$(OBJEXT): $(wasmdir)/setjmp.c $(wasmdir)/setjmp.h $(wasmdir)/machine.h $(wasmdir)/asyncify.h $(PLATFORM_D)
+wasm/runtime.$(OBJEXT): $(wasmdir)/runtime.c $(wasmdir)/machine.h $(wasmdir)/asyncify.h $(wasmdir)/setjmp.h $(PLATFORM_D)
+
+wasm/%.$(OBJEXT): $(wasmdir)/%.S $(PLATFORM_D)
+ @$(ECHO) compiling $<
+ $(Q) $(CC) $(CFLAGS) $(COUTFLAG)$@ -c $<
+
+test-wasm: $(WASM_TESTS)
+ $(foreach x,$(WASM_TESTS), $(WASM_TESTRUNNER) $(x);)
+clean-test-wasm:
+ @$(RM) $(WASM_TESTS)
+
+$(wasmdir)/tests/%.wasm: $(wasmdir)/tests/%.c $(WASM_OBJS)
+ $(Q) $(CC) -g $(XCFLAGS) $(CFLAGS) $^ -o $@
+ $(Q) $(WASMOPT) -g --asyncify --pass-arg=asyncify-ignore-imports -o $@ $@
+
+.PHONY: test-wasm clean-test-wasm