diff --git a/wasm-base/Dockerfile b/wasm-base/Dockerfile index e817f80..303c376 100644 --- a/wasm-base/Dockerfile +++ b/wasm-base/Dockerfile @@ -29,5 +29,9 @@ RUN apt-get update \ && apt-get clean COPY --from=wamr-builder /wasm-micro-runtime/product-mini/platforms/linux/build /opt/wasm-micro-runtime +RUN pwd +COPY ./examples /home/ubuntu/examples + +WORKDIR /home/ubuntu/examples ENV PATH="$PATH:/opt/wasi-sdk/bin:/opt/wasm-micro-runtime" diff --git a/wasm-base/examples/Makefile b/wasm-base/examples/Makefile new file mode 100644 index 0000000..ba63856 --- /dev/null +++ b/wasm-base/examples/Makefile @@ -0,0 +1,20 @@ +WASI_SDK := /opt/wasi-sdk +CLANG := $(WASI_SDK)/bin/clang +SYSROOT := $(WASI_SDK)/share/wasi-sysroot + +CFLAGS := --target=wasm32-wasi \ + --sysroot=$(SYSROOT) \ + -O2 + +SRCS := $(wildcard *.c) +WASMS := $(SRCS:.c=.wasm) + +.PHONY: build-examples clean + +build-examples: $(WASMS) + +%.wasm: %.c + $(CLANG) $(CFLAGS) $< -o $@ + +clean: + rm -f *.wasm diff --git a/wasm-base/examples/test.c b/wasm-base/examples/test.c new file mode 100644 index 0000000..87c8036 --- /dev/null +++ b/wasm-base/examples/test.c @@ -0,0 +1,24 @@ +// https://github.com/bytecodealliance/wasm-micro-runtime/blob/main/doc/build_wasm_app.md#user-content-build-wasm-applications-with-wasi-sdk + +#include +#include + +int main(int argc, char **argv) { + char *buf; + + printf("Hello world!\n"); + + buf = malloc(1024); + if (!buf) { + printf("malloc buf failed\n"); + return -1; + } + + printf("buf ptr: %p\n", buf); + + sprintf(buf, "%s", "1234\n"); + printf("buf: %s", buf); + + free(buf); + return 0; +}