mirror of
https://github.com/postgres/postgres.git
synced 2026-04-04 16:55:45 -04:00
In 86d78ef50e I enabled configure to check for C99 support, with the
goal of checking which platforms support C99. While there are a few
machines without C99 support among our buildfarm animals,
de-supporting them for v12 was deemed acceptable.
While not tested in aforementioned commit, the biggest increase in
minimum compiler version comes from MSVC, which gained C99 support
fairly late. The subset in MSVC 2013 is sufficient for our needs, at
this point. While that is a significant increase in minimum version,
the existing windows binaries are already built with a new enough
version.
Make configure error out if C99 support could not be detected. For
MSVC builds, increase the minimum version to 2013.
The increase to MSVC 2013 allows us to get rid of VCBuildProject.pm,
as that was only required for MSVC 2005/2008.
Author: Andres Freund
Discussion: https://postgr.es/m/97d4b165-192d-3605-749c-f614a0c4e783@2ndquadrant.com
99 lines
4.3 KiB
Text
99 lines
4.3 KiB
Text
src/tools/msvc/README
|
|
|
|
MSVC build
|
|
==========
|
|
|
|
This directory contains the tools required to build PostgreSQL using
|
|
Microsoft Visual Studio 2013 - 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.
|
|
|
|
|
|
Notes about Visual Studio Express
|
|
---------------------------------
|
|
To build PostgreSQL using Visual Studio Express, the Microsoft Windows SDK
|
|
has to be installed. Since this is not included in the product
|
|
originally, extra steps are needed to make it work.
|
|
|
|
First, download and install a supported version of the Microsoft Windows SDK
|
|
from www.microsoft.com (v6.0 or greater).
|
|
|
|
Locate the files vcprojectengine.dll.express.config and
|
|
vcprojectengine.dll.config in the vc\vcpackages directory of
|
|
the Visual C++ Express installation. In these files, add the paths
|
|
to the Platform SDK to the Include, Library and Path tags. Be sure
|
|
to add them to the beginning of the list.
|
|
|
|
This should work for both GUI and commandline builds, but a restart
|
|
may be necessary.
|
|
|
|
If you are using a recent version of the Microsoft Windows SDK that includes
|
|
the compilers and build tools you probably don't even need Visual Studio
|
|
Express to build PostgreSQL.
|
|
|
|
|
|
Structure of the build tools
|
|
----------------------------
|
|
The tools for building PostgreSQL using Microsoft Visual Studio currently
|
|
consist of the following files:
|
|
|
|
- Configuration files -
|
|
config_default.pl default configuration arguments
|
|
|
|
A typical build environment has two more files, buildenv.pl and config.pl
|
|
that contain the user's build environment settings and configuration
|
|
arguments.
|
|
|
|
|
|
- User tools -
|
|
build.pl tool to build the binaries
|
|
clean.bat batch file for cleaning up generated files
|
|
install.pl tool to install the generated files
|
|
mkvcbuild.pl tool to generate the Visual Studio build files
|
|
vcregress.pl tool to run the regression tests
|
|
|
|
|
|
- Internal tools -
|
|
gendef.pl internal tool to generate .DEF files
|
|
pgbison.pl internal tool to process .y files using bison
|
|
pgflex.pl internal tool to process .l files using flex
|
|
|
|
Many of those .pl files also have a corresponding .bat-wrapper that doesn't
|
|
contain any additional logic.
|
|
|
|
|
|
- Internal modules -
|
|
Install.pm module containing the install logic
|
|
Mkvcbuild.pm module containing the code to generate the Visual
|
|
Studio build (project/solution) files
|
|
MSBuildProject.pm module containing the code to generate MSBuild based
|
|
project files (Visual Studio 2013 or greater)
|
|
Project.pm module containing the common code to generate the
|
|
Visual Studio project files. Also provides the
|
|
common interface of all project file generators
|
|
Solution.pm module containing the code to generate the Visual
|
|
Studio solution files.
|
|
VSObjectFactory.pm factory module providing the code to create the
|
|
appropriate project/solution files for the current
|
|
environment
|
|
|
|
|
|
Description of the internals of the Visual Studio build process
|
|
---------------------------------------------------------------
|
|
By typing 'build' the user starts the build.bat wrapper which simply passes
|
|
it's arguments to build.pl.
|
|
In build.pl the user's buildenv.pl is used to set up the build environment
|
|
(i. e. path to bison and flex). In addition his config.pl file is merged into
|
|
config_default.pl to create the configuration arguments.
|
|
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 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 (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) is
|
|
performed in build.pl again.
|