Skip to content

Commit 8c8aa79

Browse files
committed
move MergeClangProfileData to pyproject-clangcl.props
and make it a target with inputs and outputs
1 parent 79ce418 commit 8c8aa79

File tree

2 files changed

+25
-27
lines changed

2 files changed

+25
-27
lines changed

PCbuild/pyproject-clangcl.props

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,37 @@
22
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<PropertyGroup Label="Globals">
44
<__PyprojectClangCl_Props_Imported>true</__PyprojectClangCl_Props_Imported>
5-
6-
<!-- TODO: Py_IntDir is TreatAsLocalProperty. How to get it here? Just redefined atm :( -->
7-
<!-- maybe this will go anyway, since we're going to use $(OutDir)instrumented ... -->
8-
<ClangProfileDir>$(MSBuildThisFileDirectory)obj\$(MajorVersionNumber)$(MinorVersionNumber)$(ArchName)_PGInstrument\__clang_profiles\</ClangProfileDir>
9-
<ClangProfileDir>$(ClangProfileDir.Replace(`\\`, `\`))</ClangProfileDir>
105
</PropertyGroup>
116

7+
<ItemGroup>
8+
<_profrawFiles Include="$(OutDir)instrumented\$(TargetName)_*.profraw" />
9+
</ItemGroup>
10+
11+
<Target Name="EnsureClangProfileData" BeforeTargets="PrepareForBuild"
12+
Condition="'$(SupportPGO)' and $(Configuration) == 'PGUpdate'">
13+
<Error Text="PGO run did not succeed (no $(TargetName)_*.profraw files) and there is no data to merge"
14+
Condition="$(RequirePGCFiles) == 'true' and @(_profrawFiles) == ''" />
15+
</Target>
16+
17+
<Target Name="MergeClangProfileData" BeforeTargets="PrepareForBuild"
18+
Condition="'$(SupportPGO)' and $(Configuration) == 'PGUpdate'"
19+
Inputs="@(_profrawFiles)"
20+
Outputs="@(_profrawFiles->'$(OutDir)instrumented\profdata.profdata')">
21+
<Exec
22+
Command='"$(LLVMInstallDir)\bin\llvm-profdata.exe" merge -output=$(OutDir)instrumented\profdata.profdata $(OutDir)instrumented\*_*.profraw' />
23+
</Target>
24+
25+
<Target Name="CleanClangProfileData" BeforeTargets="Clean">
26+
<Delete Files="@(_profrawFiles->'$(OutDir)instrumented\%(Filename)%(Extension)')" TreatErrorsAsWarnings="true" />
27+
<Delete Files="$(OutDir)instrumented\profdata.profdata" TreatErrorsAsWarnings="true" />
28+
</Target>
29+
1230
<ItemDefinitionGroup>
1331
<ClCompile>
1432
<AdditionalOptions>-Wno-deprecated-non-prototype -Wno-unused-label -Wno-pointer-sign -Wno-incompatible-pointer-types-discards-qualifiers -Wno-unused-function %(AdditionalOptions)</AdditionalOptions>
1533
<AdditionalOptions Condition="$(Configuration) != 'Debug'">-flto %(AdditionalOptions)</AdditionalOptions>
16-
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGInstrument'">-fprofile-instr-generate=$(ClangProfileDir)\default_%m.profraw %(AdditionalOptions)</AdditionalOptions>
17-
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGUpdate'">-fprofile-instr-use=$(ClangProfileDir)\profdata.profdata %(AdditionalOptions)</AdditionalOptions>
34+
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGInstrument'">-fprofile-instr-generate=$(OutDir)$(TargetName)_%m.profraw %(AdditionalOptions)</AdditionalOptions>
35+
<AdditionalOptions Condition="$(SupportPGO) and $(Configuration) == 'PGUpdate'">-fprofile-instr-use=$(OutDir)instrumented\profdata.profdata %(AdditionalOptions)</AdditionalOptions>
1836
</ClCompile>
1937
</ItemDefinitionGroup>
2038

PCbuild/pythoncore.vcxproj

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -716,26 +716,6 @@
716716
<Delete Files="$(IntDir)pyconfig.h;$(OutDir)pyconfig.h" />
717717
</Target>
718718

719-
<Target Name="EnsureClangProfileDir" BeforeTargets="PrepareForBuild"
720-
Condition="$(PlatformToolset) == 'ClangCL' and $(Configuration) == 'PGInstrument' and !Exists($(ClangProfileDir))">
721-
<MakeDir Directories="$(ClangProfileDir)" />
722-
</Target>
723-
724-
<Target Name="CleanClangProfileDir" BeforeTargets="PrepareForBuild"
725-
Condition="$(PlatformToolset) == 'ClangCL' and $(Configuration) == 'PGInstrument' and Exists($(ClangProfileDir))">
726-
<ItemGroup>
727-
<FilesToDelete Include="$(ClangProfileDir)\*.*"/>
728-
</ItemGroup>
729-
<Delete Files="@(FilesToDelete)" TreatErrorsAsWarnings="true" />
730-
</Target>
731-
732-
<Target Name="MergeClangProfileData" BeforeTargets="PrepareForBuild"
733-
Condition="$(PlatformToolset) == 'ClangCL' and $(Configuration) == 'PGUpdate'">
734-
<Message Importance="high" Text="Merging clang profile data in $(ClangProfileDir)" />
735-
<Exec
736-
Command='"$(LLVMInstallDir)\bin\llvm-profdata.exe" merge -output=$(ClangProfileDir)\profdata.profdata $(ClangProfileDir)\default_*.profraw' />
737-
</Target>
738-
739719
<Target Name="_GetBuildInfo" BeforeTargets="PrepareForBuild">
740720
<PropertyGroup>
741721
<GIT Condition="$(GIT) == ''">git</GIT>

0 commit comments

Comments
 (0)