The make dependencies ensure that the header file is regenerated on each
build with a phony target, and the C file is thus recompiled and linked into
the executables on each build. It means that all executables are linked on
each rebuild, even if not necessary, though.

That'd be quite painful, consider e.g. people using LTO.  If done right
however, that should be avoidable to some degree. When creating the
version file, only replace its contents if the contents differ - that's
just a few lines of scripting.


A potential issue is with dynamic linking, potentially someone could recompile/reinstall just one shared object or dll, and the executable using the lib would change its behavior, and run with libs from heterogeneous version. What is the actual version? Hard to say.

In dev mode we often use static linking so that we can copy the executable for a previous version and it would not change depending on updated libs, and so that we always know (or should know) what actual version is running.


Sent via pgsql-hackers mailing list (
To make changes to your subscription:

Reply via email to