diff --git a/eng/build.sh b/eng/build.sh
index 5b55cabd4ba2af..5f297babbf8392 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -18,8 +18,8 @@ usage()
{
echo "Common settings:"
echo " --subset Build a subset, print available subsets with -subset help (short: -s)"
- echo " --os Build operating system: Windows_NT, Linux, FreeBSD, OSX, tvOS, iOS or Android"
- echo " --arch Build platform: x86, x64, arm, armel or arm64"
+ echo " --os Build operating system: Windows_NT, Linux, FreeBSD, OSX, tvOS, iOS, Android or WebAssembly"
+ echo " --arch Build platform: x86, x64, arm, armel, arm64 or wasm"
echo " --configuration Build configuration: Debug, Release or [CoreCLR]Checked (short: -c)"
echo " --runtimeConfiguration Runtime build configuration: Debug, Release or [CoreCLR]Checked (short: -rc)"
echo " --librariesConfiguration Libraries build configuration: Debug or Release (short: -lc)"
diff --git a/eng/native/init-distro-rid.sh b/eng/native/init-distro-rid.sh
index 3c875a3e28b96f..9c3491d75664c4 100644
--- a/eng/native/init-distro-rid.sh
+++ b/eng/native/init-distro-rid.sh
@@ -165,6 +165,8 @@ initDistroRidGlobal()
distroRid="ios-$buildArch"
elif [ "$targetOs" = "Android" ]; then
distroRid="android-$buildArch"
+ elif [ "$targetOs" = "WebAssembly" ]; then
+ distroRid="wasm-$buildArch"
elif [ "$targetOs" = "FreeBSD" ]; then
distroRid="freebsd-$buildArch"
elif [ "$targetOs" = "SunOS" ]; then
diff --git a/src/mono/mono.proj b/src/mono/mono.proj
index 8f2ee648712f03..54b95011180553 100644
--- a/src/mono/mono.proj
+++ b/src/mono/mono.proj
@@ -31,6 +31,7 @@
/Applications/Xcode.app/Contents/Developer
true
true
+ true
@@ -642,6 +643,40 @@
<_MonoCFLAGS Include="-fexceptions" />
<_MonoCXXFLAGS Include="-fexceptions -s DISABLE_EXCEPTION_CATCHING=0" />
<_MonoAC_VARS Include="ac_cv_func_shm_open_working_with_mmap=no" />
+
+
+ <_MonoAotCrossConfigureParams Include="--with-core=only" />
+ <_MonoAotCrossConfigureParams Include="--enable-maintainer-mode" />
+ <_MonoAotCrossConfigureParams Include="--enable-compile-warnings" />
+ <_MonoAotCrossConfigureParams Include="--prefix=$(MonoObjDir)cross/out" />
+ <_MonoAotCrossConfigureParams Include="--disable-boehm" />
+ <_MonoAotCrossConfigureParams Include="--disable-btls" />
+ <_MonoAotCrossConfigureParams Include="--disable-iconv" />
+ <_MonoAotCrossConfigureParams Include="--disable-libraries" />
+ <_MonoAotCrossConfigureParams Include="--disable-mcs-build" />
+ <_MonoAotCrossConfigureParams Include="--disable-nls" />
+ <_MonoAotCrossConfigureParams Include="--enable-dtrace=no" />
+ <_MonoAotCrossConfigureParams Include="--enable-icall-symbol-map" />
+ <_MonoAotCrossConfigureParams Include="--enable-minimal=com,remoting" />
+ <_MonoAotCrossConfigureParams Include="--disable-crash-reporting" />
+ <_MonoAotCrossConfigureParams Include="--with-cooperative-gc=no" />
+ <_MonoAotCrossConfigureParams Include="--enable-hybrid-suspend=no" />
+ <_MonoAotCrossConfigureParams Include="--target=wasm32-unknown-none" />
+ <_MonoAotCrossConfigureParams Include="--with-cross-offsets=$(MonoObjDir)cross/offsets-wasm32-unknown-none.h" />
+
+
+ <_MonoAotCrossCFLAGS Include="-O2" />
+ <_MonoAotCrossCFLAGS Include="-g" />
+ <_MonoAotCrossCFLAGS Include="-m64" />
+
+ <_MonoAotCrossOffsetsToolParams Include="--netcore" />
+ <_MonoAotCrossOffsetsToolParams Include="--abi=wasm32-unknown-unknown" />
+ <_MonoAotCrossOffsetsToolParams Include="--targetdir="$(MonoObjDir)"" />
+ <_MonoAotCrossOffsetsToolParams Include="--monodir="$(MonoProjectRoot)"" />
+ <_MonoAotCrossOffsetsToolParams Include="--outfile="$(MonoObjDir)cross/offsets-wasm32-unknown-none.h"" />
+ <_MonoAotCrossOffsetsToolParams Include="--emscripten-sdk="$(EMSDK_PATH)/upstream/emscripten"" />
+ <_MonoAotCrossOffsetsToolParams Include="--libclang="$(EMSDK_PATH)/upstream/lib/libclang.dylib"" Condition="$([MSBuild]::IsOSPlatform('OSX'))" />
+ <_MonoAotCrossOffsetsToolParams Include="--libclang="$(EMSDK_PATH)/upstream/lib/libclang.so"" Condition="!$([MSBuild]::IsOSPlatform('OSX'))" />
@@ -716,7 +751,7 @@
-
+
@@ -906,6 +941,7 @@
<_MonoAotCrossFilePath Condition="'$(TargetsiOS)' == 'true' and '$(Platform)' == 'arm64'">$(MonoObjDir)cross\out\bin\aarch64-darwin-mono-sgen
<_MonoAotCrossFilePath Condition="'$(TargetsiOS)' == 'true' and '$(Platform)' == 'arm'">$(MonoObjDir)cross\out\bin\arm-darwin-mono-sgen
<_MonoAotCrossFilePath Condition="'$(TargetstvOS)' == 'true' and '$(Platform)' == 'arm64'">$(MonoObjDir)cross\out\bin\aarch64-darwin-mono-sgen
+ <_MonoAotCrossFilePath Condition="'$(TargetsWASM)' == 'true'">$(MonoObjDir)cross\out\bin\wasm32-unknown-none-mono-sgen
@@ -929,7 +965,7 @@
+ Condition="'$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsAndroid)' == 'true' or '$(TargetsWASM)' == 'true'"/>