-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathImportFile.targets
96 lines (81 loc) · 4.45 KB
/
ImportFile.targets
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<!--
The ImportFile.targets can be used to import files in C++ projects.
For C# projects, use the Content Itemgroup
For Go projects, use the CopyFile ItemGroup
Input parameters:
- @(ImportFile)
- %(ImportDir)
- %(ImportFile)
-->
<Project>
<PropertyGroup>
<ImportFileTargetsImported>true</ImportFileTargetsImported>
</PropertyGroup>
<!-- Define default metadata for ImportFile and CustomBuild items-->
<ItemDefinitionGroup>
<ImportFile>
<ImportDir>$(OutDir)</ImportDir>
<RedistFolder>$(RedistFolder)</RedistFolder>
</ImportFile>
<CustomBuild>
<ImportFile>%(FileName)%(Extension)</ImportFile>
<ImportDir>$(OutDir)</ImportDir>
</CustomBuild>
</ItemDefinitionGroup>
<Target Name="ImportFileInit">
<Message Condition="'$(ZouDebug)' == 'true'" Importance="high" Text="### [$(MSBuildProjectFile)] ImportFileInit" />
<ItemGroup>
<ImportFile>
<ImportFile Condition="'%(ImportFile.ImportFile)' == ''">%(FileName)%(Extension)</ImportFile>
</ImportFile>
<ImportFile>
<BundleRelativeSrcDir>$([MSBuild]::MakeRelative('$(BundleDir)', '%(RootDir)%(Directory)'))</BundleRelativeSrcDir>
<BundleRelativeDstDir>$([MSBuild]::MakeRelative('$(BundleDir)', '%(ImportDir)'))</BundleRelativeDstDir>
</ImportFile>
</ItemGroup>
</Target>
<Target Name="ImportFileCrossBuild" DependsOnTargets="ImportFileInit">
<Message Condition="'$(ZouDebug)' == 'true'" Importance="high" Text="### [$(MSBuildProjectFile)] ImportFileCrossBuild(CrossBuild=$(CrossBuild))" />
<!-- ImportFile x RuntimeOs (defined in Boot.Runtime.props ) -->
<MulJoin Input="@(ImportFile)" Items="@(RuntimeOs)" ItemName="RuntimeOs" >
<Output TaskParameter="Output" ItemName="_ImportFile" />
</MulJoin>
<ItemGroup>
<ImportFile Remove="@(ImportFile)" />
<ImportFile Include="@(_ImportFile)" />
<_ImportFile Remove="@(_ImportFile)" />
</ItemGroup>
<!--<LogItems Items="@(ImportFile)" Title="ImportFileCrossBuild.ImportFile" />
<Message Importance="high" Text=" " />-->
</Target>
<Target Name="ImportFile" Inputs="@(ImportFile)" Outputs="@(ImportFile->'%(ImportDir)%(RecursiveDir)%(ImportFile)')" BeforeTargets="PrepareForBuild" DependsOnTargets="ImportFileCrossBuild">
<Message Condition="'$(ZouDebug)' == 'true'" Importance="high" Text="### [$(MSBuildProjectFile)] ImportFile" />
<Error Condition="'$(ZouAgentType)' != 'Cpp' And '$(ZouAgentType)' != ''" Text="ImportFile is not available with '$(ZouAgentType)' agent (only available with C++ agent)" />
<!-- Create custom builds so that Visual Studio FastUpToDateCheck does not skip changes -->
<ItemGroup>
<CustomBuild Include="@(ImportFile)">
<Outputs Condition="'%(CustomBuild.ImportPaths)' == ''">%(ImportDir)%(RecursiveDir)%(ImportFile)</Outputs>
<Command Condition="'%(CustomBuild.ImportPaths)' == '' And $([MSBuild]::IsOsPlatform('Windows'))">copy "%(FullPath)" "%(ImportDir)%(RecursiveDir)%(ImportFile)" >$(Nul)</Command>
<Command Condition="'%(CustomBuild.ImportPaths)' == '' And !$([MSBuild]::IsOsPlatform('Windows'))">cp '%(FullPath)' '%(ImportDir)%(RecursiveDir)%(ImportFile)' >$(Nul)</Command>
<Outputs Condition="'%(CustomBuild.ImportPaths)' != ''">%(CustomBuild.ImportPaths)</Outputs>
<Command Condition="'%(CustomBuild.ImportPaths)' != '' And $([MSBuild]::IsOsPlatform('Windows'))">for %%i in (%(CustomBuild.ImportPaths)) do copy "%(FullPath)" "%%i" >$(Nul)</Command>
<Command Condition="'%(CustomBuild.ImportPaths)' != '' And !$([MSBuild]::IsOsPlatform('Windows'))">IFS=';'; for i in '%(CustomBuild.ImportPaths)'; do cp '%(FullPath)' "$i" >$(Nul); done</Command>
<TreatOutputAsContent>true</TreatOutputAsContent>
<Message />
</CustomBuild>
</ItemGroup>
<!-- Display file import by extension -->
<ItemGroup>
<_Message Include="@(ImportFile->'$(T3)%(BundleRelativeSrcDir)$(T3)%(RecursiveDir)%2A%(Extension) -> %(BundleRelativeDstDir)$(T3)%(RecursiveDir)%2A%(Extension)')" />
</ItemGroup>
<RemoveDuplicates Inputs="@(_Message)">
<Output TaskParameter="Filtered" ItemName="_Message"/>
</RemoveDuplicates>
<Message Importance="high" Text="$(L2p)[+] %(_Message.Identity)$(XC)" />
<ItemGroup>
<_Message Remove="@(_Message)" />
</ItemGroup>
<!--<LogItems Items="@(CustomBuild)" Title="### ImportFile.CustomBuild" />
<Message Importance="high" Text=" " />-->
</Target>
</Project>