Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
cpetig committed Jun 8, 2024
2 parents 0b35385 + 76c5401 commit e5d11f2
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 42 deletions.
8 changes: 4 additions & 4 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/
# [Optional] Uncomment this line to install global node packages.
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1

RUN cd /opt && curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz \
RUN cd /opt && curl -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0-linux.tar.gz \
| tar -xz
ENV WASI_SDK_PATH=/opt/wasi-sdk-20.0
ENV WASI_SDK_PATH=/opt/wasi-sdk-22.0

RUN echo 'alias clang=/opt/wasi-sdk-20.0/bin/clang' >> /etc/bash.bashrc
RUN echo 'alias clang++=/opt/wasi-sdk-20.0/bin/clang++' >> /etc/bash.bashrc
RUN echo 'alias clang=/opt/wasi-sdk-22.0/bin/clang' >> /etc/bash.bashrc
RUN echo 'alias clang++=/opt/wasi-sdk-22.0/bin/clang++' >> /etc/bash.bashrc
12 changes: 6 additions & 6 deletions .github/actions/install-wasi-sdk/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ runs:
using: composite
steps:
- run: |
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz -L | tar xzvf -
echo "WASI_SDK_PATH=`pwd`/wasi-sdk-20.0" >> $GITHUB_ENV
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0-linux.tar.gz -L | tar xzvf -
echo "WASI_SDK_PATH=`pwd`/wasi-sdk-22.0" >> $GITHUB_ENV
if: runner.os == 'Linux'
shell: bash
- run: |
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-macos.tar.gz -L | tar xzvf -
echo "WASI_SDK_PATH=`pwd`/wasi-sdk-20.0" >> $GITHUB_ENV
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0-macos.tar.gz -L | tar xzvf -
echo "WASI_SDK_PATH=`pwd`/wasi-sdk-22.0" >> $GITHUB_ENV
if: runner.os == 'macOS'
shell: bash
- run: |
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0.m-mingw.tar.gz -L | tar xzvf -
echo "WASI_SDK_PATH=`pwd`/wasi-sdk-20.0+m" >> $GITHUB_ENV
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0.m-mingw64.tar.gz -L | tar xzvf -
echo "WASI_SDK_PATH=`pwd`/wasi-sdk-22.0+m" >> $GITHUB_ENV
if: runner.os == 'Windows'
shell: bash
- name: Setup `wasm-tools`
Expand Down
14 changes: 1 addition & 13 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,6 @@ jobs:
echo $LOCALAPPDATA'\Microsoft\dotnet' >> $GITHUB_PATH
echo $LOCALAPPDATA'\Microsoft\dotnet\tools' >> $GITHUB_PATH
$LOCALAPPDATA/Microsoft/dotnet/dotnet --info
echo nativeaot-llvm requires emscripten for its version of clang as wasi-sdk 20 does not work see https://github.com/WebAssembly/wasi-sdk/issues/326
curl.exe -OL https://github.com/emscripten-core/emsdk/archive/refs/heads/main.zip
unzip main.zip
cd emsdk-main
./emsdk.bat install 3.1.47
./emsdk.bat activate 3.1.47
if : matrix.os == 'windows-latest'
- run: ci/download-teavm.sh
Expand All @@ -103,14 +97,8 @@ jobs:
- uses: acifani/setup-tinygo@v2
with:
tinygo-version: 0.31.0
- name: All but Windows, cargo test --workspace
if : matrix.os != 'windows-latest'
- name: cargo test --workspace
run: cargo test --workspace
- name: Windows, set EMSDK and run cargo test
if : matrix.os == 'windows-latest'
run: |
source ./emsdk-main/emsdk_env.sh
cargo test --workspace

check:
name: Check
Expand Down
21 changes: 11 additions & 10 deletions crates/csharp/README.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
// generate the c# and the component meta module
## generate the c# and the component module

cargo run c-sharp --string-encoding utf8 --out-dir testing-csharp tests/codegen/floats.wit
The following will generate the c# code given a wit file:

// to run the runtime tests with Native AOT, you need some additional set up
```bash
cargo run c-sharp --string-encoding utf8 --out-dir testing-csharp tests/codegen/floats.wit
```

// install emscripten
curl.exe -OL https://github.com/emscripten-core/emsdk/archive/refs/heads/main.zip
unzip main.zip
cd .\emsdk-main\main\emsdk-main
.\emsdk_env.ps1 activate 3.1.23 --permanant
## Setup
To run the runtime tests with Native AOT, you need some additional set up

