diff options
author | Michael Paquier <michael@paquier.xyz> | 2019-07-03 08:58:04 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2019-07-03 08:58:04 +0900 |
commit | 0ce8e49b224300fe895f5cda6b8e45d80bbdf860 (patch) | |
tree | 69f8ae0a425b902921849272351131aacaca2a26 /src/tools/msvc/VSObjectFactory.pm | |
parent | 90434e6f2cf9fb629069b1b3017ea1a2c1ab07eb (diff) |
Add support for Visual Studio 2019 in build scripts
This adjusts 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
Backpatch-through: 9.4
Diffstat (limited to 'src/tools/msvc/VSObjectFactory.pm')
-rw-r--r-- | src/tools/msvc/VSObjectFactory.pm | 55 |
1 files changed, 44 insertions, 11 deletions
diff --git a/src/tools/msvc/VSObjectFactory.pm b/src/tools/msvc/VSObjectFactory.pm index 2f3480a1f60..07be39f2bd8 100644 --- a/src/tools/msvc/VSObjectFactory.pm +++ b/src/tools/msvc/VSObjectFactory.pm @@ -53,15 +53,30 @@ 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."; } } @@ -98,15 +113,30 @@ 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."; } } @@ -132,12 +162,15 @@ sub DetermineVisualStudioVersion 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) { |