LibreOffice driver 3: pg_config and linking statically to libpq
(See part 1 for general introduction)
LibreOffice currently - when it rebuilds libpq, such as for most of
our official binaries - links statically against libpq.
I noticed that pg_config does not give the information of what
additional libraries to include in the link to resolve all symbols
that libpq needs:
* On the one hand, it gives too much since LIBS is filtered to only a
subset in src/interface/libpq/Makefile.
* On the other hand, it does not give enough, since it does not give
the value of LDAP_LIBS_FE anywhere, nor say if it is necessary to
add PTHREAD_LIBS.
This is not an immediate problem for LibreOffice: I export the value
of SHLIB_EXPORTS from src/interface/libpq/Makefile as a Makefile
snippet that gets imported in our build system or (on Microsoft
Windows) we just proceeded by "trial and error" until the link
succeeds.
However, I suggest it would be cleaner to give that kind of
information in pg_config, so that one can basically do something like:
$LINK_COMMAND -lpq $(pg_config --libpq-dep-libs)
and have it work automatically. You could also provide a pq.pc file
for pkgconfig, which would give nice nearly-automatic integration for
projects using e.g. autoconf and friends.
--
Lionel
On Tue, Dec 13, 2011 at 6:05 AM, Lionel Elie Mamane <lionel@mamane.lu> wrote:
* On the one hand, it gives too much since LIBS is filtered to only a
subset in src/interface/libpq/Makefile.
What is it excluding that it ought to include? I am not quite clear
on why that code is like that, but it appears to be intended that the
filter-list include everything that might be needed.
* On the other hand, it does not give enough, since it does not give
the value of LDAP_LIBS_FE anywhere, nor say if it is necessary to
add PTHREAD_LIBS.This is not an immediate problem for LibreOffice: I export the value
of SHLIB_EXPORTS from src/interface/libpq/Makefile as a Makefile
snippet that gets imported in our build system or (on Microsoft
Windows) we just proceeded by "trial and error" until the link
succeeds.However, I suggest it would be cleaner to give that kind of
information in pg_config, so that one can basically do something like:$LINK_COMMAND -lpq $(pg_config --libpq-dep-libs)
and have it work automatically. You could also provide a pq.pc file
for pkgconfig, which would give nice nearly-automatic integration for
projects using e.g. autoconf and friends.
Care to propose a patch?
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company