diff --git a/eng/DotNetBuild.props b/eng/DotNetBuild.props
index 49f7bdaf9cf346..fb0e235841f27a 100644
--- a/eng/DotNetBuild.props
+++ b/eng/DotNetBuild.props
@@ -33,6 +33,7 @@
true
true
true
+ true
$(RuntimeBinDir)$(MonoStaticLibFileName)
<_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)" Condition="Exists($(_MonoAotCrossFilePath))">
- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName)$(ExeSuffix)
+ $(MonoAotCrossDir)$(MonoAotCrossName)$(ExeSuffix)
<_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dbg" Condition="Exists('$(_MonoAotCrossFilePath).dbg')">
- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dbg
+ $(MonoAotCrossDir)$(MonoAotCrossName).dbg
<_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dwarf" Condition="Exists('$(_MonoAotCrossFilePath).dwarf')">
- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dwarf
+ $(MonoAotCrossDir)$(MonoAotCrossName).dwarf
<_MonoRuntimeArtifacts Include="$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb" Condition="Exists('$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb')">
- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).pdb
+ $(MonoAotCrossDir)$(MonoAotCrossName).pdb
<_MonoRuntimeArtifacts Include="@(_MonoRuntimeComponentsStaticFilePath)">
@@ -1119,10 +1119,10 @@ JS_ENGINES = [NODE_JS]
$(RuntimeBinDir)libc++abi.so.1
<_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and ((('$(MonoAOTBundleLLVMOptimizer)' == 'true' or '$(MonoAOTEnableLLVM)' == 'true') and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\lib\libc++.so.1">
- $(RuntimeBinDir)cross\$(OutputRID)\libc++.so.1
+ $(MonoAotCrossDir)libc++.so.1
<_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and ((('$(MonoAOTBundleLLVMOptimizer)' == 'true' or '$(MonoAOTEnableLLVM)' == 'true') and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\lib\libc++abi.so.1">
- $(RuntimeBinDir)cross\$(OutputRID)\libc++abi.so.1
+ $(MonoAotCrossDir)libc++abi.so.1
<_MonoRuntimeArtifacts Condition="'$(MonoBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)">
$(RuntimeBinDir)\llc$(ExeSuffix)
@@ -1131,10 +1131,10 @@ JS_ENGINES = [NODE_JS]
$(RuntimeBinDir)\opt$(ExeSuffix)
<_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)">
- $(RuntimeBinDir)cross\$(OutputRID)\llc$(ExeSuffix)
+ $(MonoAotCrossDir)llc$(ExeSuffix)
<_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\opt$(ExeSuffix)">
- $(RuntimeBinDir)cross\$(OutputRID)\opt$(ExeSuffix)
+ $(MonoAotCrossDir)opt$(ExeSuffix)
<_MonoIncludeArtifacts Include="$(MonoObjDir)out\include\**" />
<_MonoRuntimeArtifacts Condition="'$(MonoComponentsStatic)' != 'true' and Exists('$(MonoObjDir)out\lib\Mono.release.framework')" Include="@(_MonoRuntimeComponentsSharedFilePath)">
diff --git a/src/mono/monoaotcross.proj b/src/mono/monoaotcross.proj
index c747e87f763eab..d5969fb48fd861 100644
--- a/src/mono/monoaotcross.proj
+++ b/src/mono/monoaotcross.proj
@@ -43,20 +43,23 @@
$(MonoAotTargetRid.Substring($([MSBuild]::Add(1, $(MonoAotTargetRid.LastIndexOf('-'))))))
$(TargetOS)
linux-musl
+ $(TargetArchitecture)
+ Properties="TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS);AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture)" />
+ Properties="AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture);BuildMonoAOTCrossCompilerOnly=true;TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS)" />
<_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" />
+
+