On Wed, May 07, 2008 at 04:59:57AM +0900, Tomoaki Okayama wrote:
> Hello,
> 
> If /sw/lib/pango-ft219/lib/pkgconfig/xrender.pc exists,
> pkg-config (0.22-3) seems to confuse about the search path
> for --cflags and --libs.
> For example:
> 
> [existing case]
> $ 
> PKG_CONFIG_PATH=/sw/lib/pango-ft219/lib/pkgconfig:/sw/lib/fontconfig2/lib/pkgconfig:/sw/lib/freetype219/lib/pkgconfig
>  pkg-config --cflags gtk+-2.0
> -I/sw/include/pixman-1 -I/usr/X11R6/include 
> -I/sw/lib/pango-ft219/include/pango-1.0 -I/sw/lib/fontconfig2/include 
> -I/sw/lib/freetype219/include/freetype2 -I/sw/lib/freetype219/include 
> -I/sw/include/libpng12 -I/sw/include -I/sw/include/glib-2.0 
> -I/sw/lib/glib-2.0/include -I/sw/include/cairo -I/sw/include/gtk-2.0 
> -I/sw/include/atk-1.0 -I/sw/lib/gtk-2.0/include -I/usr/X11/include
> 
> [non-existing case]
> $ 
> PKG_CONFIG_PATH=/sw/lib/pango-ft219/lib/pkgconfig:/sw/lib/fontconfig2/lib/pkgconfig:/sw/lib/freetype219/lib/pkgconfig
>  pkg-config --cflags gtk+-2.0
> -I/sw/include/pixman-1 -I/sw/lib/pango-ft219/include/pango-1.0 
> -I/sw/lib/fontconfig2/include -I/sw/lib/freetype219/include/freetype2 
> -I/sw/lib/freetype219/include -I/sw/include/libpng12 -I/sw/include 
> -I/sw/include/glib-2.0 -I/sw/lib/glib-2.0/include -I/sw/include/cairo 
> -I/usr/X11R6/include -I/sw/include/gtk-2.0 -I/sw/include/atk-1.0 
> -I/sw/lib/gtk-2.0/include -I/usr/X11/include
> 
> 
> In the existing case, -I/usr/X11R6/include is before 
> -I/sw/lib/freetype219/include/freetype2 -I/sw/include/libpng12 -I/sw/include,
> and then gcc finds freetype.h, png.h, or other headers in
> /usr/X11R6/include first. That's not good.
> 
> I recommend removing xrender.pc from pango1-xft2-ft219,
> at least in 10.5.

Interestingly, fink's package that wanted xrender.pc (cairo) is
already hacked to use the plain flags instead of the .pc. But anyway,
the situation is that every foo.pc publishes what foo needs, and then
pkg-config tries to put it all together. But there is no standard
about *how* to put it all together. It does remove /usr/include and
/usr/lib, since they are automatically searched and passing them via
-I and -L doesn't really work as expected anyway. So everything else
masks those. Now we have X11 and fink and other user-specified
locations.

For sanity, I think fink should always take precedence over X11 in .pc
searching (and indeed we've seen problems when that is *not* the
case). Likewise, fink's -I and -L paths should take precedence over
X11. And then anything *else* (as a result of non-fink stuff passed
via PKG_CONFIG_PATH) should take precedence over fink.

Please experiment with the hacked pkgconfig in my exp/, which re-sorts
its flags to put all apple and x11 -I and -L after fink's -I and -L.

dan

-- 
Daniel Macks
[EMAIL PROTECTED]
http://www.netspace.org/~dmacks


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
http://news.gmane.org/gmane.os.apple.fink.devel

Reply via email to