| <?xml version="1.0" encoding="utf-8"?> | |
| <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |
| <!-- Update AdditionalInputs with depfile-discovered inputs. --> | |
| <Target Name="CMakeCustomBuildDepFileAdditionalInputs" BeforeTargets="CustomBuild" Condition="'@(CustomBuild)' != ''"> | |
| <ItemGroup> | |
| <!-- Save original AdditionalInputs generated by CMake. --> | |
| <CustomBuild> | |
| <CMakeAdditionalInputs>%(CustomBuild.AdditionalInputs)</CMakeAdditionalInputs> | |
| </CustomBuild> | |
| <!-- Read depfile-discovered inputs. --> | |
| <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')"> | |
| <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs> | |
| </CustomBuild> | |
| <!-- Add depfile-discovered inputs to AdditionalInputs. --> | |
| <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''"> | |
| <AdditionalInputs Condition="'%(CustomBuild.AdditionalInputs)' == ''">%(CustomBuild.DepFileAdditionalInputs)</AdditionalInputs> | |
| <AdditionalInputs Condition="'%(CustomBuild.AdditionalInputs)' != ''">%(CustomBuild.AdditionalInputs);%(CustomBuild.DepFileAdditionalInputs)</AdditionalInputs> | |
| </CustomBuild> | |
| </ItemGroup> | |
| </Target> | |
| <!-- Update the tracking log with depfile-discovered inputs. --> | |
| <Target Name="CMakeCustomBuildDepFileTrackingLog" AfterTargets="CustomBuild" Condition="'@(CustomBuild)' != ''"> | |
| <!-- Compute the tracking log content for each CustomBuild item individually. --> | |
| <ItemGroup> | |
| <!-- Read depfile-discovered inputs. --> | |
| <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')"> | |
| <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs> | |
| </CustomBuild> | |
| <!-- Generate tracking log representation of all inputs. --> | |
| <CustomBuild> | |
| <ReadTLog>^%(CustomBuild.Identity)
</ReadTLog> | |
| </CustomBuild> | |
| <CustomBuild Condition="'%(CustomBuild.CMakeAdditionalInputs)' != ''"> | |
| <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.CMakeAdditionalInputs)').Trim(';').Replace(';', '
'))
</ReadTLog> | |
| </CustomBuild> | |
| <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''"> | |
| <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.DepFileAdditionalInputs)').Trim(';').Replace(';', '
'))
</ReadTLog> | |
| </CustomBuild> | |
| </ItemGroup> | |
| <!-- Compute the combined tracking log for all CustomBuild items together. --> | |
| <PropertyGroup> | |
| <CustomBuildReadTLog>@(CustomBuild->'%(ReadTLog)','')</CustomBuildReadTLog> | |
| </PropertyGroup> | |
| <!-- Replace the combined tracking log on disk. --> | |
| <WriteLinesToFile File="$(TLogLocation)CustomBuild.read.1.tlog" Overwrite="true" Lines="$(CustomBuildReadTLog.ToUpper())" /> | |
| </Target> | |
| </Project> |