Skip to content

Commit

Permalink
WASM Arm64 CI (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
eukarpov authored Aug 29, 2023
1 parent 1e601c5 commit 7ff61a0
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 8 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/test-wasm-arm64.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Testing dotnet with emsdk arm64

on:
pull_request:
branches: [ "main" ]
workflow_dispatch:

jobs:
test-dotnet-emsdk-arm64:
runs-on: [self-hosted, Windows, ARM64, WASM]

steps:
- name: Git checkout
uses: actions/checkout@v3

- name: Build dotnet with emsdk arm64
run: |
Set-PSDebug -Trace 1
git clone https://github.com/Windows-on-ARM-Experiments/emsdk
cd emsdk
./emsdk install latest
./emsdk activate latest
cd ..
$env:EMSDK_PATH = $PWD.Path + "\emsdk"
./build.cmd -bl -os browser -subset mono+libs+packs -c Release
- name: Test dotnet with emsdk arm64
run: |
Set-PSDebug -Trace 1
.\dotnet.cmd build -c Release /t:RunSample -p:RunAOTCompilation=false .\src\mono\sample\wasm\console-node\Wasm.Console.Node.Sample.csproj
.\dotnet.cmd build -c Release -p:RunAOTCompilation=false .\src\mono\sample\wasm\browser\Wasm.Browser.Sample.csproj
.\dotnet.cmd build -c Release -p:RunAOTCompilation=false .\src\mono\sample\wasm\browser-advanced\Wasm.Advanced.Sample.csproj
.\dotnet.cmd build -c Release -p:RunAOTCompilation=false .\src\mono\sample\wasm\browser-bench\Wasm.Browser.Bench.Sample.csproj
2 changes: 1 addition & 1 deletion eng/native/init-vs-env.cmd
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ if /i "%~1" == "x86" (set __VCBuildArch=x86)
if /i "%~1" == "x64" (set __VCBuildArch=x86_amd64)
if /i "%~1" == "arm" (set __VCBuildArch=x86_arm)
if /i "%~1" == "arm64" (set __VCBuildArch=x86_arm64)
if /i "%~1" == "wasm" (set __VCBuildArch=x86_amd64)
if /i "%~1" == "wasm" (if /i "%PROCESSOR_ARCHITECTURE%" == "ARM64" (set __VCBuildArch=x86_arm64) else (set __VCBuildArch=x86_amd64))

:: Default to highest Visual Studio version available that has Visual C++ tools.
::
Expand Down
8 changes: 5 additions & 3 deletions src/mono/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ set(CMAKE_MODULE_PATH
)
set(CMAKE_INSTALL_MESSAGE LAZY)

find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
if(USE_CCACHE)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
endif()

function(append value)
Expand Down
1 change: 0 additions & 1 deletion src/mono/mono.proj
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,6 @@
<MonoLibClang Condition="$([MSBuild]::IsOSPlatform('OSX'))">$(MonoLLVMDir)/$(BuildArchitecture)/lib/libclang.dylib</MonoLibClang>
<MonoLibClang Condition="$([MSBuild]::IsOSPlatform('Linux'))">$(MonoLLVMDir)/$(BuildArchitecture)/lib/libclang.so</MonoLibClang>
<MonoLibClang Condition="$([MSBuild]::IsOSPlatform('Windows'))">$([MSBuild]::NormalizePath('$(MonoLLVMDir)', '$(BuildArchitecture)', 'bin', 'libclang.dll'))</MonoLibClang>
<PythonCmd Condition="'$(HostOS)' == 'windows'and '$(TargetsBrowser)' == 'true'">setlocal EnableDelayedExpansion &amp;&amp; call &quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'emsdk_env.bat'))&quot; &amp;&amp; !EMSDK_PYTHON!</PythonCmd>
<_ForceRelease Condition="$([MSBuild]::IsOSPlatform('Windows')) and '$(TargetArchitecture)' == 'wasm' and '$(Configuration)' == 'Debug'">true</_ForceRelease>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/mono/mono/metadata/coree.c
Original file line number Diff line number Diff line change
Expand Up @@ -646,7 +646,7 @@ STDAPI MonoFixupCorEE(HMODULE ModuleHandle)
*(Trampoline)++ = 0xFF;
*(Trampoline)++ = 0xE3;
#else
#error Unsupported architecture.
g_assert_not_reached();
#endif
#else
ProcRva = (DWORD)(ExportFixup->ProcAddress.DWordPtr - (DWORD_PTR)DosHeader);
Expand Down
4 changes: 3 additions & 1 deletion src/mono/mono/mini/mini-windows.c
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,9 @@ thread_timer_expired (HANDLE thread)
if (GetThreadContext (thread, &context)) {
guchar *ip;

#ifdef _WIN64
#ifdef _ARM64_
ip = (guchar *) context.Pc;
#elif _WIN64
ip = (guchar *) context.Rip;
#else
ip = (guchar *) context.Eip;
Expand Down
2 changes: 2 additions & 0 deletions src/mono/mono/utils/mono-threads-coop.c
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ typedef struct {
__declspec(naked) void __cdecl
copy_stack_data_internal_win32_wrapper (MonoThreadInfo *info, MonoStackData *stackdata_begin, MonoBuiltinUnwindInfo *unwind_info_data, CopyStackDataFunc func)
{
#if defined(TARGET_X86) || defined(TARGET_AMD64)
__asm {
mov edx, dword ptr [esp + 0Ch]
mov dword ptr [edx + 00h], ebx
Expand All @@ -230,6 +231,7 @@ copy_stack_data_internal_win32_wrapper (MonoThreadInfo *info, MonoStackData *sta
mov edx, dword ptr [esp + 10h]
jmp edx
};
#endif
}
#endif

Expand Down
1 change: 0 additions & 1 deletion src/mono/wasm/wasm.proj
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,6 @@
<_EmccLinkFlags Include="-s EXPORTED_RUNTIME_METHODS=$(_EmccExportedRuntimeMethods)" />
<_EmccLinkFlags Include="-s EXPORTED_FUNCTIONS=$(_EmccExportedFunctions)" />
<_EmccLinkFlags Include="--source-map-base http://example.com" />
<_EmccLinkFlags Include="-s STRICT_JS=1" />
<_EmccLinkFlags Include="-s WASM_BIGINT=1" />
<_EmccLinkFlags Include="-s EXPORT_NAME=&quot;'createDotnetRuntime'&quot;" />
<_EmccLinkFlags Include="-s MODULARIZE=1"/>
Expand Down

0 comments on commit 7ff61a0

Please sign in to comment.