summaryrefslogtreecommitdiffstats
path: root/Templates
diff options
context:
space:
mode:
Diffstat (limited to 'Templates')
-rw-r--r--Templates/MSBuild/CustomBuildDepFile.targets48
1 files changed, 48 insertions, 0 deletions
diff --git a/Templates/MSBuild/CustomBuildDepFile.targets b/Templates/MSBuild/CustomBuildDepFile.targets
new file mode 100644
index 0000000..2387ab5
--- /dev/null
+++ b/Templates/MSBuild/CustomBuildDepFile.targets
@@ -0,0 +1,48 @@
+<?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)&#xD;&#xA;</ReadTLog>
+ </CustomBuild>
+ <CustomBuild Condition="'%(CustomBuild.CMakeAdditionalInputs)' != ''">
+ <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.CMakeAdditionalInputs)').Trim(';').Replace(';', '&#xD;&#xA;'))&#xD;&#xA;</ReadTLog>
+ </CustomBuild>
+ <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''">
+ <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.DepFileAdditionalInputs)').Trim(';').Replace(';', '&#xD;&#xA;'))&#xD;&#xA;</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>