1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-26 12:21:12 +03:00

Use pkg-config, if available, to locate libxml2 during configure.

If pkg-config is installed and knows about libxml2, use its information
rather than asking xml2-config.  Otherwise proceed as before.  This
patch allows "configure --with-libxml" to succeed on platforms that
have pkg-config but not xml2-config, which is likely to soon become
a typical situation.

The old mechanism can be forced by setting XML2_CONFIG explicitly
(hence, build processes that were already doing so will certainly
not need adjustment).  Also, it's now possible to set XML2_CFLAGS
and XML2_LIBS explicitly to override both programs.

There is a small risk of this breaking existing build processes,
if there are multiple libxml2 installations on the machine and
pkg-config disagrees with xml2-config about which to use.  The
only case where that seems really likely is if a builder has tried
to select a non-default xml2-config by putting it early in his PATH
rather than setting XML2_CONFIG.  Plan to warn against that in the
minor release notes.

Back-patch to v10; before that we had no pkg-config infrastructure,
and it doesn't seem worth adding it for this.

Hugh McMaster and Tom Lane; Peter Eisentraut also made an earlier
attempt at this, from which I lifted most of the docs changes.

Discussion: https://postgr.es/m/CAN9BcdvfUwc9Yx5015bLH2TOiQ-M+t_NADBSPhMF7dZ=pLa_iw@mail.gmail.com
This commit is contained in:
Tom Lane
2020-03-17 12:09:27 -04:00
parent 819d552574
commit 9af2f7dc96
3 changed files with 287 additions and 162 deletions

View File

@ -979,21 +979,31 @@ su - postgres
<term><option>--with-libxml</option></term>
<listitem>
<para>
Build with libxml (enables SQL/XML support). Libxml version 2.6.23 or
Build with libxml2, enabling SQL/XML support. Libxml2 version 2.6.23 or
later is required for this feature.
</para>
<para>
Libxml installs a program <command>xml2-config</command> that
can be used to detect the required compiler and linker
options. PostgreSQL will use it automatically if found. To
specify a libxml installation at an unusual location, you can
either set the environment variable
<envar>XML2_CONFIG</envar> to point to the
<command>xml2-config</command> program belonging to the
installation, or use the options
<option>--with-includes</option> and
<option>--with-libraries</option>.
To detect the required compiler and linker options, PostgreSQL will
query <command>pkg-config</command>, if that is installed and knows
about libxml2. Otherwise the program <command>xml2-config</command>,
which is installed by libxml2, will be used if it is found. Use
of <command>pkg-config</command> is preferred, because it can deal
with multi-architecture installations better.
</para>
<para>
To use a libxml2 installation that is in an unusual location, you
can set <command>pkg-config</command>-related environment
variables (see its documentation), or set the environment variable
<envar>XML2_CONFIG</envar> to point to
the <command>xml2-config</command> program belonging to the libxml2
installation, or set the variables <envar>XML2_CFLAGS</envar>
and <envar>XML2_LIBS</envar>. (If <command>pkg-config</command> is
installed, then to override its idea of where libxml2 is you must
either set <envar>XML2_CONFIG</envar> or set
both <envar>XML2_CFLAGS</envar> and <envar>XML2_LIBS</envar> to
nonempty strings.)
</para>
</listitem>
</varlistentry>
@ -1539,7 +1549,7 @@ su - postgres
<listitem>
<para>
<command>xml2-config</command> program used to locate the
libxml installation.
libxml2 installation
</para>
</listitem>
</varlistentry>