diff --git a/eng/pipelines/templates/stages/vmr-build.yml b/eng/pipelines/templates/stages/vmr-build.yml
index c782ff6151e9..03844d0e6943 100644
--- a/eng/pipelines/templates/stages/vmr-build.yml
+++ b/eng/pipelines/templates/stages/vmr-build.yml
@@ -348,6 +348,19 @@ stages:
### Additional jobs for full build ###
- ${{ if in(parameters.scope, 'full') }}:
+ - template: ../jobs/vmr-build.yml
+ parameters:
+ buildName: Android_Shortstack
+ isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }}
+ vmrBranch: ${{ variables.VmrBranch }}
+ architecture: x64
+ pool:
+ name: ${{ variables.defaultPoolName }}
+ demands: ${{ variables.defaultPoolDemandsLinux }}
+ container: ${{ variables.androidCrossContainer }}
+ targetOS: android
+ targetArchitecture: x64
+
- template: ../jobs/vmr-build.yml
parameters:
buildName: OSX
diff --git a/eng/pipelines/templates/variables/vmr-stage.yml b/eng/pipelines/templates/variables/vmr-stage.yml
index 4d906db13349..50b03acc1faa 100644
--- a/eng/pipelines/templates/variables/vmr-stage.yml
+++ b/eng/pipelines/templates/variables/vmr-stage.yml
@@ -26,6 +26,8 @@ variables:
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-amd64
- name: marinerArm64CrossContainer
value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-arm64
+- name: androidCrossContainer
+ value: mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-cross-android-amd64
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- name: defaultPoolName
diff --git a/src/SourceBuild/content/Directory.Build.props b/src/SourceBuild/content/Directory.Build.props
index 91df19fb250f..53bfbab3cc82 100644
--- a/src/SourceBuild/content/Directory.Build.props
+++ b/src/SourceBuild/content/Directory.Build.props
@@ -19,6 +19,20 @@
$(BuildOS)
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+ runtime
+
+
$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture.ToString().ToLowerInvariant)
$(BuildArchitecture)
@@ -49,6 +63,8 @@
win-$(TargetArchitecture)
$(PortableRid)
+ $(TargetOS)-$(TargetArchitecture)
+ win-$(TargetArchitecture)
diff --git a/src/SourceBuild/content/repo-projects/runtime.proj b/src/SourceBuild/content/repo-projects/runtime.proj
index 1735ab3f8de5..65d29f9a33d9 100644
--- a/src/SourceBuild/content/repo-projects/runtime.proj
+++ b/src/SourceBuild/content/repo-projects/runtime.proj
@@ -15,8 +15,8 @@
$(BuildArgs) $(FlagParameterPrefix)arch $(TargetArchitecture)
$(BuildArgs) $(FlagParameterPrefix)os $(TargetOS)
$(BuildArgs) /p:TargetRid=$(TargetRid)
- $(BuildArgs) /p:RuntimeOS=$(RuntimeOS)
- $(BuildArgs) /p:BaseOS=$(BaseOS)
+ $(BuildArgs) /p:RuntimeOS=$(RuntimeOS)
+ $(BuildArgs) /p:BaseOS=$(BaseOS)
diff --git a/src/SourceBuild/patches/runtime/0002-short-stack-support.patch b/src/SourceBuild/patches/runtime/0002-short-stack-support.patch
new file mode 100644
index 000000000000..783d86b3c17a
--- /dev/null
+++ b/src/SourceBuild/patches/runtime/0002-short-stack-support.patch
@@ -0,0 +1,48 @@
+From 6e36330872998c791a2c0d31b688e1bdece2451f Mon Sep 17 00:00:00 2001
+From: Jo Shields
+Date: Fri, 2 Feb 2024 06:56:20 -0500
+Subject: [PATCH] Source built short stack support (#97725)
+
+Backport: https://github.com/dotnet/runtime/pull/97725
+
+--- a/eng/SourceBuild.props 2024-02-07 11:01:33.807337902 -0500
++++ b/eng/SourceBuild.props 2024-02-05 16:48:58.219933758 -0500
+@@ -15,6 +15,7 @@
+
+ <_targetRidPlatformIndex>$(TargetRid.LastIndexOf('-'))
+ $(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))
++ $(TargetRid.Substring(0, $(_targetRidPlatformIndex)))
+
+ <_hostRidPlatformIndex>$(_hostRid.LastIndexOf('-'))
+ <_hostArch>$(_hostRid.Substring($(_hostRidPlatformIndex)).TrimStart('-'))
+@@ -22,6 +23,17 @@
+ minimal
+
+
++
++ true
++ true
++ true
++ true
++ true
++ true
++ true
++ true
++
++
+
+
+@@ -29,9 +41,10 @@
+ This allows to build the repository using './build.sh /p:DotNetBuildFromSource=true'.
+ Properties that control flags from source-build, and the expected output for source-build should be added to this file. -->
+ $(InnerBuildArgs) $(FlagParameterPrefix)arch $(TargetArch)
+- $(InnerBuildArgs) $(FlagParameterPrefix)cross
++ $(InnerBuildArgs) $(FlagParameterPrefix)os $(TargetOS)
++ $(InnerBuildArgs) $(FlagParameterPrefix)cross
+ $(InnerBuildArgs) $(FlagParameterPrefix)configuration $(Configuration)
+- $(InnerBuildArgs) $(FlagParameterPrefix)allconfigurations
++ $(InnerBuildArgs) $(FlagParameterPrefix)allconfigurations
+ $(InnerBuildArgs) $(FlagParameterPrefix)verbosity $(LogVerbosity)
+ $(InnerBuildArgs) $(FlagParameterPrefix)nodereuse $(ArcadeFalseBoolBuildArg)
+ $(InnerBuildArgs) $(FlagParameterPrefix)warnAsError $(ArcadeFalseBoolBuildArg)