diff options
author | David Wrighton <davidwr@microsoft.com> | 2021-04-14 03:35:31 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-14 03:35:31 +0300 |
commit | fccdca068be7ac1fd44cdd62ef1aec3e6c752e77 (patch) | |
tree | a598d1dd80fc22db879fd342b62f74b9c4e5551a /src/coreclr/crossgen-corelib.proj | |
parent | 9ca2a70d6eb941d5482ea0205654beab6267a471 (diff) |
Simplify mibc usage in the build (#50536)
- Produce a merged mibc with all scenarios squished together
- Properly attach the mibc data to the incremental build for System.Private.CoreLib
- This can't be done for the framework here. It will require mibc integration in the SDK
- Enable pgo optimization in checked builds
- Enable pgo optimization in framework compile for outerloop runs
Diffstat (limited to 'src/coreclr/crossgen-corelib.proj')
-rw-r--r-- | src/coreclr/crossgen-corelib.proj | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/coreclr/crossgen-corelib.proj b/src/coreclr/crossgen-corelib.proj index 2399255b78d..53c4e57c72e 100644 --- a/src/coreclr/crossgen-corelib.proj +++ b/src/coreclr/crossgen-corelib.proj @@ -45,6 +45,10 @@ <CrossGen2DllFiles Condition="'$(CrossDir)' != ''" Include="$(BinDir)/$(CrossDir)/crossgen2/*" /> </ItemGroup> + <ItemGroup> + <OptimizationMibcFiles Include="$(MibcOptimizationDataDir)/$(TargetOS)/$(TargetArchitecture)/**/*.mibc" /> + </ItemGroup> + <PropertyGroup> <CoreLibAssemblyName>System.Private.CoreLib</CoreLibAssemblyName> <CoreLibInputPath>$([MSBuild]::NormalizePath('$(BinDir)', 'IL', '$(CoreLibAssemblyName).dll'))</CoreLibInputPath> @@ -53,12 +57,28 @@ <CoreLibPerfMapPath></CoreLibPerfMapPath> <CoreLibNiPdbPath Condition="$(BuildPdb)">$([MSBuild]::NormalizePath('$(BinDir)', 'PDB', '$(CoreLibAssemblyName).ni.pdb'))</CoreLibNiPdbPath> <CoreLibPerfMapPath Condition="$(BuildPerfMap)">$([MSBuild]::NormalizePath('$(BinDir)', '$(CoreLibAssemblyName).perf.map'))</CoreLibPerfMapPath> + <MergedMibcPath>$([MSBuild]::NormalizePath('$(BinDir)', 'StandardOptimizationData.mibc'))</MergedMibcPath> </PropertyGroup> </Target> - <Target Name="InvokeCrossgen" + <Target Name="CreateMergedMibcFile" DependsOnTargets="PrepareForCrossgen" - Inputs="$(CoreLibInputPath);@(CrossGen2DllFiles)" + Inputs="@(OptimizationMibcFiles)" + Outputs="$(MergedMibcPath)"> + + <PropertyGroup> + <DotNetPgoCmd>$(DotNetCli) $([MSBuild]::NormalizePath('$(BinDir)', 'dotnet-pgo', 'dotnet-pgo.dll')) merge</DotNetPgoCmd> + <DotNetPgoCmd>$(DotNetPgoCmd) -o:$(MergedMibcPath)</DotNetPgoCmd> + <DotNetPgoCmd>$(DotNetPgoCmd) @(OptimizationMibcFiles->'-i:%(Identity)', ' ')</DotNetPgoCmd> + </PropertyGroup> + + <Message Condition="'$(DotNetBuildFromSource)' != 'true'" Importance="High" Text="$(DotNetPgoCmd)"/> + <Exec Condition="'$(DotNetBuildFromSource)' != 'true'" Command="$(DotNetPgoCmd)" /> + </Target> + + <Target Name="InvokeCrossgen" + DependsOnTargets="PrepareForCrossgen;CreateMergedMibcFile" + Inputs="$(CoreLibInputPath);@(CrossGen2DllFiles);$(MergedMibcPath)" Outputs="$(CoreLibOutputPath);$(CoreLibNiPdbPath);$(CoreLibPerfMapPath)" AfterTargets="Build"> @@ -75,17 +95,12 @@ <Message Importance="High" Text="Generating native image of System.Private.CoreLib for $(OSPlatformConfig). Logging to $(CrossGenCoreLibLog)" /> - <ItemGroup> - <OptimizationMibcFiles Include="$(MibcOptimizationDataDir)/$(TargetOS)/$(TargetArchitecture)/**/*.mibc" /> - </ItemGroup> - <PropertyGroup> <CrossGenDllCmd>$(DotNetCli) $([MSBuild]::NormalizePath('$(BinDir)', '$(CrossDir)', 'crossgen2', 'crossgen2.dll'))</CrossGenDllCmd> <CrossGenDllCmd>$(CrossGenDllCmd) -o:$(CoreLibOutputPath)</CrossGenDllCmd> <CrossGenDllCmd>$(CrossGenDllCmd) -r:$([MSBuild]::NormalizePath('$(BinDir)', 'IL', '*.dll'))</CrossGenDllCmd> <CrossGenDllCmd>$(CrossGenDllCmd) --targetarch:$(TargetArchitecture)</CrossGenDllCmd> - <MibcArgs>@(OptimizationMibcFiles->'-m:%(Identity)', ' ')</MibcArgs> - <CrossGenDllCmd Condition="'$(UsingToolIbcOptimization)' != 'true' and '$(Configuration)' == 'Release'">$(CrossGenDllCmd) $(MibcArgs) --embed-pgo-data</CrossGenDllCmd> + <CrossGenDllCmd Condition="'$(UsingToolIbcOptimization)' != 'true' and '$(EnableNgenOptimization)' == 'true'">$(CrossGenDllCmd) -m:$(MergedMibcPath) --embed-pgo-data</CrossGenDllCmd> <CrossGenDllCmd>$(CrossGenDllCmd) -O</CrossGenDllCmd> <CrossGenDllCmd>$(CrossGenDllCmd) $(CoreLibInputPath)</CrossGenDllCmd> </PropertyGroup> |