Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C#: Remove the emscripten compiler and rely on wasi-sdk #969

Merged
merged 1 commit into from
Jun 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/install-wasi-sdk/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ runs:
if: runner.os == 'macOS'
shell: bash
- run: |
curl https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-22/wasi-sdk-22.0.m-mingw.tar.gz -L | tar xzvf -
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
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-22/wasi-sdk-22.0.m-mingw.tar.gz | tar xzvf -
$env:WASI_SDK_PATH="c:\users\jstur\wasi-sdk-22.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
Loading