Skip to content

Commit 790204b

Browse files
committed
Move native pgo into a targets file instead of being a separate project to be more static-graph friendly.
1 parent 5fbd69e commit 790204b

File tree

6 files changed

+63
-90
lines changed

6 files changed

+63
-90
lines changed

eng/nativepgo.targets

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<Project>
2+
<PropertyGroup>
3+
<NativeOptimizationDataSupported Condition="'$(TargetOS)' == 'windows' And ('$(TargetArchitecture)' == 'x64' Or '$(TargetArchitecture)' == 'x86')">true</NativeOptimizationDataSupported>
4+
<NativeOptimizationDataSupported Condition="'$(TargetOS)' == 'Linux' And '$(TargetArchitecture)' == 'x64'">true</NativeOptimizationDataSupported>
5+
<NativeOptimizationDataSupported Condition="'$(NoPgoOptimize)' == 'true'">false</NativeOptimizationDataSupported>
6+
<NativeOptimizationDataSupported Condition="'$(DotNetBuildFromSource)' == 'true'">false</NativeOptimizationDataSupported>
7+
8+
<_NativeOptimizationDataPackageTarget>$(TargetOS.ToLower())-$(TargetArchitecture.ToLower())</_NativeOptimizationDataPackageTarget>
9+
<_NativeOptimizationDataPackageTarget Condition="'$(TargetOS)' == 'windows'">windows_nt-$(TargetArchitecture.ToLower())</_NativeOptimizationDataPackageTarget>
10+
11+
</PropertyGroup>
12+
<ItemGroup>
13+
<PackageReference Include="optimization.$(_NativeOptimizationDataPackageTarget).PGO.CoreCLR"
14+
Version="$(optimizationPGOCoreCLRVersion)"
15+
Condition="'$(optimizationPGOCoreCLRVersion)'!='' And '$(NativeOptimizationDataSupported)'!=''"
16+
GeneratePathProperty="true" />
17+
</ItemGroup>
18+
19+
20+
<!-- -->
21+
<!-- Task: GetPgoDataPackagePath -->
22+
<!-- -->
23+
<!-- Notes: -->
24+
<!-- -->
25+
<!-- DumpPgoDataPackagePath is used to get the path of the native PGO data -->
26+
<!-- for other MSBuild projects, generally to pass to another project or -->
27+
<!-- native script like build-runtime.cmd/sh. -->
28+
<!-- -->
29+
30+
<Target Name="GetPgoDataPackagePath" Returns="$(PgoPackagePath)">
31+
<PropertyGroup>
32+
<PgoPackagePathProperty>Pkgoptimization_$(_NativeOptimizationDataPackageTarget)_PGO_CoreCLR</PgoPackagePathProperty>
33+
</PropertyGroup>
34+
35+
<!--
36+
Use an item group for expansion of $($(PgoPackagePathProperty)) (an illegal MSBuild expression)
37+
i.e. the prop value's value.
38+
-->
39+
<ItemGroup>
40+
<PgoPackagePathPropertyItemList Include="$(PgoPackagePathProperty)" />
41+
<PgoPackagePathPropertyItemList>
42+
<PgoPackagePath>$(%(Identity))</PgoPackagePath>
43+
</PgoPackagePathPropertyItemList>
44+
</ItemGroup>
45+
46+
<PropertyGroup>
47+
<PgoPackagePath>@(PgoPackagePathPropertyItemList->'%(PgoPackagePath)')</PgoPackagePath>
48+
</PropertyGroup>
49+
50+
<Error Condition="!Exists('$(PgoPackagePath)') And '$(NativeOptimizationDataSupported)' == 'true'" Text="Unable to locate restored PGO package at $(PgoPackagePath). Maybe the platform-specific package naming changed?" />
51+
</Target>
52+
53+
<Target Name="OutputPgoPathForCI" Condition="'$(ContinuousIntegrationBuild)' == 'true' and '$(NativeOptimizationDataSupported)' == 'true'" DependsOnTargets="GetPgoDataPackagePath">
54+
<Message Text="##vso[task.setvariable variable=CoreClrPgoDataArg]-pgodatapath &quot;$(PgoPackagePath)&quot;" />
55+
</Target>
56+
</Project>

