-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCpp.Vld.targets
129 lines (111 loc) · 6.07 KB
/
Cpp.Vld.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets="_CppVldTrace">
<PropertyGroup>
<PackagesConfigFile Condition="'$(PackagesConfigFile)' == ''">packages.config</PackagesConfigFile>
<VldIniPath>$(ProjectDir)vld.ini</VldIniPath>
<_VldTemplateDir>$(ZouDir).Templates\nuget\</_VldTemplateDir>
<_VldTemplatePathPrefix>$(_VldTemplateDir)Cpp.Vld</_VldTemplatePathPrefix>
<_VldTemplateIniPath>$(_VldTemplateDir)vld.ini</_VldTemplateIniPath>
<_VldOnlyPackagesConfigFile>$(IntDir)zou.vld.packages.config</_VldOnlyPackagesConfigFile>
<_PackagesConfigExists Condition="Exists($(PackagesConfigFile))">true</_PackagesConfigExists>
</PropertyGroup>
<!-- Create vld.ini -->
<Target Name="_VldCreateIni"
Condition="'$(ConfigurationType)' == 'Application'"
Inputs="$(_VldTemplateIniPath)"
Outputs="$(VldIniPath)"
BeforeTargets="PrepareForBuild">
<Message Importance="normal" Text="[+] $(_VldTemplateIniPath) => $(VldIniPath)" />
<Copy SourceFiles="$(_VldTemplateIniPath)" DestinationFiles="$(VldIniPath)" />
</Target>
<PropertyGroup>
<!-- VLD files should be copied to output directory only for applications -->
<VLDImport Condition="'$(ConfigurationType)' == 'Application'">true</VLDImport>
</PropertyGroup>
<!-- Update vld.ini -->
<ItemGroup Condition="'$(VLDImport)' == 'true'">
<ImportFile Include="$(VldIniPath)" />
</ItemGroup>
<!-- Import binaries -->
<PropertyGroup>
<NumericPlatform Condition="'$(Platform)'=='Win32'">32</NumericPlatform>
<NumericPlatform Condition="'$(Platform)'=='x64'">64</NumericPlatform>
<VldLibDir>$(NugetPackagesDir)epsitec-vld.$(VldVersion)\lib\native\address-model-$(NumericPlatform)\lib\</VldLibDir>
</PropertyGroup>
<ItemGroup Condition="'$(VLDImport)' == 'true'">
<ImportFile Include="$(VldLibDir)*.dll" />
<ImportFile Include="$(VldLibDir)*.manifest" />
</ItemGroup>
<!-- Import standard nuget VLD imports -->
<Import Project="$(_VldTemplatePathPrefix).Imports.targets"/>
<Target Name="_VldCreateVldOnlyPackagesConfig"
Inputs="$(_VldTemplatePathPrefix).packages.config"
Outputs="$(_VldOnlyPackagesConfigFile)">
<Copy SourceFiles="$(_VldTemplatePathPrefix).packages.config" DestinationFiles="$(_VldOnlyPackagesConfigFile)" />
<!-- Update version -->
<FileUpdate Files="$(_VldOnlyPackagesConfigFile)"
Regex='^(?<A>\s*<package\s+id="epsitec-vld"\s+version=")\S+(?<Z>"[^\r\n]+)'
ReplacementText="${A}$(VldVersion)${Z}"
Multiline="true"
IgnoreCase="true">
</FileUpdate>
</Target>
<Target Name="_VldUpdateExistingPackagesConfig"
DependsOnTargets="_VldCreateVldOnlyPackagesConfig"
Condition="'$(_PackagesConfigExists)' == 'true'" >
<!-- Update package name -->
<FileUpdate Files="$(PackagesConfigFile)"
Regex='^(?<A>\s*<package\s+id=")VisualLeakDetector(?<Z>"[^\r\n]+)'
ReplacementText="${A}epsitec-vld${Z}"
Multiline="true"
IgnoreCase="true">
<Output TaskParameter="Changed" PropertyName="_VldNameChanged" />
</FileUpdate>
<!-- Update version -->
<FileUpdate Files="$(PackagesConfigFile)"
Regex='^(?<A>\s*<package\s+id="epsitec-vld"\s+version=")\S+(?<Z>"[^\r\n]+)'
ReplacementText="${A}$(VldVersion)${Z}"
Multiline="true"
IgnoreCase="true">
<Output TaskParameter="Changed" PropertyName="_VldVersionChanged" />
</FileUpdate>
<MergePackagesConfig MergeFiles="$(_VldOnlyPackagesConfigFile)"
IntoFile="$(PackagesConfigFile)">
<Output TaskParameter="Changed" PropertyName="_VldMergeChanged" />
</MergePackagesConfig>
</Target>
<!--
copy packages.config template to temp file and update it
if packages.config exists
update packages.config
merge temp file into existing packages.config
else
copy temp file to packages.config
-->
<Target Name="UpdateVldPackages" DependsOnTargets="_VldCreateVldOnlyPackagesConfig;_VldUpdateExistingPackagesConfig" BeforeTargets="_CppVldImportCheck">
<Copy Condition="'$(_PackagesConfigExists)' != 'true'" SourceFiles="$(_VldOnlyPackagesConfigFile)" DestinationFiles="$(PackagesConfigFile)" />
<PropertyGroup>
<_PackagesConfigChanged Condition="'$(_PackagesConfigExists)' != 'true' Or'$(_VldNameChanged)' == 'true' Or'$(_VldVersionChanged)' == 'true' Or '$(_VldToolsetChanged)' == 'true' Or '$(_VldMergeChanged)' == 'true'">true</_PackagesConfigChanged>
</PropertyGroup>
<!--<Message Importance="high" Text="_VldVersionChanged = $(_VldVersionChanged)"/>
<Message Importance="high" Text="_VldMergeChanged = $(_VldMergeChanged)"/>
<Message Importance="high" Text="_PackagesConfigChanged = $(_PackagesConfigChanged)"/>-->
<!-- Restore nuget packages if necessary... -->
<Exec Condition="'$(_PackagesConfigChanged)' == 'true'"
Command='"$(ZouBinzOsDir)nuget" restore "$(PackagesConfigFile)" -PackagesDirectory "$(NugetPackagesDir.TrimEnd(\/))"' />
</Target>
<Target Name="VldClean" AfterTargets="Clean">
<Delete Files="$(IntDir)zou.vld.packages.config" />
</Target>
<Target Name="_CppVldTrace" Condition="'$(ZouTrace)' == 'true'">
<Message Importance="high" Text="PlatformToolset = $(PlatformToolset)" />
<Message Importance="high" Text="ConfigurationType = $(ConfigurationType)" />
<Message Importance="high" Text="EnableVLD = $(EnableVLD)" />
<Message Importance="high" Text="VldIniPath = $(VldIniPath)" />
<Message Importance="high" Text="VldVersion = $(VldVersion)" />
<Message Importance="high" Text="VldLibDir = $(VldLibDir)" />
<Message Importance="high" Text="VLDImport = $(VLDImport)" />
<Message Importance="high" Text="OutDir = $(OutDir)" />
<Message Importance="high" Text="ImportFile = %(ImportFile.Identity)" />
</Target>
</Project>