diff options
-rw-r--r-- | auto/help | 5 | ||||
-rw-r--r-- | auto/modules/conf | 4 | ||||
-rw-r--r-- | auto/modules/wasm-wasi-component | 119 |
3 files changed, 128 insertions, 0 deletions
@@ -79,4 +79,9 @@ cat << END wasm OPTIONS configure WebAssembly module run "./configure wasm --help" to see available options + wasm-wasi-component OPTIONS + configure WebAssembly Component Model module + run "./configure wasm-wasi-component --help" to see + available options + END diff --git a/auto/modules/conf b/auto/modules/conf index 31be751f..ab4ed351 100644 --- a/auto/modules/conf +++ b/auto/modules/conf @@ -37,6 +37,10 @@ case "$nxt_module" in . auto/modules/wasm ;; + wasm-wasi-component) + . auto/modules/wasm-wasi-component + ;; + *) echo echo $0: error: invalid module \"$nxt_module\". diff --git a/auto/modules/wasm-wasi-component b/auto/modules/wasm-wasi-component new file mode 100644 index 00000000..1ec5841c --- /dev/null +++ b/auto/modules/wasm-wasi-component @@ -0,0 +1,119 @@ +# Copyright (C) Andrew Clayton +# Copyright (C) F5, Inc. + + +NXT_WCM_MODULE=wasm-wasi-component +NXT_WCM_MOD_NAME=`echo $NXT_WCM_MODULE | tr '-' '_'`.unit.so + + +shift + +for nxt_option; do + + case "$nxt_option" in + -*=*) value=`echo "$nxt_option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) value="" ;; + esac + + case "$nxt_option" in + + --help) + cat << END + +END + exit 0 + ;; + + *) + echo + echo $0: error: invalid $NXT_WCM_MODULE option \"$nxt_option\" + echo + exit 1 + ;; + esac + +done + + +if [ ! -f $NXT_AUTOCONF_DATA ]; then + echo + echo Please run common $0 before configuring module \"$nxt_module\". + echo + exit 1 +fi + +. $NXT_AUTOCONF_DATA + +NXT_WCM_WASM_TOOLS_BIN=${NXT_WCM_WASM_TOOLS_BIN=} + + +$echo "configuring $NXT_WCM_MODULE module" +$echo "configuring $NXT_WCM_MODULE module ..." >> $NXT_AUTOCONF_ERR + +$echo -n "looking for rust compiler ... " + +if [ -z `which rustc 2>/dev/null` ]; then + $echo "not found." + exit 1; +fi + +$echo "found." + +$echo -n "looking for cargo ... " + +if [ -z `which cargo 2>/dev/null` ]; then + $echo "not found." + exit 1; +fi + +$echo "found." + + +if grep ^$NXT_WCM_MODULE: $NXT_MAKEFILE 2>&1 > /dev/null; then + $echo + $echo $0: error: duplicate \"$NXT_WCM_MODULE\" module configured. + $echo + exit 1; +fi + + +$echo " + $NXT_WCM_MODULE module: $NXT_WCM_MOD_NAME" + + +NXT_OS=$(uname -o) + +if [ $NXT_OS = "Darwin" ]; then + NXT_CARGO_CMD="cargo rustc --release --manifest-path src/wasm-wasi-component/Cargo.toml -- --emit link=target/release/libwasm_wasi_component.so -C link-args='-undefined dynamic_lookup'" +else + NXT_CARGO_CMD="cargo build --release --manifest-path src/wasm-wasi-component/Cargo.toml" +fi + + +cat << END >> $NXT_MAKEFILE + +.PHONY: ${NXT_WCM_MODULE} +.PHONY: ${NXT_WCM_MODULE}-install +.PHONY: ${NXT_WCM_MODULE}-uninstall + +all: ${NXT_WCM_MODULE} + +${NXT_WCM_MODULE}: $NXT_BUILD_DIR/lib/unit/modules/$NXT_WCM_MOD_NAME + +$NXT_BUILD_DIR/lib/unit/modules/$NXT_WCM_MOD_NAME: + make build/src/nxt_unit.o + $NXT_CARGO_CMD + +install: ${NXT_WCM_MODULE}-install + +${NXT_WCM_MODULE}-install: ${NXT_WCM_MODULE} install-check + install -d \$(DESTDIR)$NXT_MODULESDIR + install -p src/wasm-wasi-component/target/release/libwasm_wasi_component.so \\ + \$(DESTDIR)$NXT_MODULESDIR/$NXT_WCM_MOD_NAME + +uninstall: ${NXT_WCM_MODULE}-uninstall + +${NXT_WCM_MODULE}-uninstall: + rm -f \$(DESTDIR)$NXT_MODULESDIR/$NXT_WCM_MOD_NAME + @rmdir -p \$(DESTDIR)$NXT_MODULESDIR 2>/dev/null || true + +END |