From 6a4b830ba6bfbb0b4dd6c72bda9aba3ee0d9666f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Mon, 18 Nov 2024 22:38:56 +0100 Subject: [PATCH] [mono] Fix output directory for cross compilers if OutputRID is overridden This happens e.g. in the VMR where OutputRID is set globally. We assumed in monoaotcross.proj that the inner mono cross compiler runtime build would put files into a path that matches the target RID but we were using OutputRID in the inner build. Instead use the preexisting MonoAotCrossDir property. Also fix marking DotNetBuildMonoCrossAOT=true as a ShortStack build. --- eng/DotNetBuild.props | 1 + src/mono/mono.proj | 16 ++++++++-------- src/mono/monoaotcross.proj | 7 +++++-- 3 files changed, 14 insertions(+), 10 deletions(-) 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())\**" /> + +