aboutsummaryrefslogtreecommitdiff
path: root/src/tools/msvc/VSObjectFactory.pm
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2021-11-24 13:03:55 +0900
committerMichael Paquier <michael@paquier.xyz>2021-11-24 13:03:55 +0900
commit0e681fa458750b08a5c7885820320fb85cd9ddf1 (patch)
tree4d16f66af0548203542ce12d6cc7481f49045d95 /src/tools/msvc/VSObjectFactory.pm
parent7933bc0d13616844ed66271942eac12c3a7f0488 (diff)
downloadpostgresql-0e681fa458750b08a5c7885820320fb85cd9ddf1.tar.gz
postgresql-0e681fa458750b08a5c7885820320fb85cd9ddf1.zip
Add support for Visual Studio 2022 in build scripts
Documentation and any code paths related to VS are updated to keep the whole consistent. Similarly to 2017 and 2019, the version of VS and the version of nmake that we use to determine which code paths to use for the build are still inconsistent in their own way. Backpatch down to 10, so as buildfarm members are able to use this new version of Visual Studio on all the stable branches supported. Author: Hans Buschmann Discussion: https://postgr.es/m/1633101364685.39218@nidsa.net Backpatch-through: 10
Diffstat (limited to 'src/tools/msvc/VSObjectFactory.pm')
-rw-r--r--src/tools/msvc/VSObjectFactory.pm28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/tools/msvc/VSObjectFactory.pm b/src/tools/msvc/VSObjectFactory.pm
index 61e83f52a09..a865604a5a1 100644
--- a/src/tools/msvc/VSObjectFactory.pm
+++ b/src/tools/msvc/VSObjectFactory.pm
@@ -61,6 +61,16 @@ sub CreateSolution
{
return new VS2019Solution(@_);
}
+
+ # The version of nmake bundled in Visual Studio 2022 is greater
+ # than 14.30 and less than 14.40. And the version number is
+ # actually 17.00.
+ elsif (
+ ($visualStudioVersion ge '14.30' && $visualStudioVersion lt '14.40')
+ || $visualStudioVersion eq '17.00')
+ {
+ return new VS2022Solution(@_);
+ }
else
{
croak
@@ -105,6 +115,16 @@ sub CreateProject
{
return new VC2019Project(@_);
}
+
+ # The version of nmake bundled in Visual Studio 2022 is greater
+ # than 14.30 and less than 14.40. And the version number is
+ # actually 17.00.
+ elsif (
+ ($visualStudioVersion ge '14.30' && $visualStudioVersion lt '14.40')
+ || $visualStudioVersion eq '17.00')
+ {
+ return new VC2022Project(@_);
+ }
else
{
croak
@@ -134,7 +154,7 @@ sub DetermineVisualStudioVersion
else
{
# fake version
- return '16.00';
+ return '17.00';
}
}
@@ -143,13 +163,13 @@ sub _GetVisualStudioVersion
my ($major, $minor) = @_;
# The major visual studio that is supported has nmake
- # version <= 14.30, so stick with it as the latest version
+ # version <= 14.40, so stick with it as the latest version
# if bumping on something even newer.
- if ($major >= 14 && $minor >= 30)
+ if ($major >= 14 && $minor >= 40)
{
carp
"The determined version of Visual Studio is newer than the latest supported version. Returning the latest supported version instead.";
- return '14.20';
+ return '14.30';
}
elsif ($major < 12)
{