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