```bash
// install wasi-sdk and set env
curl.exe -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0.m-mingw.tar.gz | tar xzvf -
$env:WASI_SDK_PATH="c:\users\jstur\wasi-sdk-20.0+m\"
curl.exe -L https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0.m-mingw64.tar.gz | tar xzvf -
$env:WASI_SDK_PATH="c:\users\jstur\wasi-sdk-22.0+m\"
```
8 changes: 5 additions & 3 deletions crates/csharp/src/csproj.rs
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,10 @@ impl CSProjectLLVMBuilder {
</ItemGroup>
<Target Name="CheckWasmSdks">
<Error Text="Emscripten not found, not compiling to WebAssembly. To enable WebAssembly compilation, install Emscripten and ensure the EMSDK environment variable points to the directory containing upstream/emscripten/emcc.bat"
Condition="'$(EMSDK)' == ''" />
<Error Text="Wasi SDK not found, not compiling to WebAssembly. To enable WebAssembly compilation, install Wasi SDK and ensure the WASI_SDK_PATH environment variable points to the directory containing share/wasi-sysroot"
Condition="'$(WASI_SDK_PATH)' == ''" />
<Warning Text="The WASI SDK version is too low. Please use WASI SDK 22 or newer with a 64 bit Clang."
Condition="!Exists('$(WASI_SDK_PATH)/VERSION')" />
</Target>
"#,
);
Expand All @@ -115,7 +117,7 @@ impl CSProjectLLVMBuilder {
Inputs=\"$(MSBuildProjectDirectory)/{camel}_cabi_realloc.c\"
Outputs=\"$(MSBuildProjectDirectory)/{camel}_cabi_realloc.o\"
>
<Exec Command=\"emcc.bat &quot;$(MSBuildProjectDirectory)/{camel}_cabi_realloc.c&quot; -c -o &quot;$(MSBuildProjectDirectory)/{camel}_cabi_realloc.o&quot;\"/>
<Exec Command=\"&quot;$(WASI_SDK_PATH)/bin/clang&quot; --target=wasm32-wasi &quot;$(MSBuildProjectDirectory)/{camel}_cabi_realloc.c&quot; -c -o &quot;$(MSBuildProjectDirectory)/{camel}_cabi_realloc.o&quot;\"/>
</Target>
"
));
Expand Down
20 changes: 15 additions & 5 deletions src/bin/wit-bindgen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,24 @@ struct Common {
#[clap(long = "out-dir")]
out_dir: Option<PathBuf>,

/// WIT document to generate bindings for.
#[clap(value_name = "DOCUMENT", index = 1)]
/// Location of WIT file(s) to generate bindings for.
///
/// This path can be either a directory containing `*.wit` files, a `*.wit`
/// file itself, or a `*.wasm` file which is a wasm-encoded WIT package.
/// Most of the time it's likely to be a directory containing `*.wit` files
/// with an optional `deps` folder inside of it.
#[clap(value_name = "WIT", index = 1)]
wit: PathBuf,

/// World within the WIT document specified to generate bindings for.
/// Optionally specified world that bindings are generated for.
///
/// This can either be `foo` which is the default world in document `foo` or
/// it's `foo.bar` which is the world named `bar` within document `foo`.
/// Bindings are always generated for a world but this option can be omitted
/// when the WIT package pointed to by the `WIT` option only has a single
/// world. If there's more than one world in the package then this option
/// must be specified to name the world that bindings are generated for.
/// This option can also use the fully qualified syntax such as
/// `wasi:http/proxy` to select a world from a dependency of the main WIT
/// package.
#[clap(short, long)]
world: Option<String>,

Expand Down
2 changes: 1 addition & 1 deletion tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ There are a few pre-requisites to testing the project. You only need the languag

- WASI SDK
- Download from wasi-sdk releases page. If you're using Windows, you need the one with mingw in its name.
- `curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz`
- `curl -LO https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0-linux.tar.gz`
- Create an environment variable called `WASI_SDK_PATH`` giving the path where you extracted the WASI SDK download, i.e., the directory containing `bin`/`lib`/`share`` folders.
- Compilers for the target language:
- Go + TinyGo - https://tinygo.org/ (v0.27.0+)
Expand Down

0 comments on commit e5d11f2

Please sign in to comment.