Skip to content

Commit 1c799ea

Browse files
steveisoklewing
andauthored
[wasi] Add AOT compiler build to the official build (#92095)
Co-authored-by: Larry Ewing <[email protected]>
1 parent 3c082c4 commit 1c799ea

File tree

7 files changed

+41
-7
lines changed

7 files changed

+41
-7
lines changed

eng/Version.Details.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
<Uri>https://github.com/dotnet/wcf</Uri>
1313
<Sha>7f504aabb1988e9a093c1e74d8040bd52feb2f01</Sha>
1414
</Dependency>
15+
<Dependency Name="Microsoft.NET.Runtime.Emscripten.3.1.34.Python.win-x64" Version="9.0.0-alpha.1.23565.1">
16+
<Uri>https://github.com/dotnet/emsdk</Uri>
17+
<Sha>eabee1e79eec67b4459f20ca6b56deee60c8b45b</Sha>
18+
</Dependency>
1519
<Dependency Name="runtime.linux-arm64.Microsoft.NETCore.Runtime.ObjWriter" Version="16.0.5-alpha.1.23558.11" CoherentParentDependency="Microsoft.NET.Workload.Emscripten.Current.Manifest-9.0.100.Transport">
1620
<Uri>https://github.com/dotnet/llvm-project</Uri>
1721
<Sha>4db411bed3b4f48dfb4ed59629a0dc1d23e724e6</Sha>

eng/Versions.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@
232232
-->
233233
<MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion>9.0.0-alpha.1.23564.1</MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion>
234234
<MicrosoftNETRuntimeEmscriptenVersion>$(MicrosoftNETWorkloadEmscriptenCurrentManifest90100TransportVersion)</MicrosoftNETRuntimeEmscriptenVersion>
235+
<MicrosoftNETRuntimeEmscripten3134Pythonwinx64Version>9.0.0-alpha.1.23565.1</MicrosoftNETRuntimeEmscripten3134Pythonwinx64Version>
235236
<!-- workloads -->
236237
<SwixPackageVersion>1.1.87-gba258badda</SwixPackageVersion>
237238
<WixPackageVersion>1.0.0-v3.14.0.5722</WixPackageVersion>

eng/pipelines/runtime-official.yml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ extends:
407407
platforms:
408408
- android_x64
409409
- browser_wasm
410+
- wasi_wasm
410411
- tvos_arm64
411412
- ios_arm64
412413
- maccatalyst_x64
@@ -428,15 +429,17 @@ extends:
428429
- linux_musl_arm64
429430
jobParameters:
430431
buildArgs: -s mono+packs -c $(_BuildConfig)
431-
/p:MonoCrossAOTTargetOS=android+browser /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
432+
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
432433
nameSuffix: CrossAOT_Mono
433434
runtimeVariant: crossaot
434435
dependsOn:
435436
- mono_android_offsets
436437
- mono_browser_offsets
438+
- mono_wasi_offsets
437439
monoCrossAOTTargetOS:
438440
- android
439441
- browser
442+
- wasi
440443
isOfficialBuild: ${{ variables.isOfficialBuild }}
441444
postBuildSteps:
442445
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
@@ -453,15 +456,17 @@ extends:
453456
- windows_x64
454457
jobParameters:
455458
buildArgs: -s mono+packs -c $(_BuildConfig)
456-
/p:MonoCrossAOTTargetOS=android+browser /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
459+
/p:MonoCrossAOTTargetOS=android+browser+wasi /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
457460
nameSuffix: CrossAOT_Mono
458461
runtimeVariant: crossaot
459462
dependsOn:
460463
- mono_android_offsets
461464
- mono_browser_offsets
465+
- mono_wasi_offsets
462466
monoCrossAOTTargetOS:
463467
- android
464468
- browser
469+
- wasi
465470
isOfficialBuild: ${{ variables.isOfficialBuild }}
466471
postBuildSteps:
467472
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
@@ -478,18 +483,20 @@ extends:
478483
- osx_arm64
479484
jobParameters:
480485
buildArgs: -s mono+packs -c $(_BuildConfig)
481-
/p:MonoCrossAOTTargetOS=android+browser+tvos+ios+maccatalyst /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
486+
/p:MonoCrossAOTTargetOS=android+browser+wasi+tvos+ios+maccatalyst /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
482487
nameSuffix: CrossAOT_Mono
483488
runtimeVariant: crossaot
484489
dependsOn:
485490
- mono_android_offsets
486491
- mono_browser_offsets
492+
- mono_wasi_offsets
487493
- mono_tvos_offsets
488494
- mono_ios_offsets
489495
- mono_maccatalyst_offsets
490496
monoCrossAOTTargetOS:
491497
- android
492498
- browser
499+
- wasi
493500
- tvos
494501
- ios
495502
- maccatalyst

eng/pipelines/runtime.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ extends:
441441
platforms:
442442
- android_x64
443443
- browser_wasm
444+
- wasi_wasm
444445
- tvos_arm64
445446
- ios_arm64
446447
- maccatalyst_x64
@@ -930,9 +931,11 @@ extends:
930931
dependsOn:
931932
- mono_android_offsets
932933
- mono_browser_offsets
934+
- mono_wasi_offsets
933935
monoCrossAOTTargetOS:
934936
- android
935937
- browser
938+
- wasi
936939
condition: >-
937940
or(
938941
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
@@ -952,12 +955,14 @@ extends:
952955
dependsOn:
953956
- mono_android_offsets
954957
- mono_browser_offsets
958+
- mono_wasi_offsets
955959
- mono_tvos_offsets
956960
- mono_ios_offsets
957961
- mono_maccatalyst_offsets
958962
monoCrossAOTTargetOS:
959963
- android
960964
- browser
965+
- wasi
961966
- tvos
962967
- ios
963968
- maccatalyst

src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+tvos+'))">$(MonoAotTargets);tvossimulator-x64;tvossimulator-arm64;tvos-arm64</MonoAotTargets>
88
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+ios+'))">$(MonoAotTargets);iossimulator-x64;iossimulator-arm64;ios-arm64</MonoAotTargets>
99
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+maccatalyst+'))">$(MonoAotTargets);maccatalyst-x64;maccatalyst-arm64</MonoAotTargets>
10+
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+wasi+'))">$(MonoAotTargets);wasi-wasm</MonoAotTargets>
1011
</PropertyGroup>
1112

1213
<ItemGroup>

src/mono/mono.proj

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
<BuildMonoAOTCrossCompiler Condition="'$(TargetsOSX)' == 'true'">true</BuildMonoAOTCrossCompiler>
4242
<BuildMonoAOTCrossCompiler Condition="'$(TargetsBrowser)' == 'true'">true</BuildMonoAOTCrossCompiler>
4343
<BuildMonoAOTCrossCompiler Condition="'$(TargetsAndroid)' == 'true'">true</BuildMonoAOTCrossCompiler>
44-
<BuildMonoAOTCrossCompiler Condition="'$(TargetsWasi)' == 'true' and !$([MSBuild]::IsOSPlatform('Windows'))">true</BuildMonoAOTCrossCompiler>
44+
<BuildMonoAOTCrossCompiler Condition="'$(TargetsWasi)' == 'true'">true</BuildMonoAOTCrossCompiler>
4545
<MonoObjCrossDir>$([MSBuild]::NormalizeDirectory('$(MonoObjDir)', 'cross'))</MonoObjCrossDir>
4646
<CrossConfigH Condition="'$(BuildMonoAOTCrossCompiler)' == 'true'">$([MSBuild]::NormalizePath('$(MonoObjCrossDir)', 'config.h'))</CrossConfigH>
4747
<MonoBundleLLVMOptimizer Condition="'$(MonoEnableLLVM)' == 'true'">true</MonoBundleLLVMOptimizer>
@@ -85,8 +85,21 @@
8585

8686
<ItemGroup Condition="'$(TargetsBrowser)' == 'true' or '$(TargetsWasi)' == 'true' or '$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsMacCatalyst)' == 'true'">
8787
<PackageReference Include="Microsoft.NETCore.Runtime.ICU.Transport" PrivateAssets="all" Version="$(MicrosoftNETCoreRuntimeICUTransportVersion)" GeneratePathProperty="true" />
88+
<PackageReference Condition="'$(HostOS)' == 'windows'"
89+
Include="Microsoft.NET.Runtime.Emscripten.3.1.34.Python.win-x64"
90+
PrivateAssets="all"
91+
Version="$(MicrosoftNETRuntimeEmscripten3134Pythonwinx64Version)"
92+
GeneratePathProperty="true" />
8893
</ItemGroup>
8994

95+
<!--
96+
Like Wasm, Wasi needs a 64-bit python on windows to pinvoke into libClang.dll for offset generation.
97+
Only wasi doesn't come with its own python and windows uses 32-bit python, so refer to the transport pack instead.
98+
-->
99+
<PropertyGroup Condition="'$(HostOS)' == 'windows' and '$(TargetsWasi)' == 'true'">
100+
<PythonCmd>$([MSBuild]::NormalizePath('$(PkgMicrosoft_NET_Runtime_Emscripten_3_1_34_Python_win-x64)', 'tools', 'python'))</PythonCmd>
101+
</PropertyGroup>
102+
90103
<!-- CI specific build options -->
91104
<ItemGroup Condition="'$(ContinuousIntegrationBuild)' == 'true' and ('$(TargetsOSX)' == 'true' or '$(TargetsMacCatalyst)' == 'true' or '$(TargetsBrowser)' == 'true' or '$(TargetsWasi)' == 'true' or '$(Targetsillumos)' == 'true')">
92105
<_MonoCMakeArgs Include="-DENABLE_WERROR=1"/>
@@ -815,8 +828,8 @@
815828
<MonoAotCrossOffsetsToolParams Include="--libclang=&quot;$(MonoLibClang)&quot;" />
816829
<MonoAotCrossOffsetsToolParams Condition="'$(MonoAotOffsetsPrefix)' != ''" Include="--prefix=&quot;$(MonoAotOffsetsPrefix)&quot;" />
817830
<MonoAotCrossOffsetsToolParams Condition="'$(MonoAotCMakeSysroot)' != ''" Include="--sysroot=&quot;$(MonoAotCMakeSysroot)&quot;" />
818-
<MonoAotCrossOffsetsToolParams Condition="'$(TargetsBrowser)' == 'true'" Include="--emscripten-sdk=&quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'upstream', 'emscripten'))&quot;" />
819-
<MonoAotCrossOffsetsToolParams Condition="'$(TargetsWasi)' == 'true'" Include="--wasi-sdk=&quot;$([MSBuild]::NormalizePath('$(WASI_SDK_PATH)'))&quot;" />
831+
<MonoAotCrossOffsetsToolParams Condition="'$(TargetsBrowser)' == 'true'" Include="--emscripten-sdk=&quot;$([MSBuild]::NormalizePath('$(EMSDK_PATH)', 'upstream', 'emscripten').TrimEnd('\/'))&quot;" />
832+
<MonoAotCrossOffsetsToolParams Condition="'$(TargetsWasi)' == 'true'" Include="--wasi-sdk=&quot;$([MSBuild]::NormalizePath('$(WASI_SDK_PATH)').TrimEnd('\/'))&quot;" />
820833
</ItemGroup>
821834

822835
<!--
@@ -876,7 +889,8 @@
876889
<PropertyGroup>
877890
<_MonoSkipInitCompiler Condition="'$(AotHostArchitecture)' != '$(BuildArchitecture)'">false</_MonoSkipInitCompiler>
878891
<_MonoSkipInitCompiler Condition="'$(CrossBuild)' == 'true'">false</_MonoSkipInitCompiler>
879-
<_MonoAotCrossOffsetsCommand Condition="'$(MonoUseCrossTool)' == 'true'">$(PythonCmd) $(MonoProjectRoot)mono/tools/offsets-tool/offsets-tool.py @(MonoAotCrossOffsetsToolParams, ' ')</_MonoAotCrossOffsetsCommand>
892+
<_MonoAotCrossOffsetsToolPath>$(MonoProjectRoot)mono\tools\offsets-tool\offsets-tool.py</_MonoAotCrossOffsetsToolPath>
893+
<_MonoAotCrossOffsetsCommand Condition="'$(MonoUseCrossTool)' == 'true'">$(PythonCmd) $(_MonoAotCrossOffsetsToolPath) @(MonoAotCrossOffsetsToolParams, ' ')</_MonoAotCrossOffsetsCommand>
880894
<_MonoAotCMakeConfigureCommand>cmake @(MonoAOTCMakeArgs, ' ') $(MonoCMakeExtraArgs) &quot;$(MonoProjectRoot.TrimEnd('\/'))&quot;</_MonoAotCMakeConfigureCommand>
881895
<_MonoAotCMakeConfigureCommand Condition="'$(_MonoSkipInitCompiler)' != 'true' and '$(HostOS)' != 'windows'">sh -c 'build_arch=&quot;$(_CompilerTargetArch)&quot; ROOTFS_DIR=&quot;$(MonoCrossDir)&quot; compiler=&quot;$(MonoCCompiler)&quot; . &quot;$(RepositoryEngineeringCommonDir)native/init-compiler.sh&quot; &amp;&amp; @(_MonoAotBuildEnv, ' ') $(_MonoAotCMakeConfigureCommand)'</_MonoAotCMakeConfigureCommand>
882896
<_MonoAotCMakeConfigureCommand Condition="'$(_MonoSkipInitCompiler)' == 'true' and '$(HostOS)' != 'windows'">$(_MonoAOTCCOption) $(_MonoAOTCXXOption) @(_MonoAotBuildEnv, ' ') $(_MonoAotCMakeConfigureCommand)</_MonoAotCMakeConfigureCommand>

src/mono/monoaotcross.proj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
<_MonoGenerateOffsetsOSGroups Condition="'$(MonoGenerateOffsetsOSGroups)' != ''">+$(MonoGenerateOffsetsOSGroups)+</_MonoGenerateOffsetsOSGroups>
77
<_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+android+'))">$(_MonoCrossAOTTargetOS)+android+</_MonoCrossAOTTargetOS>
88
<_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+browser+'))">$(_MonoCrossAOTTargetOS)+browser+</_MonoCrossAOTTargetOS>
9+
<_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+wasi+'))">$(_MonoCrossAOTTargetOS)+wasi+</_MonoCrossAOTTargetOS>
910
<_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+tvos+'))">$(_MonoCrossAOTTargetOS)+tvos+</_MonoCrossAOTTargetOS>
1011
<_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+ios+'))">$(_MonoCrossAOTTargetOS)+ios+</_MonoCrossAOTTargetOS>
1112
<_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+maccatalyst+'))">$(_MonoCrossAOTTargetOS)+maccatalyst+</_MonoCrossAOTTargetOS>
1213
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+android+'))">$(MonoAotTargets);android-x64;android-arm64;android-x86;android-arm</MonoAotTargets>
1314
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+browser+'))">$(MonoAotTargets);browser-wasm</MonoAotTargets>
15+
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+wasi+'))">$(MonoAotTargets);wasi-wasm</MonoAotTargets>
1416
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+tvos+'))">$(MonoAotTargets);tvossimulator-x64;tvossimulator-arm64;tvos-arm64</MonoAotTargets>
1517
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+ios+'))">$(MonoAotTargets);iossimulator-x64;iossimulator-arm64;ios-arm64</MonoAotTargets>
1618
<MonoAotTargets Condition="$(_MonoCrossAOTTargetOS.contains('+maccatalyst+'))">$(MonoAotTargets);maccatalyst-x64;maccatalyst-arm64</MonoAotTargets>

0 commit comments

Comments
 (0)