mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Support building with Visual Studio 2017
Haribabu Kommi, reviewed by Takeshi Ideriha and Christian Ullrich Backpatch to 9.6
This commit is contained in:
@ -483,4 +483,27 @@ sub new
|
||||
return $self;
|
||||
}
|
||||
|
||||
package VC2017Project;
|
||||
|
||||
#
|
||||
# Package that encapsulates a Visual C++ 2017 project file
|
||||
#
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use base qw(VC2012Project);
|
||||
|
||||
sub new
|
||||
{
|
||||
my $classname = shift;
|
||||
my $self = $classname->SUPER::_new(@_);
|
||||
bless($self, $classname);
|
||||
|
||||
$self->{vcver} = '15.00';
|
||||
$self->{PlatformToolset} = 'v141';
|
||||
$self->{ToolsVersion} = '15.0';
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
1;
|
||||
|
@ -4,7 +4,7 @@ MSVC build
|
||||
==========
|
||||
|
||||
This directory contains the tools required to build PostgreSQL using
|
||||
Microsoft Visual Studio 2005 - 2011. This builds the whole backend, not just
|
||||
Microsoft Visual Studio 2005 - 2017. This builds the whole backend, not just
|
||||
the libpq frontend library. For more information, see the documentation
|
||||
chapter "Installation on Windows" and the description below.
|
||||
|
||||
@ -92,11 +92,12 @@ These configuration arguments are passed over to Mkvcbuild::mkvcbuild
|
||||
(Mkvcbuild.pm) which creates the Visual Studio project and solution files.
|
||||
It does this by using VSObjectFactory::CreateSolution to create an object
|
||||
implementing the Solution interface (this could be either a VS2005Solution,
|
||||
a VS2008Solution, a VS2010Solution or a VS2012Solution, all in Solution.pm,
|
||||
depending on the user's build environment) and adding objects implementing
|
||||
the corresponding Project interface (VC2005Project or VC2008Project from
|
||||
VCBuildProject.pm or VC2010Project or VC2012Project from MSBuildProject.pm)
|
||||
to it.
|
||||
a VS2008Solution, a VS2010Solution or a VS2012Solution or a VS2013Solution,
|
||||
or a VS2015Solution or a VS2017Solution, all in Solution.pm, depending on
|
||||
the user's build environment) and adding objects implementing the corresponding
|
||||
Project interface (VC2005Project or VC2008Project from VCBuildProject.pm or
|
||||
VC2010Project or VC2012Project or VC2013Project or VC2015Project or VC2017Project
|
||||
from MSBuildProject.pm) to it.
|
||||
When Solution::Save is called, the implementations of Solution and Project
|
||||
save their content in the appropriate format.
|
||||
The final step of starting the appropriate build program (msbuild or vcbuild)
|
||||
|
@ -849,6 +849,32 @@ sub new
|
||||
return $self;
|
||||
}
|
||||
|
||||
package VS2017Solution;
|
||||
|
||||
#
|
||||
# Package that encapsulates a Visual Studio 2017 solution file
|
||||
#
|
||||
|
||||
use Carp;
|
||||
use strict;
|
||||
use warnings;
|
||||
use base qw(Solution);
|
||||
|
||||
sub new
|
||||
{
|
||||
my $classname = shift;
|
||||
my $self = $classname->SUPER::_new(@_);
|
||||
bless($self, $classname);
|
||||
|
||||
$self->{solutionFileVersion} = '12.00';
|
||||
$self->{vcver} = '15.00';
|
||||
$self->{visualStudioName} = 'Visual Studio 2017';
|
||||
$self->{VisualStudioVersion} = '15.0.26730.3';
|
||||
$self->{MinimumVisualStudioVersion} = '10.0.40219.1';
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub GetAdditionalHeaders
|
||||
{
|
||||
my ($self, $f) = @_;
|
||||
|
@ -53,8 +53,14 @@ 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'))
|
||||
{
|
||||
return new VS2017Solution(@_);
|
||||
}
|
||||
else
|
||||
{
|
||||
croak $visualStudioVersion;
|
||||
croak "The requested Visual Studio version is not supported.";
|
||||
}
|
||||
}
|
||||
@ -92,8 +98,14 @@ 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'))
|
||||
{
|
||||
return new VC2017Project(@_);
|
||||
}
|
||||
else
|
||||
{
|
||||
croak $visualStudioVersion;
|
||||
croak "The requested Visual Studio version is not supported.";
|
||||
}
|
||||
}
|
||||
@ -120,6 +132,7 @@ 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)
|
||||
{
|
||||
carp
|
||||
|
Reference in New Issue
Block a user