forked from dotnet/sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
254cd42
commit 0b1a0c6
Showing
1 changed file
with
104 additions
and
0 deletions.
There are no files selected for viewing
104 changes: 104 additions & 0 deletions
104
...urceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= <alex.koeplinger@outlook.com> | ||
Date: Mon, 18 Nov 2024 18:50:05 +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 AotHostOS and AotHostArchitecture properties which are more correct. | ||
--- | ||
src/mono/mono.proj | 17 +++++++++-------- | ||
src/mono/monoaotcross.proj | 9 ++++++--- | ||
2 files changed, 15 insertions(+), 11 deletions(-) | ||
|
||
diff --git a/src/mono/mono.proj b/src/mono/mono.proj | ||
index 56eb36acbc7..5bb54cf7415 100644 | ||
--- a/src/mono/mono.proj | ||
+++ b/src/mono/mono.proj | ||
@@ -1067,6 +1067,7 @@ JS_ENGINES = [NODE_JS] | ||
</PropertyGroup> | ||
<PropertyGroup Condition="'$(BuildMonoAOTCrossCompiler)' == 'true'"> | ||
<_MonoAotCrossFilePath>$(MonoObjCrossDir)out\bin\$(MonoAotCrossName)$(ExeSuffix)</_MonoAotCrossFilePath> | ||
+ <_MonoAotCrossBinPath>$(RuntimeBinDir)cross\$(AotHostOS).$(AotHostArchitecture)\</_MonoAotCrossBinPath> | ||
</PropertyGroup> | ||
<PropertyGroup> | ||
<_MonoLLVMHostArchitecture>$(AotHostArchitecture)</_MonoLLVMHostArchitecture> | ||
@@ -1094,16 +1095,16 @@ JS_ENGINES = [NODE_JS] | ||
<Destination>$(RuntimeBinDir)$(MonoStaticLibFileName)</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)" Condition="Exists($(_MonoAotCrossFilePath))"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName)$(ExeSuffix)</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)$(MonoAotCrossName)$(ExeSuffix)</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dbg" Condition="Exists('$(_MonoAotCrossFilePath).dbg')"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dbg</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)$(MonoAotCrossName).dbg</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dwarf" Condition="Exists('$(_MonoAotCrossFilePath).dwarf')"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dwarf</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)$(MonoAotCrossName).dwarf</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Include="$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb" Condition="Exists('$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb')"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).pdb</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)$(MonoAotCrossName).pdb</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<!-- copy the mono runtime component shared or static libraries --> | ||
<_MonoRuntimeArtifacts Include="@(_MonoRuntimeComponentsStaticFilePath)"> | ||
@@ -1119,10 +1120,10 @@ JS_ENGINES = [NODE_JS] | ||
<Destination>$(RuntimeBinDir)libc++abi.so.1</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and ((('$(MonoAOTBundleLLVMOptimizer)' == 'true' or '$(MonoAOTEnableLLVM)' == 'true') and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\lib\libc++.so.1"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\libc++.so.1</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)libc++.so.1</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Condition="'$(HostOS)' == 'Linux' and ((('$(MonoAOTBundleLLVMOptimizer)' == 'true' or '$(MonoAOTEnableLLVM)' == 'true') and '$(MonoUseLibCxx)' == 'true') or '$(TargetArchitecture)' == 'wasm')" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\lib\libc++abi.so.1"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\libc++abi.so.1</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)libc++abi.so.1</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Condition="'$(MonoBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)"> | ||
<Destination>$(RuntimeBinDir)\llc$(ExeSuffix)</Destination> | ||
@@ -1131,10 +1132,10 @@ JS_ENGINES = [NODE_JS] | ||
<Destination>$(RuntimeBinDir)\opt$(ExeSuffix)</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\llc$(ExeSuffix)</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)llc$(ExeSuffix)</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\opt$(ExeSuffix)"> | ||
- <Destination>$(RuntimeBinDir)cross\$(OutputRID)\opt$(ExeSuffix)</Destination> | ||
+ <Destination>$(_MonoAotCrossBinPath)opt$(ExeSuffix)</Destination> | ||
</_MonoRuntimeArtifacts> | ||
<_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 c747e87f763..51595d4867a 100644 | ||
--- a/src/mono/monoaotcross.proj | ||
+++ b/src/mono/monoaotcross.proj | ||
@@ -43,20 +43,23 @@ | ||
<MonoAotTargetArchitecture>$(MonoAotTargetRid.Substring($([MSBuild]::Add(1, $(MonoAotTargetRid.LastIndexOf('-'))))))</MonoAotTargetArchitecture> | ||
<MonoAotHostOS>$(TargetOS)</MonoAotHostOS> | ||
<MonoAotHostOS Condition="'$(TargetsLinuxMusl)' == 'true'">linux-musl</MonoAotHostOS> | ||
+ <MonoAotHostArchitecture>$(TargetArchitecture)</MonoAotHostArchitecture> | ||
</PropertyGroup> | ||
|
||
<MSBuild Targets="Build" | ||
Projects="$(MSBuildThisFileDirectory)llvm\llvm-init.proj" | ||
- Properties="TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS);AotHostArchitecture=$(TargetArchitecture)" /> | ||
+ Properties="TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS);AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture)" /> | ||
|
||
<MSBuild Targets="BuildMono" | ||
Projects="$(MSBuildThisFileDirectory)mono.proj" | ||
- Properties="AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(TargetArchitecture);BuildMonoAOTCrossCompilerOnly=true;TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS)" /> | ||
+ Properties="AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture);BuildMonoAOTCrossCompilerOnly=true;TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS)" /> | ||
|
||
<ItemGroup> | ||
- <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" /> | ||
+ <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotHostOS).$(MonoAotHostArchitecture)\**" /> | ||
</ItemGroup> | ||
|
||
+ <Error Condition="'@(_MonoAOTCrossFiles)' == ''" Text="No AOT cross files found for $(MonoAotTargetRid)" /> | ||
+ | ||
<Message Text="Copying @(_MonoAOTCrossFiles) to $(RealRuntimeBinDir)cross\$(TargetOS)-$(TargetArchitecture.ToLower())\$(MonoAotTargetRid.ToLower())" Importance="High" /> | ||
|
||
<Copy SourceFiles="@(_MonoAOTCrossFiles)" DestinationFolder="$(RealRuntimeBinDir)cross\$(TargetOS)-$(TargetArchitecture.ToLower())\$(MonoAotTargetRid.ToLower())"> |