From 254cd42c14f7b103721dc9be10412b5e207fc9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Mon, 11 Nov 2024 20:30:40 +0100 Subject: [PATCH 1/5] [VMR] Enable building Mono Cross AOT verticals Contributes to https://github.com/dotnet/source-build/issues/3902 --- eng/pipelines/templates/stages/vmr-build.yml | 106 ++++++++++++++++++ src/SourceBuild/content/Directory.Build.props | 4 +- .../content/repo-projects/runtime.proj | 1 + 3 files changed, 110 insertions(+), 1 deletion(-) diff --git a/eng/pipelines/templates/stages/vmr-build.yml b/eng/pipelines/templates/stages/vmr-build.yml index 33a4bdae80b6..1d2083389922 100644 --- a/eng/pipelines/templates/stages/vmr-build.yml +++ b/eng/pipelines/templates/stages/vmr-build.yml @@ -942,6 +942,64 @@ stages: targetArchitecture: arm64 targetRid: ${{ variables.linuxMuslArm64Rid }} + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_ShortStack_Alpine_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: x64 + pool: ${{ parameters.pool_Linux }} + container: ${{ variables.azurelinuxX64AlpineCrossContainer }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux-musl + targetArchitecture: x64 + targetRid: ${{ variables.linuxMuslX64Rid }} + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_ShortStack_Alpine_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: arm64 + pool: ${{ parameters.pool_Linux }} + container: ${{ variables.azurelinuxArm64AlpineCrossContainer }} + crossRootFs: '/crossrootfs/arm64' + targetOS: linux-musl + targetArchitecture: arm64 + targetRid: ${{ variables.linuxMuslX64Rid }} + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_ShortStack_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: x64 + pool: ${{ parameters.pool_Linux_Shortstack }} + container: ${{ variables.azurelinuxX64CrossContainer }} + crossRootFs: '/crossrootfs/x64' + targetOS: linux + targetArchitecture: x64 + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + + - template: ../jobs/vmr-build.yml + parameters: + buildName: AzureLinux_x64_Cross_ShortStack_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: arm64 + pool: ${{ parameters.pool_Linux_Shortstack }} + container: ${{ variables.azurelinuxArm64CrossContainer }} + crossRootFs: '/crossrootfs/arm64' + targetOS: linux + targetArchitecture: arm64 + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + - template: ../jobs/vmr-build.yml parameters: buildName: AzureLinux_x64_Cross_ShortStack_Mono_LLVMAOT @@ -993,6 +1051,30 @@ stages: targetOS: osx targetArchitecture: arm64 + - template: ../jobs/vmr-build.yml + parameters: + buildName: OSX_ShortStack_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: x64 + pool: ${{ parameters.pool_Mac }} + targetOS: osx + targetArchitecture: x64 + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + + - template: ../jobs/vmr-build.yml + parameters: + buildName: OSX_ShortStack_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: arm64 + pool: ${{ parameters.pool_Mac }} + targetOS: osx + targetArchitecture: arm64 + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + - template: ../jobs/vmr-build.yml parameters: buildName: OSX_ShortStack_Mono_LLVMJIT @@ -1051,6 +1133,30 @@ stages: targetOS: windows targetArchitecture: x64 + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows_ShortStack_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: x64 + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: x64 + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + + - template: ../jobs/vmr-build.yml + parameters: + buildName: Windows_ShortStack_Mono_CrossAOT + isBuiltFromVmr: ${{ parameters.isBuiltFromVmr }} + vmrBranch: ${{ variables.VmrBranch }} + architecture: arm64 + pool: ${{ parameters.pool_Windows }} + targetOS: windows + targetArchitecture: arm64 + extraProperties: /p:DotNetBuildMonoCrossAOT=true + runTests: false + - template: ../jobs/vmr-build.yml parameters: buildName: Windows diff --git a/src/SourceBuild/content/Directory.Build.props b/src/SourceBuild/content/Directory.Build.props index f088f0499d2e..2de080d8f33e 100644 --- a/src/SourceBuild/content/Directory.Build.props +++ b/src/SourceBuild/content/Directory.Build.props @@ -19,7 +19,7 @@ $(TargetOS) - + true true @@ -34,6 +34,8 @@ true true + + true runtime diff --git a/src/SourceBuild/content/repo-projects/runtime.proj b/src/SourceBuild/content/repo-projects/runtime.proj index 6ece535e2a89..5c187068e132 100644 --- a/src/SourceBuild/content/repo-projects/runtime.proj +++ b/src/SourceBuild/content/repo-projects/runtime.proj @@ -14,6 +14,7 @@ $(BuildArgs) /p:DotNetBuildMonoEnableLLVM=$(DotNetBuildMonoEnableLLVM) $(BuildArgs) /p:DotNetBuildMonoAOTEnableLLVM=$(DotNetBuildMonoAOTEnableLLVM) $(BuildArgs) /p:DotNetBuildMonoBundleLLVMOptimizer=$(DotNetBuildMonoBundleLLVMOptimizer) + $(BuildArgs) /p:DotNetBuildMonoCrossAOT=$(DotNetBuildMonoCrossAOT) $(BuildArgs) $(FlagParameterPrefix)pgoinstrument $(BuildArgs) /p:UseSystemLibs=$(UseSystemLibs) From 0b1a0c6b741a53934e3779c031bb3e25c9944244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Mon, 18 Nov 2024 18:53:08 +0100 Subject: [PATCH 2/5] Add patch for https://github.com/dotnet/runtime/pull/109932 --- ...directory-for-cross-compilers-if-Out.patch | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch diff --git a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch new file mode 100644 index 000000000000..b2a421e90a07 --- /dev/null +++ b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch @@ -0,0 +1,104 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= +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] + + + <_MonoAotCrossFilePath>$(MonoObjCrossDir)out\bin\$(MonoAotCrossName)$(ExeSuffix) ++ <_MonoAotCrossBinPath>$(RuntimeBinDir)cross\$(AotHostOS).$(AotHostArchitecture)\ + + + <_MonoLLVMHostArchitecture>$(AotHostArchitecture) +@@ -1094,16 +1095,16 @@ JS_ENGINES = [NODE_JS] + $(RuntimeBinDir)$(MonoStaticLibFileName) + + <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)" Condition="Exists($(_MonoAotCrossFilePath))"> +- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName)$(ExeSuffix) ++ $(_MonoAotCrossBinPath)$(MonoAotCrossName)$(ExeSuffix) + + <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dbg" Condition="Exists('$(_MonoAotCrossFilePath).dbg')"> +- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dbg ++ $(_MonoAotCrossBinPath)$(MonoAotCrossName).dbg + + <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dwarf" Condition="Exists('$(_MonoAotCrossFilePath).dwarf')"> +- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dwarf ++ $(_MonoAotCrossBinPath)$(MonoAotCrossName).dwarf + + <_MonoRuntimeArtifacts Include="$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb" Condition="Exists('$(MonoObjCrossDir)out\bin\PDB\$(MonoAotCrossName).pdb')"> +- $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).pdb ++ $(_MonoAotCrossBinPath)$(MonoAotCrossName).pdb + + + <_MonoRuntimeArtifacts Include="@(_MonoRuntimeComponentsStaticFilePath)"> +@@ -1119,10 +1120,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 ++ $(_MonoAotCrossBinPath)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 ++ $(_MonoAotCrossBinPath)libc++abi.so.1 + + <_MonoRuntimeArtifacts Condition="'$(MonoBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)"> + $(RuntimeBinDir)\llc$(ExeSuffix) +@@ -1131,10 +1132,10 @@ JS_ENGINES = [NODE_JS] + $(RuntimeBinDir)\opt$(ExeSuffix) + + <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)"> +- $(RuntimeBinDir)cross\$(OutputRID)\llc$(ExeSuffix) ++ $(_MonoAotCrossBinPath)llc$(ExeSuffix) + + <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\opt$(ExeSuffix)"> +- $(RuntimeBinDir)cross\$(OutputRID)\opt$(ExeSuffix) ++ $(_MonoAotCrossBinPath)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 c747e87f763..51595d4867a 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())\**" /> ++ <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotHostOS).$(MonoAotHostArchitecture)\**" /> + + ++ ++ + + + From 7b150e70bc7792a932ebd7a817f2583337fd3bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Tue, 19 Nov 2024 00:37:47 +0100 Subject: [PATCH 3/5] Update patch --- ...directory-for-cross-compilers-if-Out.patch | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch index b2a421e90a07..6bbb91e3762e 100644 --- a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch +++ b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch @@ -1,78 +1,70 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= -Date: Mon, 18 Nov 2024 18:50:05 +0100 +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 AotHostOS and AotHostArchitecture properties which are more correct. +Instead use the preexisting MonoAotCrossDir property. --- - src/mono/mono.proj | 17 +++++++++-------- + src/mono/mono.proj | 16 ++++++++-------- src/mono/monoaotcross.proj | 9 ++++++--- - 2 files changed, 15 insertions(+), 11 deletions(-) + 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/mono/mono.proj b/src/mono/mono.proj -index 56eb36acbc7..5bb54cf7415 100644 +index 56eb36acbc7..a9bdbb62e0a 100644 --- a/src/mono/mono.proj +++ b/src/mono/mono.proj -@@ -1067,6 +1067,7 @@ JS_ENGINES = [NODE_JS] - - - <_MonoAotCrossFilePath>$(MonoObjCrossDir)out\bin\$(MonoAotCrossName)$(ExeSuffix) -+ <_MonoAotCrossBinPath>$(RuntimeBinDir)cross\$(AotHostOS).$(AotHostArchitecture)\ - - - <_MonoLLVMHostArchitecture>$(AotHostArchitecture) -@@ -1094,16 +1095,16 @@ JS_ENGINES = [NODE_JS] +@@ -1094,16 +1094,16 @@ JS_ENGINES = [NODE_JS] $(RuntimeBinDir)$(MonoStaticLibFileName) <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath)" Condition="Exists($(_MonoAotCrossFilePath))"> - $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName)$(ExeSuffix) -+ $(_MonoAotCrossBinPath)$(MonoAotCrossName)$(ExeSuffix) ++ $(MonoAotCrossDir)$(MonoAotCrossName)$(ExeSuffix) <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dbg" Condition="Exists('$(_MonoAotCrossFilePath).dbg')"> - $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dbg -+ $(_MonoAotCrossBinPath)$(MonoAotCrossName).dbg ++ $(MonoAotCrossDir)$(MonoAotCrossName).dbg <_MonoRuntimeArtifacts Include="$(_MonoAotCrossFilePath).dwarf" Condition="Exists('$(_MonoAotCrossFilePath).dwarf')"> - $(RuntimeBinDir)cross\$(OutputRID)\$(MonoAotCrossName).dwarf -+ $(_MonoAotCrossBinPath)$(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 -+ $(_MonoAotCrossBinPath)$(MonoAotCrossName).pdb ++ $(MonoAotCrossDir)$(MonoAotCrossName).pdb <_MonoRuntimeArtifacts Include="@(_MonoRuntimeComponentsStaticFilePath)"> -@@ -1119,10 +1120,10 @@ JS_ENGINES = [NODE_JS] +@@ -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 -+ $(_MonoAotCrossBinPath)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 -+ $(_MonoAotCrossBinPath)libc++abi.so.1 ++ $(MonoAotCrossDir)libc++abi.so.1 <_MonoRuntimeArtifacts Condition="'$(MonoBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\llc$(ExeSuffix)"> $(RuntimeBinDir)\llc$(ExeSuffix) -@@ -1131,10 +1132,10 @@ JS_ENGINES = [NODE_JS] +@@ -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) -+ $(_MonoAotCrossBinPath)llc$(ExeSuffix) ++ $(MonoAotCrossDir)llc$(ExeSuffix) <_MonoRuntimeArtifacts Condition="'$(MonoAOTBundleLLVMOptimizer)' == 'true'" Include="$(MonoLLVMDir)\$(_MonoLLVMHostArchitecture)\bin\opt$(ExeSuffix)"> - $(RuntimeBinDir)cross\$(OutputRID)\opt$(ExeSuffix) -+ $(_MonoAotCrossBinPath)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 c747e87f763..51595d4867a 100644 +index c747e87f763..87862dc3abb 100644 --- a/src/mono/monoaotcross.proj +++ b/src/mono/monoaotcross.proj @@ -43,20 +43,23 @@ @@ -94,10 +86,10 @@ index c747e87f763..51595d4867a 100644 - <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" /> -+ <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotHostOS).$(MonoAotHostArchitecture)\**" /> ++ <_MonoAOTCrossFiles Include="$(MonoAotCrossDir)**" /> -+ ++ + From 2554985b614e7c1d7992290626b57dd75f1ceead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Tue, 19 Nov 2024 09:54:48 +0100 Subject: [PATCH 4/5] Update patch --- ...Fix-output-directory-for-cross-compilers-if-Out.patch | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch index 6bbb91e3762e..d1b961aef3fd 100644 --- a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch +++ b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch @@ -9,8 +9,8 @@ This happens e.g. in the VMR where OutputRID is set globally. We assumed in mono Instead use the preexisting MonoAotCrossDir property. --- src/mono/mono.proj | 16 ++++++++-------- - src/mono/monoaotcross.proj | 9 ++++++--- - 2 files changed, 14 insertions(+), 11 deletions(-) + src/mono/monoaotcross.proj | 7 +++++-- + 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/mono/mono.proj b/src/mono/mono.proj index 56eb36acbc7..a9bdbb62e0a 100644 @@ -64,7 +64,7 @@ index 56eb36acbc7..a9bdbb62e0a 100644 <_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..87862dc3abb 100644 +index c747e87f763..d5969fb48fd 100644 --- a/src/mono/monoaotcross.proj +++ b/src/mono/monoaotcross.proj @@ -43,20 +43,23 @@ @@ -85,8 +85,7 @@ index c747e87f763..87862dc3abb 100644 + Properties="AotHostOS=$(MonoAotHostOS);AotHostArchitecture=$(MonoAotHostArchitecture);BuildMonoAOTCrossCompilerOnly=true;TargetArchitecture=$(MonoAotTargetArchitecture);TargetOS=$(MonoAotTargetOS)" /> -- <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" /> -+ <_MonoAOTCrossFiles Include="$(MonoAotCrossDir)**" /> + <_MonoAOTCrossFiles Include="$(ArtifactsBinDir)mono\$(MonoAotTargetOS).$(MonoAotTargetArchitecture).$(Configuration)\cross\$(MonoAotTargetRid.ToLower())\**" /> + From 059d2543de11909706beb1699fb54c6e9a2fa068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Tue, 19 Nov 2024 12:05:49 +0100 Subject: [PATCH 5/5] Update patch --- ...put-directory-for-cross-compilers-if-Out.patch | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch index d1b961aef3fd..76d5f11a5849 100644 --- a/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch +++ b/src/SourceBuild/patches/runtime/0001-mono-Fix-output-directory-for-cross-compilers-if-Out.patch @@ -8,10 +8,23 @@ This happens e.g. in the VMR where OutputRID is set globally. We assumed in mono Instead use the preexisting MonoAotCrossDir property. --- + eng/DotNetBuild.props | 1 + src/mono/mono.proj | 16 ++++++++-------- src/mono/monoaotcross.proj | 7 +++++-- - 2 files changed, 13 insertions(+), 10 deletions(-) + 3 files changed, 14 insertions(+), 10 deletions(-) +diff --git a/eng/DotNetBuild.props b/eng/DotNetBuild.props +index 49f7bdaf9cf..fb0e235841f 100644 +--- a/eng/DotNetBuild.props ++++ b/eng/DotNetBuild.props +@@ -33,6 +33,7 @@ + true + true + true ++ true + + +