1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-05 07:21:24 +03:00

Add support for Visual Studio 2019 in build scripts

This fixes at the same time a set of inconsistencies in the
documentation and the scripts related to the versions of Windows SDK
supported.

Author: Haribabu Kommi
Reviewed-by: Andrew Dunstan, Juan José Santamaría Flecha, Michael
Paquier
Discussion: https://postgr.es/m/CAJrrPGcfqXhfPyMrny9apoDU7M1t59dzVAvoJ9AeAh5BJi+UzA@mail.gmail.com
This commit is contained in:
Michael Paquier
2019-07-02 14:02:33 +09:00
parent 9adda24543
commit 2b1394fc2b
5 changed files with 114 additions and 31 deletions

View File

@ -39,16 +39,29 @@ sub CreateSolution
return new VS2015Solution(@_);
}
# visual 2017 hasn't changed the nmake version to 15, so adjust the check to support it.
elsif (($visualStudioVersion ge '14.10')
or ($visualStudioVersion eq '15.00'))
# The version of nmake bundled in Visual Studio 2017 is greater
# than 14.10 and less than 14.20. And the version number is
# actually 15.00.
elsif (
($visualStudioVersion ge '14.10' && $visualStudioVersion lt '14.20')
|| $visualStudioVersion eq '15.00')
{
return new VS2017Solution(@_);
}
# The version of nmake bundled in Visual Studio 2019 is greater
# than 14.20 and less than 14.30. And the version number is
# actually 16.00.
elsif (
($visualStudioVersion ge '14.20' && $visualStudioVersion lt '14.30')
|| $visualStudioVersion eq '16.00')
{
return new VS2019Solution(@_);
}
else
{
croak $visualStudioVersion;
croak "The requested Visual Studio version is not supported.";
croak
"The requested Visual Studio version $visualStudioVersion is not supported.";
}
}
@ -70,16 +83,29 @@ sub CreateProject
return new VC2015Project(@_);
}
# visual 2017 hasn't changed the nmake version to 15, so adjust the check to support it.
elsif (($visualStudioVersion ge '14.10')
or ($visualStudioVersion eq '15.00'))
# The version of nmake bundled in Visual Studio 2017 is greater
# than 14.10 and less than 14.20. And the version number is
# actually 15.00.
elsif (
($visualStudioVersion ge '14.10' && $visualStudioVersion lt '14.20')
|| $visualStudioVersion eq '15.00')
{
return new VC2017Project(@_);
}
# The version of nmake bundled in Visual Studio 2019 is greater
# than 14.20 and less than 14.30. And the version number is
# actually 16.00.
elsif (
($visualStudioVersion ge '14.20' && $visualStudioVersion lt '14.30')
|| $visualStudioVersion eq '16.00')
{
return new VC2019Project(@_);
}
else
{
croak $visualStudioVersion;
croak "The requested Visual Studio version is not supported.";
croak
"The requested Visual Studio version $visualStudioVersion is not supported.";
}
}
@ -106,17 +132,19 @@ sub _GetVisualStudioVersion
{
my ($major, $minor) = @_;
# visual 2017 hasn't changed the nmake version to 15, so still using the older version for comparison.
if ($major > 14)
# The major visual studio that is supported has nmake
# version <= 14.30, so stick with it as the latest version
# if bumping on something even newer.
if ($major >= 14 && $minor >= 30)
{
carp
"The determined version of Visual Studio is newer than the latest supported version. Returning the latest supported version instead.";
return '14.00';
return '14.20';
}
elsif ($major < 6)
elsif ($major < 12)
{
croak
"Unable to determine Visual Studio version: Visual Studio versions before 6.0 aren't supported.";
"Unable to determine Visual Studio version: Visual Studio versions before 12.0 aren't supported.";
}
return "$major.$minor";
}