1<?xml version="1.0" encoding="utf-8"?> 2<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 <!-- Update AdditionalInputs with depfile-discovered inputs. --> 4 <Target Name="CMakeCustomBuildDepFileAdditionalInputs" BeforeTargets="CustomBuild" Condition="'@(CustomBuild)' != ''"> 5 <ItemGroup> 6 <!-- Save original AdditionalInputs generated by CMake. --> 7 <CustomBuild> 8 <CMakeAdditionalInputs>%(CustomBuild.AdditionalInputs)</CMakeAdditionalInputs> 9 </CustomBuild> 10 <!-- Read depfile-discovered inputs. --> 11 <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')"> 12 <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs> 13 </CustomBuild> 14 <!-- Add depfile-discovered inputs to AdditionalInputs. --> 15 <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''"> 16 <AdditionalInputs Condition="'%(CustomBuild.AdditionalInputs)' == ''">%(CustomBuild.DepFileAdditionalInputs)</AdditionalInputs> 17 <AdditionalInputs Condition="'%(CustomBuild.AdditionalInputs)' != ''">%(CustomBuild.AdditionalInputs);%(CustomBuild.DepFileAdditionalInputs)</AdditionalInputs> 18 </CustomBuild> 19 </ItemGroup> 20 </Target> 21 22 <!-- Update the tracking log with depfile-discovered inputs. --> 23 <Target Name="CMakeCustomBuildDepFileTrackingLog" AfterTargets="CustomBuild" Condition="'@(CustomBuild)' != ''"> 24 <!-- Compute the tracking log content for each CustomBuild item individually. --> 25 <ItemGroup> 26 <!-- Read depfile-discovered inputs. --> 27 <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')"> 28 <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs> 29 </CustomBuild> 30 <!-- Generate tracking log representation of all inputs. --> 31 <CustomBuild> 32 <ReadTLog>^%(CustomBuild.Identity)
</ReadTLog> 33 </CustomBuild> 34 <CustomBuild Condition="'%(CustomBuild.CMakeAdditionalInputs)' != ''"> 35 <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.CMakeAdditionalInputs)').Trim(';').Replace(';', '
'))
</ReadTLog> 36 </CustomBuild> 37 <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''"> 38 <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.DepFileAdditionalInputs)').Trim(';').Replace(';', '
'))
</ReadTLog> 39 </CustomBuild> 40 </ItemGroup> 41 <!-- Compute the combined tracking log for all CustomBuild items together. --> 42 <PropertyGroup> 43 <CustomBuildReadTLog>@(CustomBuild->'%(ReadTLog)','')</CustomBuildReadTLog> 44 </PropertyGroup> 45 <!-- Replace the combined tracking log on disk. --> 46 <WriteLinesToFile File="$(TLogLocation)CustomBuild.read.1.tlog" Overwrite="true" Lines="$(CustomBuildReadTLog.ToUpper())" /> 47 </Target> 48</Project> 49