You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
postgres/src/tools/msvc
Magnus Hagander 4e3ffd5981 Remove line missed in previous commit 5 years ago
..
dummylib perltidy run prior to branching 8 years ago
.gitignore Ignore config.pl and buildenv.pl in src/tools/msvc. 12 years ago
Install.pm Sync our copy of the timezone library with IANA release tzcode2020c. 5 years ago
MSBuildProject.pm Define EXEC_BACKEND in pg_config_manual.h 6 years ago
Mkvcbuild.pm Fix our Windows stat() emulation to handle file sizes > 4GB. 5 years ago
Project.pm Use perl's $/ more idiomatically 6 years ago
README Add support for Visual Studio 2019 in build scripts 7 years ago
Solution.pm Move catalog index declarations 5 years ago
VSObjectFactory.pm Use a slightly more liberal regex to detect Visual Studio version 6 years ago
build.bat
build.pl Improve perl script in MSVC to build binaries 6 years ago
clean.bat Remove separate files for the initial contents of pg_(sh)description 6 years ago
config_default.pl Move configure --disable-float8-byval to pg_config_manual.h 6 years ago
ecpg_regression.proj Fix inconsistencies and typos in the tree, take 11 6 years ago
gendef.pl MSVC: Build ~35% faster by calling dumpbin just once per directory. 7 years ago
install.bat Turn install.bat into a pure one line wrapper fort he perl script. 11 years ago
install.pl Set Perl search path more idiomatically 6 years ago
mkvcbuild.pl Set Perl search path more idiomatically 6 years ago
pgbison.bat
pgbison.pl Use perl warnings pragma consistently 6 years ago
pgflex.bat
pgflex.pl Use perl warnings pragma consistently 6 years ago
vcregress.bat
vcregress.pl Remove line missed in previous commit 5 years ago

README

src/tools/msvc/README

MSVC build
==========

This directory contains the tools required to build PostgreSQL using
Microsoft Visual Studio 2013 - 2019. 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 (v8.1a 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 VS2013Solution,
VS2015Solution, VS2017Solution or VS2019Solution, all in Solution.pm,
depending on the user's build environment) and adding objects implementing
the corresponding Project interface (VC2013Project, VC2015Project,
VC2017Project or VC2019Project 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.