On Mon, Jan 14, 2013 at 06:51:05AM -0500, Peter Eisentraut wrote: > In multi-arch OS installations, using a single foo-config script to find > libraries is problematic, because you don't know which architecture it > will point to, and you can't choose which one you want. Using > pkg-config is better in that situation, because you can use its > environment variables to point to your preferred version > of /usr/lib*/pkgconfig or similar.
"./configure XML2_CONFIG=/my/preferred/xml2-config" achieves this today. > In configure, we use xml2-config and pthread-config. The latter doesn't > exist on my system, so I'm just dealing with xml2-config now. pthread-config is now quite deep into legacy territory; no concern there. > The attached patch looks for pkg-config first, and finds libxml2 using > that if available. Otherwise it falls back to using xml2-config. There's a risk to making anything configurable in two places, with one taking precedence. Some user unaware of $PLACE_1 will scratch his head after changing $PLACE_2 to no effect. For example, I've been using an override libxml2 by changing my PATH. With this patch, I will need to also change PKG_CONFIG_PATH; otherwise, my system libxml2 will quietly take precedence. I can adapt easily enough, but I wonder whether the patch will be a net win generally for folks building PostgreSQL. I'd like this change more if it could be construed as starting us on the road to use pkg-config, or any one particular configuration discovery method, for all dependencies. But many dependencies don't ship .pc files at all (perl, ldap, tcl, pam). Others ship a .pc, but we use neither it nor a -config script (openssl, gssapi, xslt). I see this patch as adding one more thing for builders to comprehend without making things notably easier for complex situations. Adopting this patch wouldn't appal me, but I would rather not. > + AC_CHECK_PROGS(PKG_CONFIG, pkg-config) This deserves an AC_ARG_VAR(PKG_CONFIG) somewhere. On the other hand, AC_ARG_VAR(XML2_CONFIG) is already missing, so perhaps cleaning all that is a separate change. > + if test -n "$PKG_CONFIG" && $PKG_CONFIG --exists libxml-2.0; then > + CPPFLAGS="$CPPFLAGS "`$PKG_CONFIG libxml-2.0 --cflags-only-I` Under pkg-config, we'll get -I options only, but ... > + for pgac_option in `$XML2_CONFIG --cflags`; do > + case $pgac_option in > + -I*|-D*) CPPFLAGS="$CPPFLAGS $pgac_option";; ... we'll convey both -I and -D options from xml2-config. -- Noah Misch EnterpriseDB http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers