summaryrefslogtreecommitdiff
path: root/c/wasi-http/echo-request/Makefile
diff options
context:
space:
mode:
authorAndrew Clayton <a.clayton@nginx.com>2023-11-28 23:53:57 +0000
committerAndrew Clayton <a.clayton@nginx.com>2023-11-28 23:58:28 +0000
commit76a6880605195d253dd4837204a252816bd5a396 (patch)
tree08621e679127f757e367671aee497396b62bb013 /c/wasi-http/echo-request/Makefile
parente3a37a1bb4908b02553096afaeb380dbc85bb7bb (diff)
downloadproject_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 'c/wasi-http/echo-request/Makefile')
-rw-r--r--c/wasi-http/echo-request/Makefile31
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*