src/coreclr/.nuget/optdata/Directory.Build.props

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/coreclr/.nuget/optdata/Directory.Build.targets

Lines changed: 0 additions & 4 deletions
This file was deleted.

src/coreclr/.nuget/optdata/optdata.proj

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/coreclr/runtime-prereqs.proj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
</PropertyGroup>
77

88
<ItemGroup>
9-
<ProjectReference Include=".nuget/optdata/optdata.proj" />
109
<ProjectReference Condition="'$(TargetOS)' == 'Windows'" Include="ToolBox/SOS/DacTableGen/DacTableGen.csproj" />
1110
</ItemGroup>
1211

1312
<Import Project="$(RepositoryEngineeringDir)versioning.targets" />
13+
<Import Project="$(RepositoryEngineeringDir)nativepgo.targets" />
1414

15-
<Target Name="BuildPrereqs" BeforeTargets="Build" DependsOnTargets="GenerateRuntimeVersionFile" />
15+
<Target Name="BuildPrereqs" BeforeTargets="Build" DependsOnTargets="GenerateRuntimeVersionFile;OutputPgoPathForCI" />
1616
</Project>

src/coreclr/runtime.proj

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,11 @@
88
<ProjectReference Include="runtime-prereqs.proj" GlobalPropertiesToRemove="$(NativeBuildPartitionPropertiesToRemove)" />
99
</ItemGroup>
1010

11+
<Import Project="$(RepositoryEngineeringDir)nativepgo.targets" />
12+
1113
<Target Name="BuildRuntime"
14+
DependsOnTargets="GetPgoDataPackagePath"
1215
BeforeTargets="Build">
13-
14-
<!-- Get the path to PGO data to pass to the runtime build script. -->
15-
<MSBuild
16-
Projects=".nuget/optdata/optdata.proj"
17-
Targets="GetPgoDataPackagePath">
18-
<Output
19-
TaskParameter="TargetOutputs"
20-
PropertyName="PgoDataPath" />
21-
</MSBuild>
22-
23-
2416
<ItemGroup>
2517
<_CoreClrBuildArg Condition="'$(TargetArchitecture)' != ''" Include="-$(TargetArchitecture)" />
2618
<_CoreClrBuildArg Condition="!$([MSBuild]::IsOsPlatform(Windows)) and '$(CMakeArgs)' != ''" Include="$(CMakeArgs)" />
@@ -37,14 +29,14 @@
3729
('$(TargetArchitecture)' == 'x86' or '$(TargetArchitecture)' == 'x64') and
3830
'$(Configuration)' == 'Release' and
3931
'$(ClrRuntimeSubset)' == 'true' and
40-
'$(NoPgoOptimize)' != 'true' and
32+
'$(NativeOptimizationDataSupported)' == 'true' and
4133
'$(PgoInstrument)' != 'true'"
4234
Include="-enforcepgo" />
4335
<_CoreClrBuildArg Condition="$([MSBuild]::IsOsPlatform(Windows)) and '$(CrossDac)' != ''" Include="-$(CrossDac)dac" />
4436
<_CoreClrBuildArg Condition="'$(Ninja)' == 'true' and !$([MSBuild]::IsOsPlatform(Windows))" Include="-ninja" />
4537
<_CoreClrBuildArg Condition="'$(Ninja)' == 'false' and $([MSBuild]::IsOsPlatform(Windows))" Include="-msbuild" />
4638
<_CoreClrBuildArg Condition="'$(PgoInstrument)' == 'true'" Include="-pgoinstrument" />
47-
<_CoreClrBuildArg Condition="'$(NoPgoOptimize)' != 'true' and '$(PgoInstrument)' != 'true'" Include="-pgodatapath &quot;$(PgoDataPath)&quot;" />
39+
<_CoreClrBuildArg Condition="'$(NativeOptimizationDataSupported)' == 'true' and '$(PgoInstrument)' != 'true'" Include="-pgodatapath &quot;$(PgoPackagePath)&quot;" />
4840
</ItemGroup>
4941

5042
<ItemGroup Condition="'$(ClrFullNativeBuild)' != 'true'">

0 commit comments

Comments
 (0)