| <?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> |