@@ -126,9 +126,12 @@ sub createProject {
126
126
$cflags =~ s / </ </ g ;
127
127
$cflags =~ s / >/ >/ g ;
128
128
129
- my $libs = ' ' ;
129
+ my $libs_release = ' ' ;
130
+ my $libs_debug = ' ' ;
130
131
if (!$static_library ) {
131
- $libs = join (" ;" , sort (grep /^(?!libgit\.lib|xdiff\/lib\.lib|vcs-svn\/lib\.lib|libcurl\.lib|libeay32\.lib|libiconv\.lib|ssleay32\.lib|zlib\.lib)/, @{$$build_structure {" $prefix${name} _LIBS" }}));
132
+ $libs_release = join (" ;" , sort (grep /^(?!libgit\.lib|xdiff\/lib\.lib|vcs-svn\/lib\.lib)/, @{$$build_structure {" $prefix${name} _LIBS" }}));
133
+ $libs_debug = $libs_release ;
134
+ $libs_debug =~ s / zlib\. lib/ zlibd\. lib/ ;
132
135
}
133
136
134
137
$defines =~ s / -D// g ;
@@ -138,45 +141,6 @@ sub createProject {
138
141
139
142
die " Could not create the directory $target for $label project!\n " unless (-d " $target " || mkdir " $target " );
140
143
141
- use File::Copy;
142
- copy(" $git_dir /compat/vcbuild/packages.config" , " $target /packages.config" );
143
-
144
- my $needsCurl = grep (/ libcurl.lib/ , @{$$build_structure {" $prefix${name} _LIBS" }});
145
- my $targetsImport = ' ' ;
146
- my $targetsErrors = ' ' ;
147
- my $afterTargets = ' ' ;
148
- open F, " <$git_dir /compat/vcbuild/packages.config" ;
149
- while (<F>) {
150
- if (/ <package id="([^"]+)" version="([^"]+)"/ ) {
151
- if ($1 eq ' libiconv' ) {
152
- # we have to link with the Release builds already because libiconv
153
- # is only available targeting v100 and v110, see
154
- # https://github.com/coapp-packages/libiconv/issues/2
155
- $libs .= " ;$rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .$2 \\ build\\ native\\ lib\\ v110\\\$ (Platform)\\ Release\\ dynamic\\ cdecl\\ libiconv.lib" ;
156
- $afterTargets .= " \n <Copy SourceFiles=\" $rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .redist.$2 \\ build\\ native\\ bin\\ v110\\\$ (Platform)\\ Release\\ dynamic\\ cdecl\\ libiconv.dll\" DestinationFolder=\"\$ (TargetDir)\" SkipUnchangedFiles=\" true\" />" ;
157
- } elsif ($needsCurl && $1 eq ' curl' ) {
158
- # libcurl is only available targeting v100 and v110
159
- $libs .= " ;$rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .$2 \\ build\\ native\\ lib\\ v110\\\$ (Platform)\\ Release\\ dynamic\\ libcurl.lib" ;
160
- $afterTargets .= " \n <Copy SourceFiles=\" $rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .redist.$2 \\ build\\ native\\ bin\\ v110\\\$ (Platform)\\ Release\\ dynamic\\ libcurl.dll\" DestinationFolder=\"\$ (TargetDir)\" SkipUnchangedFiles=\" true\" />" ;
161
- } elsif ($needsCurl && $1 eq ' expat' ) {
162
- # libexpat is only available targeting v100 and v110
163
- $libs .= " ;$rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .$2 \\ build\\ native\\ lib\\ v110\\\$ (Platform)\\ Release\\ dynamic\\ utf8\\ libexpat.lib" ;
164
- } elsif ($1 eq ' zlib' ) {
165
- # zlib
166
- $libs .= " ;$rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .v140.windesktop.msvcstl.dyn.rt-dyn.$2 \\ lib\\ native\\ v140\\ windesktop\\ msvcstl\\ dyn\\ rt-dyn\\ x64\\ RelWithDebInfo\\ zlib.lib" ;
167
- } elsif ($1 eq ' openssl' ) {
168
- # openssl
169
- $libs .= " ;$rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .v140.windesktop.msvcstl.dyn.rt-dyn.x64.$2 \\ lib\\ native\\ v140\\ windesktop\\ msvcstl\\ dyn\\ rt-dyn\\ x64\\ release\\ libeay32.lib" ;
170
- $libs .= " ;$rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .v140.windesktop.msvcstl.dyn.rt-dyn.x64.$2 \\ lib\\ native\\ v140\\ windesktop\\ msvcstl\\ dyn\\ rt-dyn\\ x64\\ release\\ ssleay32.lib" ;
171
- }
172
- next if ($1 =~ / ^(zlib$|openssl(?!.*(x64|x86)$) )/ );
173
- my $targetsFile = " $rel_dir \\ compat\\ vcbuild\\ GEN.PKGS\\ $1 .$2 \\ build\\ native\\ $1 .targets" ;
174
- $targetsImport .= " \n <Import Project=\" $targetsFile \" Condition=\" Exists('$targetsFile ')\" />" ;
175
- $targetsErrors .= " \n <Error Condition=\" !Exists('$targetsFile ')\" Text=\"\$ ([System.String]::Format('\$ (ErrorText)', '$targetsFile '))\" />" ;
176
- }
177
- }
178
- close F;
179
-
180
144
open F, " >$vcxproj " or die " Could not open $vcxproj for writing!\n " ;
181
145
binmode F, " :crlf :utf8" ;
182
146
print F chr (0xFEFF);
@@ -204,6 +168,16 @@ sub createProject {
204
168
<PropertyGroup Label="Globals">
205
169
<ProjectGuid>$uuid </ProjectGuid>
206
170
<Keyword>Win32Proj</Keyword>
171
+ <VCPKGArch Condition="'\$ (Platform)'=='Win32'">x86-windows</VCPKGArch>
172
+ <VCPKGArch Condition="'\$ (Platform)'!='Win32'">x64-windows</VCPKGArch>
173
+ <VCPKGArchDirectory>$cdup \\ compat\\ vcbuild\\ vcpkg\\ installed\\\$ (VCPKGArch)</VCPKGArchDirectory>
174
+ <VCPKGBinDirectory Condition="'\( Configuration)'=='Debug'">\$ (VCPKGArchDirectory)\\ debug\\ bin</VCPKGBinDirectory>
175
+ <VCPKGLibDirectory Condition="'\( Configuration)'=='Debug'">\$ (VCPKGArchDirectory)\\ debug\\ lib</VCPKGLibDirectory>
176
+ <VCPKGBinDirectory Condition="'\( Configuration)'!='Debug'">\$ (VCPKGArchDirectory)\\ bin</VCPKGBinDirectory>
177
+ <VCPKGLibDirectory Condition="'\( Configuration)'!='Debug'">\$ (VCPKGArchDirectory)\\ lib</VCPKGLibDirectory>
178
+ <VCPKGIncludeDirectory>\$ (VCPKGArchDirectory)\\ include</VCPKGIncludeDirectory>
179
+ <VCPKGLibs Condition="'\( Configuration)'=='Debug'">$libs_debug </VCPKGLibs>
180
+ <VCPKGLibs Condition="'\( Configuration)'!='Debug'">$libs_release </VCPKGLibs>
207
181
</PropertyGroup>
208
182
<Import Project="\$ (VCTargetsPath)\\ Microsoft.Cpp.Default.props" />
209
183
<PropertyGroup Condition="'\$ (Configuration)'=='Debug'" Label="Configuration">
@@ -237,7 +211,7 @@ sub createProject {
237
211
<ItemDefinitionGroup>
238
212
<ClCompile>
239
213
<AdditionalOptions>$cflags %(AdditionalOptions)</AdditionalOptions>
240
- <AdditionalIncludeDirectories>$includes ;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
214
+ <AdditionalIncludeDirectories>$cdup ; $cdup \\ compat; $cdup \\ compat \\ regex; $cdup \\ compat \\ win32; $cdup \\ compat \\ poll; $cdup \\ compat \\ vcbuild \\ include; \$ (VCPKGIncludeDirectory) ;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
241
215
<EnableParallelCodeGeneration />
242
216
<MinimalRebuild>true</MinimalRebuild>
243
217
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
@@ -248,11 +222,22 @@ sub createProject {
248
222
<SuppressStartupBanner>true</SuppressStartupBanner>
249
223
</Lib>
250
224
<Link>
251
- <AdditionalDependencies>$libs ;\$ (AdditionalDependencies)</AdditionalDependencies>
225
+ <AdditionalLibraryDirectories>\$ (VCPKGLibDirectory);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
226
+ <AdditionalDependencies>\$ (VCPKGLibs);\$ (AdditionalDependencies)</AdditionalDependencies>
252
227
<AdditionalOptions>invalidcontinue.obj %(AdditionalOptions)</AdditionalOptions>
253
228
<ManifestFile>$cdup \\ compat\\ win32\\ git.manifest</ManifestFile>
254
229
<SubSystem>Console</SubSystem>
255
230
</Link>
231
+ EOM
232
+ if ($target eq ' libgit' ) {
233
+ print F << "EOM" ;
234
+ <PreBuildEvent Condition="!Exists('$cdup \\ compat\\ vcbuild\\ vcpkg')">
235
+ <Message>Initialize VCPKG</Message>
236
+ <Command>call "$cdup \\ compat\\ vcbuild\\ vcpkg_install.bat" </Command>
237
+ </PreBuildEvent>
238
+ EOM
239
+ }
240
+ print F << "EOM" ;
256
241
</ItemDefinitionGroup>
257
242
<ItemDefinitionGroup Condition="'\$ (Platform)'=='Win32'">
258
243
<Link>
@@ -323,21 +308,15 @@ EOM
323
308
EOM
324
309
}
325
310
print F << "EOM" ;
326
- <ItemGroup>
327
- <None Include="packages.config" />
328
- </ItemGroup>
329
311
<Import Project="\$ (VCTargetsPath)\\ Microsoft.Cpp.targets" />
330
- <ImportGroup Label="ExtensionTargets">$targetsImport
331
- </ImportGroup>
332
- <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
333
- <PropertyGroup>
334
- <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
335
- </PropertyGroup>$targetsErrors
336
- </Target>
337
312
EOM
338
- if (!$static_library && $afterTargets ne ' ' ) {
313
+ if (!$static_library ) {
339
314
print F << "EOM" ;
340
- <Target Name="${target} _AfterBuild" AfterTargets="AfterBuild">$afterTargets
315
+ <Target Name="${target} _AfterBuild" AfterTargets="AfterBuild">
316
+ <ItemGroup>
317
+ <DLLsAndPDBs Include="\$ (VCPKGBinDirectory)\\ *.dll;\$ (VCPKGBinDirectory)\\ *.pdb" />
318
+ </ItemGroup>
319
+ <Copy SourceFiles="@(DLLsAndPDBs)" DestinationFolder="\$ (OutDir)" />
341
320
</Target>
342
321
EOM
343
322
}
0 commit comments