From 2017fc911ab5ac10da1814d7786afad08bd9bc1b Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 16 Jan 2025 13:50:32 -0800 Subject: [PATCH 1/6] Hook up the build to build an ilasm for the host when we need to build tools that run on the host --- eng/Subsets.props | 14 +++++++++++--- src/coreclr/CMakeLists.txt | 6 ++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index d1edb8178e9f0c..8eb8faa47f9354 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -307,11 +307,19 @@ Build the CoreCLR cross tools when we're doing a cross build and either we're building any CoreCLR native tools for platforms CoreCLR fully supports or when someone explicitly requests them. The cross tools are used as part of the build process with the downloaded build tools, so we need to build them for the host architecture and build them as unsanitized binaries. --> - + + <_BuildAnyCrossArch Condition="'$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(EnableNativeSanitizers)' != ''">true + <_BuildCrossComponents Condition="$(_subset.Contains('+clr.crossarchtools+'))">true + <_BuildCrossComponents Condition="'$(ClrRuntimeBuildSubsets)' != '' and ('$(PrimaryRuntimeFlavor)' == 'CoreCLR' or '$(TargetsMobile)' == 'true')">true + <_BuildHostIlTools Condition="'$(DotNetBuildOrchestrator)' == 'true' and '$(OutputRID)' != '$(NETCoreSdkRuntimeIdentifier)'">true + <_CrossToolProperties Condition="'$(_BuildCrossComponents)' == 'true'">$(_CrossToolProperties);ClrCrossComponentsSubset=true + <_CrossToolProperties Condition="'$(_BuildHostIlTools)' == 'true'">$(_CrossToolProperties);ClrILToolsSubset=true + + + Date: Thu, 16 Jan 2025 14:26:48 -0800 Subject: [PATCH 2/6] Only build the host-targeting IL tools on Windows, as other platforms are difficult (because of crypto usage) and we don't need them --- eng/Subsets.props | 4 +++- src/coreclr/CMakeLists.txt | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 8eb8faa47f9354..9a67de1569f652 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -306,12 +306,14 @@ <_BuildAnyCrossArch Condition="'$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(EnableNativeSanitizers)' != ''">true <_BuildCrossComponents Condition="$(_subset.Contains('+clr.crossarchtools+'))">true <_BuildCrossComponents Condition="'$(ClrRuntimeBuildSubsets)' != '' and ('$(PrimaryRuntimeFlavor)' == 'CoreCLR' or '$(TargetsMobile)' == 'true')">true - <_BuildHostIlTools Condition="'$(DotNetBuildOrchestrator)' == 'true' and '$(OutputRID)' != '$(NETCoreSdkRuntimeIdentifier)'">true + <_BuildHostIlTools Condition="'$(DotNetBuildOrchestrator)' == 'true' and '$(OutputRID)' != '$(NETCoreSdkRuntimeIdentifier)' and $([MSBuild]::IsOsPlatform(Windows))">true <_CrossToolProperties Condition="'$(_BuildCrossComponents)' == 'true'">$(_CrossToolProperties);ClrCrossComponentsSubset=true <_CrossToolProperties Condition="'$(_BuildHostIlTools)' == 'true'">$(_CrossToolProperties);ClrILToolsSubset=true diff --git a/src/coreclr/CMakeLists.txt b/src/coreclr/CMakeLists.txt index 27db1771b069b0..d010e350397d41 100644 --- a/src/coreclr/CMakeLists.txt +++ b/src/coreclr/CMakeLists.txt @@ -74,8 +74,10 @@ endif() #------------------------------- # Include libraries native shims #------------------------------- -set(STATIC_LIBS_ONLY 1) -add_subdirectory(${CLR_SRC_NATIVE_DIR}/libs libs-native) +if(NOT CLR_CROSS_COMPONENTS_BUILD) + set(STATIC_LIBS_ONLY 1) + add_subdirectory(${CLR_SRC_NATIVE_DIR}/libs libs-native) +endif() #----------------------------------------- # Add Projects From 2acb2bf3bd59268360eb9cb12378d8569d1a371e Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 16 Jan 2025 15:07:38 -0800 Subject: [PATCH 3/6] Pack the host-targeting ilasm/ildasm --- eng/Publishing.props | 6 ++++++ eng/Subsets.props | 4 ++-- .../Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj | 3 ++- .../Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.proj | 3 +++ .../Microsoft.NETCore.ILDAsm.pkgproj | 3 ++- .../Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj | 3 +++ src/coreclr/.nuget/builds.targets | 3 +++ 7 files changed, 21 insertions(+), 4 deletions(-) diff --git a/eng/Publishing.props b/eng/Publishing.props index 05a7d2e907063d..5361abb28d075e 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -12,6 +12,12 @@ Mark assets as Vertical visibility when building in the VMR --> + + diff --git a/eng/Subsets.props b/eng/Subsets.props index 9a67de1569f652..98bb26859965fd 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -313,9 +313,9 @@ <_BuildAnyCrossArch Condition="'$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(EnableNativeSanitizers)' != ''">true <_BuildCrossComponents Condition="$(_subset.Contains('+clr.crossarchtools+'))">true <_BuildCrossComponents Condition="'$(ClrRuntimeBuildSubsets)' != '' and ('$(PrimaryRuntimeFlavor)' == 'CoreCLR' or '$(TargetsMobile)' == 'true')">true - <_BuildHostIlTools Condition="'$(DotNetBuildOrchestrator)' == 'true' and '$(OutputRID)' != '$(NETCoreSdkRuntimeIdentifier)' and $([MSBuild]::IsOsPlatform(Windows))">true + true <_CrossToolProperties Condition="'$(_BuildCrossComponents)' == 'true'">$(_CrossToolProperties);ClrCrossComponentsSubset=true - <_CrossToolProperties Condition="'$(_BuildHostIlTools)' == 'true'">$(_CrossToolProperties);ClrILToolsSubset=true + <_CrossToolProperties Condition="'$(BuildHostIlTools)' == 'true'">$(_CrossToolProperties);ClrILToolsSubset=true diff --git a/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj b/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj index 34a96275dd615f..2ca49d341d5a0e 100644 --- a/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj +++ b/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.pkgproj @@ -11,7 +11,8 @@ - + + diff --git a/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.proj b/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.proj index 0ee4b7e705fdc8..928a61d6e4693f 100644 --- a/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.proj +++ b/src/coreclr/.nuget/Microsoft.NETCore.ILAsm/Microsoft.NETCore.ILAsm.proj @@ -1,4 +1,7 @@ + + true + diff --git a/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj b/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj index 569b41d95ee09d..c908a523d9d962 100644 --- a/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj +++ b/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.pkgproj @@ -11,7 +11,8 @@ - + + diff --git a/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj b/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj index 0ee4b7e705fdc8..928a61d6e4693f 100644 --- a/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj +++ b/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj @@ -1,4 +1,7 @@ + + true + diff --git a/src/coreclr/.nuget/builds.targets b/src/coreclr/.nuget/builds.targets index e9acb038c46073..fbb19f1360a6c0 100644 --- a/src/coreclr/.nuget/builds.targets +++ b/src/coreclr/.nuget/builds.targets @@ -17,6 +17,9 @@ <_projectsToBuild Include="@(Project)" Condition="'%(Project.PackageTargetRuntime)' == ''" /> + + <_projectsToBuild Include="@(Project)" Condition="'%(Project.PackageTargetRuntime)' == '$(NETCoreSdkRuntimeIdentifier)'" AdditionalProperties="%(Project.AdditionalProperties);PackCrossComponent=true" /> + From dbc9f8fe47ff5cc4801b344a8e8268b726e6778d Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 16 Jan 2025 16:29:40 -0800 Subject: [PATCH 4/6] Make sure we don't ship the host IL tools packages --- eng/Publishing.props | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/eng/Publishing.props b/eng/Publishing.props index deffb1fd8ae2f4..da3d606ed683c4 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -14,10 +14,12 @@ + Visibility="Vertical" + IsShipping="false" /> + Visibility="Vertical" + IsShipping="false" /> Date: Thu, 16 Jan 2025 16:54:35 -0800 Subject: [PATCH 5/6] Add missing quote --- eng/Subsets.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index 9ecd24b6b79658..32df282d2d81a0 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -317,7 +317,7 @@ <_BuildAnyCrossArch Condition="'$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(EnableNativeSanitizers)' != ''">true <_BuildCrossComponents Condition="$(_subset.Contains('+clr.crossarchtools+'))">true <_BuildCrossComponents Condition="'$(ClrRuntimeBuildSubsets)' != '' and ('$(PrimaryRuntimeFlavor)' == 'CoreCLR' or '$(TargetsMobile)' == 'true')">true - true + true <_CrossToolProperties Condition="'$(_BuildCrossComponents)' == 'true'">$(_CrossToolProperties);ClrCrossComponentsSubset=true <_CrossToolProperties Condition="'$(BuildHostILTools)' == 'true'">$(_CrossToolProperties);ClrILToolsSubset=true From 8f72b07a3df884ee751e0f32b6ae561417d9aac4 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Fri, 17 Jan 2025 12:00:13 -0800 Subject: [PATCH 6/6] Restructure based on #111552 --- Directory.Build.targets | 6 ++++++ eng/Subsets.props | 16 +++++++--------- .../Microsoft.NETCore.ILAsm.proj | 4 ++-- .../Microsoft.NETCore.ILDAsm.proj | 4 ++-- src/coreclr/.nuget/builds.targets | 2 +- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index f07a28552df3b8..fb19adafecf9a9 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -54,6 +54,12 @@ + + + true + true + + $(TargetCxxLibraryProperties);CxxAbiLibrary=$(TargetCxxAbiLibrary) - - true - - @@ -317,15 +313,17 @@ <_BuildAnyCrossArch Condition="'$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(EnableNativeSanitizers)' != ''">true <_BuildCrossComponents Condition="$(_subset.Contains('+clr.crossarchtools+'))">true <_BuildCrossComponents Condition="'$(ClrRuntimeBuildSubsets)' != '' and ('$(PrimaryRuntimeFlavor)' == 'CoreCLR' or '$(TargetsMobile)' == 'true')">true - true - <_CrossToolProperties Condition="'$(_BuildCrossComponents)' == 'true'">$(_CrossToolProperties);ClrCrossComponentsSubset=true - <_CrossToolProperties Condition="'$(BuildHostILTools)' == 'true'">$(_CrossToolProperties);ClrILToolsSubset=true - + + <_CrossToolSubset Condition="'$(_BuildCrossComponents)' == 'true'" Include="ClrCrossComponentsSubset=true" /> + <_CrossToolSubset Condition="'$(BuildHostILTools)' == 'true'" Include="ClrILToolsSubset=true" /> + + + - - true + + true diff --git a/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj b/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj index 876bf7e1cc1f6c..476a3bfd94c567 100644 --- a/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj +++ b/src/coreclr/.nuget/Microsoft.NETCore.ILDAsm/Microsoft.NETCore.ILDAsm.proj @@ -1,6 +1,6 @@ - - true + + true diff --git a/src/coreclr/.nuget/builds.targets b/src/coreclr/.nuget/builds.targets index fbb19f1360a6c0..2e903bf16bdd21 100644 --- a/src/coreclr/.nuget/builds.targets +++ b/src/coreclr/.nuget/builds.targets @@ -17,7 +17,7 @@ <_projectsToBuild Include="@(Project)" Condition="'%(Project.PackageTargetRuntime)' == ''" /> - + <_projectsToBuild Include="@(Project)" Condition="'%(Project.PackageTargetRuntime)' == '$(NETCoreSdkRuntimeIdentifier)'" AdditionalProperties="%(Project.AdditionalProperties);PackCrossComponent=true" />