diff --git a/eng/build.sh b/eng/build.sh index 5b55cabd4ba2a..5f297babbf839 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 3c875a3e28b96..9c3491d75664c 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 8f2ee648712f0..54b9501118055 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'"/>