diff --git a/eng/Subsets.props b/eng/Subsets.props
index 692812a9f7651..140299508e6a4 100644
--- a/eng/Subsets.props
+++ b/eng/Subsets.props
@@ -45,7 +45,7 @@
mono.llvm+
mono.llvm+
$(DefaultMonoSubsets)mono.wasmruntime+
- $(DefaultMonoSubsets)mono.aotcross+
+ $(DefaultMonoSubsets)mono.aotcross+
$(DefaultMonoSubsets)mono.runtime+mono.corelib+mono.packages
libs.native+libs.ref+libs.src+libs.pretest+libs.packages
@@ -288,7 +288,7 @@
-
+
diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml
index 586e9df6d7bcd..d006c2cf29e14 100644
--- a/eng/pipelines/common/global-build-job.yml
+++ b/eng/pipelines/common/global-build-job.yml
@@ -11,7 +11,7 @@ parameters:
variables: []
targetRid: ''
timeoutInMinutes: ''
- dependsOn: ''
+ dependsOn: []
pool: ''
platform: ''
condition: true
@@ -89,11 +89,11 @@ jobs:
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- template: /eng/pipelines/common/restore-internal-tools.yml
- - ${{ if eq(parameters.monoCrossAOTTargetOS, 'Android') }}:
+ - ${{ each monoCrossAOTTargetOS in parameters.monoCrossAOTTargetOS }}:
- task: DownloadPipelineArtifact@2
- displayName: Download AOT offset files
+ displayName: Download ${{monoCrossAOTTargetOS}} AOT offset files
inputs:
- artifact: Mono_Offsets_Android
+ artifact: Mono_Offsets_${{monoCrossAOTTargetOS}}
path: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'Android') }}:
diff --git a/eng/pipelines/mono/templates/build-job.yml b/eng/pipelines/mono/templates/build-job.yml
index 1b7c3d9abd8da..48b18b1c8b50c 100644
--- a/eng/pipelines/mono/templates/build-job.yml
+++ b/eng/pipelines/mono/templates/build-job.yml
@@ -13,8 +13,8 @@ parameters:
isOfficialBuild: false
crossBuild: false
crossrootfsDir: ''
- dependsOn: ''
- monoCrossAOTTargetOS: ''
+ dependsOn: []
+ monoCrossAOTTargetOS: []
dependOnEvaluatePaths: false
### Product build
@@ -93,9 +93,9 @@ jobs:
- ${{ if eq(parameters.runtimeVariant, 'llvmaot') }}:
- name: llvmParameter
value: /p:MonoEnableLLVM=true /p:MonoBundleLLVMOptimizer=true $(llvmCxxAbi)
- - ${{ if eq(parameters.monoCrossAOTTargetOS, 'Android') }}:
+ - ${{ if gt(length(parameters.monoCrossAOTTargetOS),0) }}:
- name: aotCrossParameter
- value: /p:BuildMonoCrossAOT=true /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
+ value: /p:MonoCrossAOTTargetOS=${{join('+',parameters.monoCrossAOTTargetOS)}} /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
- ${{ parameters.variables }}
steps:
@@ -112,11 +112,11 @@ jobs:
- script: $(Build.SourcesDirectory)\eng\common\init-tools-native.cmd -InstallDirectory $(Build.SourcesDirectory)\native-tools -Force
displayName: Install native dependencies
- - ${{ if eq(parameters.monoCrossAOTTargetOS, 'Android') }}:
+ - ${{ each monoCrossAOTTargetOS in parameters.monoCrossAOTTargetOS }}:
- task: DownloadPipelineArtifact@2
- displayName: Download AOT offset files
+ displayName: Download ${{monoCrossAOTTargetOS}} AOT offset files
inputs:
- artifact: Mono_Offsets_Android
+ artifact: Mono_Offsets_${{monoCrossAOTTargetOS}}
path: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
- ${{ if in(parameters.osGroup, 'OSX', 'iOS','tvOS') }}:
diff --git a/eng/pipelines/mono/templates/generate-offsets.yml b/eng/pipelines/mono/templates/generate-offsets.yml
index 7b3117706ef5a..ff3b3e9d70ca7 100644
--- a/eng/pipelines/mono/templates/generate-offsets.yml
+++ b/eng/pipelines/mono/templates/generate-offsets.yml
@@ -62,10 +62,10 @@ jobs:
# Build
- ${{ if ne(parameters.osGroup, 'windows') }}:
- - script: ./build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOnly=true
+ - script: ./build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOSGroups=$(osGroup)
displayName: Generate AOT offsets
- ${{ if eq(parameters.osGroup, 'windows') }}:
- - script: build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOnly=true
+ - script: build$(scriptExt) -subset mono.aotcross -c $(buildConfig) -arch $(archType) $(osOverride) -ci $(officialBuildIdArg) /p:MonoGenerateOffsetsOSGroups=$(osGroup)
displayName: Generate AOT offsets
# Upload offset files
diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml
index 2bab2f0bfcf87..4dd467fe931e7 100644
--- a/eng/pipelines/runtime-official.yml
+++ b/eng/pipelines/runtime-official.yml
@@ -132,9 +132,10 @@ stages:
buildConfig: release
platforms:
- Android_x64
+ - Browser_wasm
#
- # Build Mono release Android AOT cross-compiler
+ # Build Mono release AOT cross-compilers
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -146,15 +147,20 @@ stages:
- Linux_x64
jobParameters:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
- /p:BuildMonoCrossAOT=true /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
- nameSuffix: AndroidAOT_Mono
- runtimeVariant: crossandroid
- dependsOn: mono_android_offsets
- monoCrossAOTTargetOS: Android
+ /p:MonoCrossAOTTargetOS=Android+Browser /p:SkipMonoCrossJitConfigure=true /p:BuildMonoAOTCrossCompilerOnly=true
+ nameSuffix: CrossAOT_Mono
+ runtimeVariant: crossaot
+ dependsOn:
+ - mono_android_offsets
+ - mono_browser_offsets
+ monoCrossAOTTargetOS:
+ - Android
+ - Browser
isOfficialBuild: ${{ variables.isOfficialBuild }}
extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
extraStepsParameters:
name: MonoRuntimePacks
+
#
# Build Mono LLVM runtime packs
#
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index da9d540235a96..6984eecd6b69b 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -192,6 +192,7 @@ jobs:
buildConfig: release
platforms:
- Android_x64
+ - Browser_wasm
jobParameters:
condition: >-
or(
@@ -494,9 +495,13 @@ jobs:
# - windows_arm
# - windows_arm64
jobParameters:
- runtimeVariant: crossandroid
- dependsOn: mono_android_offsets
- monoCrossAOTTargetOS: Android
+ runtimeVariant: crossaot
+ dependsOn:
+ - mono_android_offsets
+ - mono_browser_offsets
+ monoCrossAOTTargetOS:
+ - Android
+ - Browser
condition: >-
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj b/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj
index 97ff1a1de517a..0859d9debbea8 100644
--- a/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj
+++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/monocrossaot.sfxproj
@@ -1,7 +1,9 @@
- android-x64;android-arm64;android-x86;android-arm
+ <_MonoCrossAOTTargetOS Condition="'$(MonoCrossAOTTargetOS)' != ''">+$(MonoCrossAOTTargetOS.ToLowerInvariant())+
+ $(MonoAotTargets);android-x64;android-arm64;android-x86;android-arm
+ $(MonoAotTargets);browser-wasm
diff --git a/src/mono/mono.proj b/src/mono/mono.proj
index 68a5d51a4bb31..a0b25a4e0cdec 100644
--- a/src/mono/mono.proj
+++ b/src/mono/mono.proj
@@ -74,7 +74,7 @@
-
+
@@ -472,10 +472,10 @@
-
+
-
+
$(RuntimeBinDir)libmono-ilgen.a
- <_MonoRuntimeArtifacts Condition="'$(TargetsBrowser)' == 'true'" Include="$(MonoObjDir)out\lib\libmono-profiler-aot.a">
+ <_MonoRuntimeArtifacts Condition="'$(TargetsBrowser)' == 'true' and '$(BuildMonoAOTCrossCompilerOnly)' != 'true'" Include="$(MonoObjDir)out\lib\libmono-profiler-aot.a">
$(RuntimeBinDir)libmono-profiler-aot.a
+ Condition="'$(MonoGenerateOffsetsOSGroups)' == '' and ('$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsAndroid)' == 'true' or '$(TargetsBrowser)' == 'true')"/>
-
+
diff --git a/src/mono/monoaotcross.proj b/src/mono/monoaotcross.proj
index 99ad16a0655f7..260d5203ad55b 100644
--- a/src/mono/monoaotcross.proj
+++ b/src/mono/monoaotcross.proj
@@ -5,7 +5,12 @@
- Android-x64;Android-arm64;Android-x86;Android-arm
+ <_MonoCrossAOTTargetOS Condition="'$(MonoCrossAOTTargetOS)' != ''">+$(MonoCrossAOTTargetOS.ToLowerInvariant())+
+ <_MonoGenerateOffsetsOSGroups Condition="'$(MonoGenerateOffsetsOSGroups)' != ''">+$(MonoGenerateOffsetsOSGroups.ToLowerInvariant())+
+ <_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+android+'))">$(_MonoCrossAOTTargetOS)+android+
+ <_MonoCrossAOTTargetOS Condition="$(_MonoGenerateOffsetsOSGroups.contains('+browser+'))">$(_MonoCrossAOTTargetOS)+browser+
+ $(MonoAotTargets);Android-x64;Android-arm64;Android-x86;Android-arm
+ $(MonoAotTargets);Browser-wasm