diff options
Diffstat (limited to 'src/tools/msvc/README')
-rw-r--r-- | src/tools/msvc/README | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/tools/msvc/README b/src/tools/msvc/README new file mode 100644 index 0000000..473d6f4 --- /dev/null +++ b/src/tools/msvc/README @@ -0,0 +1,99 @@ +src/tools/msvc/README + +MSVC build +========== + +This directory contains the tools required to build PostgreSQL using +Microsoft Visual Studio 2013 - 2022. 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 +its 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, VS2019Solution or VS2022Solution, all in +Solution.pm, depending on the user's build environment) and adding objects +implementing the corresponding Project interface (VC2013Project, +VC2015Project, VC2017Project, VC2019Project or VC2022Project 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. |