1
0

CustomBuildDepFile.targets 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. <!-- Update the tracking log with depfile-discovered inputs. -->
  22. <Target Name="CMakeCustomBuildDepFileTrackingLog" AfterTargets="CustomBuild" Condition="'@(CustomBuild)' != ''">
  23. <!-- Compute the tracking log content for each CustomBuild item individually. -->
  24. <ItemGroup>
  25. <!-- Read depfile-discovered inputs. -->
  26. <CustomBuild Condition="Exists('%(CustomBuild.DepFileAdditionalInputsFile)')">
  27. <DepFileAdditionalInputs>$([System.IO.File]::ReadAllText('%(CustomBuild.DepFileAdditionalInputsFile)').TrimEnd())</DepFileAdditionalInputs>
  28. </CustomBuild>
  29. <!-- Generate tracking log representation of all inputs. -->
  30. <CustomBuild>
  31. <ReadTLog>^%(CustomBuild.Identity)&#xD;&#xA;</ReadTLog>
  32. </CustomBuild>
  33. <CustomBuild Condition="'%(CustomBuild.CMakeAdditionalInputs)' != ''">
  34. <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.CMakeAdditionalInputs)').Trim(';').Replace(';', '&#xD;&#xA;'))&#xD;&#xA;</ReadTLog>
  35. </CustomBuild>
  36. <CustomBuild Condition="'%(CustomBuild.DepFileAdditionalInputs)' != ''">
  37. <ReadTLog>%(ReadTLog)$([System.String]::Copy('%(CustomBuild.DepFileAdditionalInputs)').Trim(';').Replace(';', '&#xD;&#xA;'))&#xD;&#xA;</ReadTLog>
  38. </CustomBuild>
  39. </ItemGroup>
  40. <!-- Compute the combined tracking log for all CustomBuild items together. -->
  41. <PropertyGroup>
  42. <CustomBuildReadTLog>@(CustomBuild->'%(ReadTLog)','')</CustomBuildReadTLog>
  43. </PropertyGroup>
  44. <!-- Replace the combined tracking log on disk. -->
  45. <WriteLinesToFile File="$(TLogLocation)CustomBuild.read.1.tlog" Overwrite="true" Lines="$(CustomBuildReadTLog.ToUpper())" />
  46. </Target>
  47. </Project>