diff options
author | Andrew Clayton <a.clayton@nginx.com> | 2023-11-28 23:53:57 +0000 |
---|---|---|
committer | Andrew Clayton <a.clayton@nginx.com> | 2023-11-28 23:58:28 +0000 |
commit | 76a6880605195d253dd4837204a252816bd5a396 (patch) | |
tree | 08621e679127f757e367671aee497396b62bb013 /c/wasi-http/echo-request/Makefile | |
parent | e3a37a1bb4908b02553096afaeb380dbc85bb7bb (diff) | |
download | project_blackbird-76a6880605195d253dd4837204a252816bd5a396.tar.gz project_blackbird-76a6880605195d253dd4837204a252816bd5a396.tar.bz2 |
Add a wasi-http echo-request component in C
This adds a wasi-http version of luw-echo-request.c[0]
This works under the wasmtime v15 CLI serve command.
e.g
$ ~/src/c/wasm/wasmtime-v15.0.0-x86_64-linux/wasmtime serve c/wasi-http/echo-request/component.wasm
Serving HTTP on http://0.0.0.0:8080/
$ curl localhost:8080/hello
*** Welcome to WebAssembly with wasi-http / C ***
[Request Info]
REQUEST_PATH = /hello
METHOD = GET
QUERY =
[Request Headers]
host = localhost:8080
user-agent = curl/8.2.1
accept = */*
[0]: <https://github.com/nginx/unit-wasm/blob/main/examples/c/luw-echo-request.c>
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
Diffstat (limited to '')
-rw-r--r-- | c/wasi-http/echo-request/Makefile | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/c/wasi-http/echo-request/Makefile b/c/wasi-http/echo-request/Makefile new file mode 100644 index 0000000..4fb75fe --- /dev/null +++ b/c/wasi-http/echo-request/Makefile @@ -0,0 +1,31 @@ +# Look for wasi-sysroot in some common places, falling back +# to provided WASI_SYSROOT +ifneq ("$(wildcard /usr/wasm32-wasi)", "") + # Fedora + WASI_SYSROOT ?= /usr/wasm32-wasi +endif + +export WASI_SYSROOT + +CC = clang +CFLAGS = -Wall -Wextra --target=wasm32-wasi --sysroot=$(WASI_SYSROOT) +LDFLAGS = -Wl,--no-entry,--export=__heap_base,--export=__data_end,--export=malloc,--export=free,--stack-first,-z,stack-size=$$((8*1024*1024)) -mexec-model=reactor --rtlib=compiler-rt + +all: component.wasm + +bindgen: + /home/andrew/src/c/wasm/git/wit-bindgen/target/release/wit-bindgen c /home/andrew/src/c/wasm/git/wasi-http/wit --world wasi:http/proxy + sed -i 's/_0_2_0_rc_2023_11_10//g' proxy.[ch] + sed -i 's/_0_2_0_RC_2023_11_10//g' proxy.[ch] + /home/andrew/src/c/wasm/git/wit-bindgen/target/release/wit-bindgen markdown /home/andrew/src/c/wasm/git/wasi-http/wit --world wasi:http/proxy + +.PHONY: +module.wasm: bindgen + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ proxy.c proxy_component_type.o component.c + +.PHONY: +component.wasm: module.wasm + /home/andrew/src/c/wasm/wasm-tools-1.0.48-x86_64-linux/wasm-tools component new module.wasm --adapt wasi_snapshot_preview1.reactor.wasm -o component.wasm + +clean: + rm -f component.wasm module.wasm proxy* |