Generate pg_config.h from pg_config.h.in on Windows
authorPeter Eisentraut <peter@eisentraut.org>
Fri, 20 Dec 2019 07:54:42 +0000 (08:54 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Fri, 20 Dec 2019 08:15:08 +0000 (09:15 +0100)
commit8f4fb4c648ee8df00f78bee3f8099a6ae510071a
treec4ff3b22332190772b6e8088097d52c8acd2df0f
parentdf7fe9e2d707da69a4437fb6f9e695c070882160
Generate pg_config.h from pg_config.h.in on Windows

Previously, the Windows MSVC build generated pg_config.h from a
hard-coded pg_config.h.win32 with some ad hoc postprocessing.  The
pg_config.h.win32 file required manual maintenance and was as a result
frequently out of date.

Instead, have the MSVC build scripts emulate what configure and
config.status do: collect a list of defines and then create
pg_config.h from pg_config.h.in by changing the appropriate lines.

The previous setup was made to support old Windows build systems that
didn't have any text processing capabilities, but the current system
has Perl, so it's not a problem.  pg_config.h.win32 is removed.

In order to try to keep the Windows side of things more up to date in
the future, we now also require that all symbols found in
pg_config.h.in are defined in the MSVC build system.  So if there is a
change in configure that results in a new symbol, an update in
Solution.pm will be required.

The other headers managed by AC_CONFIG_HEADERS in configure, namely
src/include/pg_config_ext.h and
src/interfaces/ecpg/include/ecpg_config.h, get the same treatment, so
this removes even more ad hoc code in the MSVC build scripts.

Reviewed-by: Michael Paquier <michael@paquier.xyz>
Discussion: https://www.postgresql.org/message-id/flat/1441b834-f434-e0bf-46ed-9c4d5c29c2d4%402ndquadrant.com
src/include/pg_config.h.win32 [deleted file]
src/include/pg_config_ext.h.win32 [deleted file]
src/tools/msvc/Solution.pm
src/tools/version_stamp.pl