@@ -4,23 +4,27 @@ inputs:
44 target :
55 description : ' rust target being set up'
66 required : true
7+ toolchain :
8+ description : ' Rust toolchain to install'
9+ default : stable
710 emscripten_sdk :
811 description : ' emsdk version to install'
912 default : latest
1013 wasi_sdk :
1114 description : ' wasi-sdk version to install'
12- default : 33
15+ default : ' 34 '
1316 wasmtime :
1417 description : ' wasmtime version to install'
15- default : v47 .0.3
18+ default : v50 .0.0
1619
1720runs :
1821 using : composite
1922 steps :
2023 - uses : dtolnay/rust-toolchain@stable
2124 with :
25+ toolchain : ${{ inputs.toolchain }}
2226 target : ${{ inputs.target }}
23- - run : echo "CARGO_BUILD_TARGET=${{ matrix .target }}" >> $GITHUB_ENV
27+ - run : echo "CARGO_BUILD_TARGET=${{ inputs .target }}" >> $GITHUB_ENV
2428 shell : bash
2529
2630 - name : Install GCC (x86_64-unknown-linux-musl)
@@ -75,19 +79,36 @@ runs:
7579 echo "CARGO_TARGET_WASM32_UNKNOWN_EMSCRIPTEN_RUNNER=$EMSDK_NODE" >> $GITHUB_ENV
7680 shell : bash
7781
78- - name : Install wasi-sdk/Wasmtime (wasm32-wasip2)
79- if : ${{ inputs.target == 'wasm32-wasip2' }}
82+ - name : Install wasi-sdk/Wasmtime
83+ if : ${{ inputs.target == 'wasm32-unknown-unknown' || inputs.target == 'wasm32- wasip2' || inputs.target == 'wasm32-wasip3 ' }}
8084 working-directory : ${{ runner.tool_cache }}
85+ env :
86+ WASM_TARGET : ${{ inputs.target }}
8187 run : |
82- curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ inputs.wasi_sdk }}/wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux.tar.gz
88+ curl -fLO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-${{ inputs.wasi_sdk }}/wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux.tar.gz
8389 tar xf wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux.tar.gz
84- WASI_SDK_PATH=`pwd`/wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux
85- echo "WASI_SDK_PATH=$WASI_SDK_PATH" >> $GITHUB_ENV
86- echo "CC_wasm32_wasip2=$WASI_SDK_PATH/bin/clang" >> $GITHUB_ENV
87- echo "CARGO_TARGET_WASM32_WASIP2_LINKER=$WASI_SDK_PATH/bin/clang" >> $GITHUB_ENV
88- echo "CARGO_TARGET_WASM32_WASIP2_RUSTFLAGS=-Clink-arg=-Wl,--export=cabi_realloc" >> $GITHUB_ENV
90+ WASI_SDK_PATH="$PWD/wasi-sdk-${{ inputs.wasi_sdk }}.0-x86_64-linux"
91+ echo "WASI_SDK_PATH=$WASI_SDK_PATH" >> "$GITHUB_ENV"
92+ cc_target="${WASM_TARGET//-/_}"
93+ cargo_target="CARGO_TARGET_${cc_target^^}"
94+ echo "CC_$cc_target=$WASI_SDK_PATH/bin/clang" >> "$GITHUB_ENV"
95+ rustflags="-Clink-arg=-Wl,--export=cabi_realloc"
96+ runner_flags="-W exceptions"
97+ if [[ "$WASM_TARGET" == wasm32-unknown-unknown ]]; then
98+ echo "AR_$cc_target=$WASI_SDK_PATH/bin/llvm-ar" >> "$GITHUB_ENV"
99+ echo "CFLAGS_$cc_target=--target=wasm32-wasip1" >> "$GITHUB_ENV"
100+ rustflags="-Lnative=$WASI_SDK_PATH/share/wasi-sysroot/lib/wasm32-wasip1 -lstatic=c"
101+ else
102+ echo "${cargo_target}_LINKER=$WASI_SDK_PATH/bin/clang" >> "$GITHUB_ENV"
103+ fi
104+ if [[ "$WASM_TARGET" == wasm32-wasip3 ]]; then
105+ rustflags+=" -Clink-self-contained=no"
106+ runner_flags+=" -S p3"
107+ fi
108+ echo "${cargo_target}_RUSTFLAGS=$rustflags" >> "$GITHUB_ENV"
89109
90- curl -LO https://github.com/bytecodealliance/wasmtime/releases/download/${{ inputs.wasmtime }}/wasmtime-${{ inputs.wasmtime }}-x86_64-linux.tar.xz
110+ curl -fLO https://github.com/bytecodealliance/wasmtime/releases/download/${{ inputs.wasmtime }}/wasmtime-${{ inputs.wasmtime }}-x86_64-linux.tar.xz
91111 tar xf wasmtime-${{ inputs.wasmtime }}-x86_64-linux.tar.xz
92- echo "CARGO_TARGET_WASM32_WASIP2_RUNNER=`pwd`/wasmtime-${{ inputs.wasmtime }}-x86_64-linux/wasmtime -W exceptions" >> $GITHUB_ENV
112+ echo "$PWD/wasmtime-${{ inputs.wasmtime }}-x86_64-linux" >> "$GITHUB_PATH"
113+ echo "${cargo_target}_RUNNER=$PWD/wasmtime-${{ inputs.wasmtime }}-x86_64-linux/wasmtime $runner_flags" >> "$GITHUB_ENV"
93114 shell : bash
0 commit comments