diff options
| author | Andrew Dunstan | 2014-01-26 14:45:43 +0000 |
|---|---|---|
| committer | Andrew Dunstan | 2014-01-26 14:45:43 +0000 |
| commit | 56c08df55be5a3f12ddc45edcf29b6ecc4111e59 (patch) | |
| tree | 028c18436ef53f36b79dd5ed45e8ac90ba3be8ce /src/tools | |
| parent | 8cb90b21af3cc52c21d8a43e2d9f125113ad9f4f (diff) | |
Enable building with Visual Studion 2013.
Backpatch to 9.3.
Brar Piening.
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/msvc/MSBuildProject.pm | 29 | ||||
| -rw-r--r-- | src/tools/msvc/Mkvcbuild.pm | 6 | ||||
| -rw-r--r-- | src/tools/msvc/Solution.pm | 44 | ||||
| -rw-r--r-- | src/tools/msvc/VSObjectFactory.pm | 12 |
4 files changed, 85 insertions, 6 deletions
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pm index 217c47ab78a..82337c81744 100644 --- a/src/tools/msvc/MSBuildProject.pm +++ b/src/tools/msvc/MSBuildProject.pm @@ -18,6 +18,7 @@ sub _new bless($self, $classname); $self->{filenameExtension} = '.vcxproj'; + $self->{ToolsVersion} = '4.0'; return $self; } @@ -28,7 +29,7 @@ sub WriteHeader print $f <<EOF; <?xml version="1.0" encoding="Windows-1252"?> -<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> +<Project DefaultTargets="Build" ToolsVersion="$self->{ToolsVersion}" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup Label="ProjectConfigurations"> EOF $self->WriteConfigurationHeader($f, 'Debug'); @@ -414,6 +415,7 @@ sub new bless($self, $classname); $self->{vcver} = '11.00'; + $self->{PlatformToolset} = 'v110'; return $self; } @@ -434,9 +436,32 @@ sub WriteConfigurationPropertyGroup <UseOfMfc>false</UseOfMfc> <CharacterSet>MultiByte</CharacterSet> <WholeProgramOptimization>$p->{wholeopt}</WholeProgramOptimization> - <PlatformToolset>v110</PlatformToolset> + <PlatformToolset>$self->{PlatformToolset}</PlatformToolset> </PropertyGroup> EOF } +package VC2013Project; + +# +# Package that encapsulates a Visual C++ 2013 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} = '12.00'; + $self->{PlatformToolset} = 'v120'; + $self->{ToolsVersion} = '12.0'; + + return $self; +} + 1; diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm index 7964c018868..781e70e89fe 100644 --- a/src/tools/msvc/Mkvcbuild.pm +++ b/src/tools/msvc/Mkvcbuild.pm @@ -70,8 +70,10 @@ sub mkvcbuild erand48.c snprintf.c strlcat.c strlcpy.c dirmod.c exec.c noblock.c path.c pgcheckdir.c pg_crc.c pgmkdirp.c pgsleep.c pgstrcasecmp.c pqsignal.c qsort.c qsort_arg.c quotes.c - sprompt.c tar.c thread.c wait_error.c getopt.c getopt_long.c dirent.c rint.c win32env.c - win32error.c win32setlocale.c); + sprompt.c tar.c thread.c wait_error.c getopt.c getopt_long.c dirent.c + win32env.c win32error.c win32setlocale.c); + + push(@pgportfiles, 'rint.c') if ($vsVersion < '12.00'); our @pgcommonallfiles = qw( relpath.c); diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm index bc52086fc8a..9c4e9f78052 100644 --- a/src/tools/msvc/Solution.pm +++ b/src/tools/msvc/Solution.pm @@ -19,6 +19,8 @@ sub _new options => $options, numver => '', strver => '', + VisualStudioVersion => undef, + MinimumVisualStudioVersion => undef, vcver => undef, platform => undef, }; bless($self, $classname); @@ -59,6 +61,11 @@ sub _new return $self; } +sub GetAdditionalHeaders +{ + return ''; +} + sub DeterminePlatform { my $self = shift; @@ -545,6 +552,8 @@ Microsoft Visual Studio Solution File, Format Version $self->{solutionFileVersio # $self->{visualStudioName} EOF + print SLN $self->GetAdditionalHeaders(); + foreach my $fld (keys %{ $self->{projects} }) { foreach my $proj (@{ $self->{projects}->{$fld} }) @@ -727,4 +736,39 @@ sub new return $self; } +package VS2013Solution; + +# +# Package that encapsulates a Visual Studio 2013 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} = '12.00'; + $self->{visualStudioName} = 'Visual Studio 2013'; + $self->{VisualStudioVersion} = '12.0.21005.1', + $self->{MinimumVisualStudioVersion} = '10.0.40219.1', + + return $self; +} + +sub GetAdditionalHeaders +{ + my ($self, $f) = @_; + + return qq|VisualStudioVersion = $self->{VisualStudioVersion} +MinimumVisualStudioVersion = $self->{MinimumVisualStudioVersion} +|; +} + 1; diff --git a/src/tools/msvc/VSObjectFactory.pm b/src/tools/msvc/VSObjectFactory.pm index 0fbf3faa0ed..d255becfe8b 100644 --- a/src/tools/msvc/VSObjectFactory.pm +++ b/src/tools/msvc/VSObjectFactory.pm @@ -45,6 +45,10 @@ sub CreateSolution { return new VS2012Solution(@_); } + elsif ($visualStudioVersion eq '12.00') + { + return new VS2013Solution(@_); + } else { croak "The requested Visual Studio version is not supported."; @@ -76,6 +80,10 @@ sub CreateProject { return new VC2012Project(@_); } + elsif ($visualStudioVersion eq '12.00') + { + return new VC2013Project(@_); + } else { croak "The requested Visual Studio version is not supported."; @@ -115,11 +123,11 @@ sub DetermineVisualStudioVersion sub _GetVisualStudioVersion { my ($major, $minor) = @_; - if ($major > 11) + if ($major > 12) { carp "The determined version of Visual Studio is newer than the latest supported version. Returning the latest supported version instead."; - return '11.00'; + return '12.00'; } elsif ($major < 6) { |
