refactor: clean up wat Makefile

pull/65/head
Sean McBride 4 years ago
parent 589496c93e
commit 3443184749

2
.gitignore vendored

@ -24,3 +24,5 @@ Vagrantfile
*-cloudimg-console.log
.vscode
wasi-sdk

@ -1 +1,4 @@
dist
*.tar.gz*
uvwasi*
libuv*

@ -1,30 +1,44 @@
.PHONY: libuv.install
libuv.install:
mkdir -p dist/lib/
libuv-1.42.0:
wget https://github.com/libuv/libuv/archive/refs/tags/v1.42.0.tar.gz
tar -xvf v1.42.0.tar.gz
mv libuv-1.42.0/ libuv
rm v1.42.0.tar.gz
cd libuv && mkdir -p build && cd build && cmake .. && cmake --build .
cp ./libuv/build/libuv_a.a dist/lib/libuv_a.a
rm v1.42.0.tar.gz*
dist/lib/libuv_a.a:
mkdir -p dist/lib/
cd libuv-1.42.0 && mkdir -p build && cd build && cmake .. && cmake --build .
cp ./libuv-1.42.0/build/libuv_a.a dist/lib/libuv_a.a
.PHONY: libuv.install
libuv.install: dist/lib/libuv_a.a
.PHONY: libuv.uninstall
libuv.uninstall:
rm -rf libuv
rm -f dist/lib/libuvwasi_a.a
.PHONY: uvwasi.install
uvwasi.install:
mkdir -p dist/lib/
mkdir -p dist/include/
uvwasi-0.0.11:
wget https://github.com/nodejs/uvwasi/archive/refs/tags/v0.0.11.tar.gz
tar -xvf v0.0.11.tar.gz
mv uvwasi-0.0.11 uvwasi
rm v0.0.11.tar.gz
cd uvwasi && mkdir -p out/cmake && cd out/cmake && cmake ../.. -DBUILD_TESTING=ON && cmake --build . && ctest -C Debug --output-on-failure
cp ./uvwasi/out/cmake/libuvwasi_a.a dist/lib/libuvwasi_a.a
cp uvwasi/include/* dist/include/
uvwasi-0.0.11/include/uvwasi.h: uvwasi-0.0.11
uvwasi-0.0.11/include/wasi_serdes.h: uvwasi-0.0.11
uvwasi-0.0.11/include/wasi_types.h: uvwasi-0.0.11
# Install Headers from uvwasi. All backings use serdes and types from this library.
.PHONY: dist/include/wasi
dist/include/wasi: uvwasi-0.0.11/include/uvwasi.h uvwasi-0.0.11/include/wasi_serdes.h uvwasi-0.0.11/include/wasi_types.h
cp -u -t dist/include/ $^
dist/lib/libuvwasi_a.a: uvwasi-0.0.11
mkdir -p dist/lib/
mkdir -p dist/include/
mv uvwasi-0.0.11 uvwasi
cd uvwasi-0.0.11 && mkdir -p out/cmake && cd out/cmake && cmake ../.. -DBUILD_TESTING=ON && cmake --build . && ctest -C Debug --output-on-failure
cp ./uvwasi-0.0.11/out/cmake/libuvwasi_a.a dist/lib/libuvwasi_a.a
.PHONY: libuv.install
libuv.install: dist/lib/libuvwasi_a.a
.PHONY: uvwasi.uninstall
uvwasi.uninstall:

@ -10,8 +10,6 @@ RUNTIME_CFILES+=${RUNTIME_PATH}/libc/env.c
RUNTIME_CFILES+=${RUNTIME_PATH}/memory/64bit_nix.c
WASMCEPTION_RUNTIME_CFILES=${RUNTIME_CFILES} ${RUNTIME_PATH}/libc/wasmception_backing.c
MINIMAL_CFILES=${RUNTIME_CFILES} ${RUNTIME_PATH}/libc/wasi_sdk_backing.c
MINIMAL_INCLUDES=-I../../runtime/libc/
.PHONY: wasm
wasm: $(patsubst %.wat, %.wasm, $(wildcard *.wat))
@ -22,6 +20,20 @@ bc: $(patsubst %.wat, %.bc, $(wildcard *.wat))
.PHONY: ll
ll: $(patsubst %.wat, %.ll, $(wildcard *.wat))
# Log all WASI syscalls and arguments to stderr
# RUNTIME_CFLAGS += -DLOG_WASI
# modules with WASI imports will fail on wasmception builds
# Only run this manually
# .PHONY: wasmception
# wasmception: $(patsubst %.wat, %_wasmception, $(wildcard *.wat))
.PHONY: uvwasi
uvwasi: $(patsubst %.wat, %_uvwasi, $(wildcard *.wat))
.PHONY: minimal
minimal: $(patsubst %.wat, %_minimal, $(wildcard *.wat))
.PHONY: install_wasmtime
install_wasmtime:
@curl https://wasmtime.dev/install.sh -sSf | bash
@ -51,8 +63,29 @@ clean:
%.wasmception.out: %.bc ${WASMCEPTION_RUNTIME_CFILES}
${CC} -lm ${OPTFLAGS} $^ -o $@
# Using minimal WASI-SDK backend
%.minimal.out: %.bc ${MINIMAL_CFILES}
# Using uvwasi backend
../../runtime/thirdparty/dist/lib/libuv_a.a:
make -C ../../runtime/thirdparty libuv.install
../../runtime/thirdparty/dist/lib/libuvwasi_a.a:
make -C ../../runtime/thirdparty dist/lib/libuvwasi_a.a:
.PHONY: ../../runtime/thirdparty/dist/include
../../runtime/thirdparty/dist/include:
make -C ../../runtime/thirdparty dist/include/wasi
UVWASI_CFILES=../../runtime/runtime.c ../../runtime/libc/wasi/wasi_backing.c ../../runtime/libc/wasi/wasi_main.c ../../runtime/libc/wasi/wasi_impl_uvwasi.c ../../runtime/libc/env.c ../../runtime/memory/64bit_nix.c
UVWASI_LIBS=../../runtime/thirdparty/dist/lib/libuvwasi_a.a ../../runtime/thirdparty/dist/lib/libuv_a.a
UVWASI_INCLUDES=-I../../runtime/libc/wasi/include -I../../runtime/thirdparty/dist/include
%_uvwasi: %.bc ${UVWASI_CFILES} ${UVWASI_LIBS}
clang -pthread -ldl -lm ${OPTFLAGS} ${RUNTIME_CFLAGS} ${UVWASI_INCLUDES} $^ -o $@
# Using minimal backend
MINIMAL_CFILES=${RUNTIME_CFILES} ${RUNTIME_PATH}/libc/wasi/wasi_backing.c ${RUNTIME_PATH}/libc/wasi/wasi_main.c ${RUNTIME_PATH}/libc/wasi/wasi_impl_minimal.c
MINIMAL_INCLUDES=-I${RUNTIME_PATH}/libc/
%_minimal: %.bc ${MINIMAL_CFILES} ../../runtime/thirdparty/dist/include
clang -lm ${OPTFLAGS} ${RUNTIME_CFLAGS} ${MINIMAL_INCLUDES} ${MINIMAL_CFILES} $< -o $@
all: \

Loading…
Cancel
Save