tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Requirements for specifying dependencies on libraries

On Sun, Mar 16, 2014 at 04:07:18PM +0100, Alistair Crooks wrote:
> Take a look at othersrc/external/bsd/bsd-pkg-config for a rewritten
> pkg-config without the perl bootstrapping worries.
>       revision
>       date: 2012-08-13 23:45:30 -0700;  author: agc;  state: Exp;  lines: +0 
> -0;
>       Dust off my old bsd-pkg-config script and commit it to othersrc.
>       Seems to do most of the things that other pkg-config scripts do, albeit
>       in 150 grungy lines of shell, so I must be missing something.

Indeed, you are missing something :)

The main difficulty in pkg-config is recursive expansion of variable
values *and trimming of duplicate stuff*.

Without compression of duplicates:
pkg-config --libs gtk+-3.0 
-L/usr/local/lib -lgtk-3 -L/usr/local/lib -lgdk-3 -L/usr/local/lib 
-lpangocairo-1.0 -L/usr/local/lib -lpangoft2-1.0 -L/usr/local/lib -lpango-1.0 
-lm -L/usr/X11R6/lib -lfreetype -lz -L/usr/X11R6/lib -lfontconfig 
-L/usr/local/lib -latk-1.0 -L/usr/local/lib -lcairo-gobject -L/usr/local/lib 
-Wl,-rpath-link,/usr/X11R6/lib -lcairo -L/usr/local/lib -lgdk_pixbuf-2.0 
-L/usr/local/lib -lgio-2.0 -L/usr/local/lib -lgobject-2.0 -L/usr/local/lib 
-lglib-2.0 -lintl -L/usr/local/lib -lgtk-3 -L/usr/local/lib -lgdk-3 
-L/usr/local/lib -lpangocairo-1.0 -L/usr/local/lib -lpangoft2-1.0 
-L/usr/local/lib -lpango-1.0 -lm -L/usr/X11R6/lib -lfreetype -lz 
-L/usr/X11R6/lib -lfontconfig -L/usr/local/lib -latk-1.0 -L/usr/local/lib 
-lcairo-gobject -L/usr/local/lib -Wl,-rpath-link,/usr/X11R6/lib -lcairo 
-L/usr/local/lib -lgdk_pixbuf-2.0 -L/usr/local/lib -lgio-2.0 -L/usr/local/lib 
-lgobject-2.0 -L/usr/local/lib -lglib-2.0 -lintl

With compression:
pkg-config --libs gtk+-3.0   
-L/usr/local/lib -L/usr/X11R6/lib -Wl,-rpath-link,/usr/X11R6/lib -lgtk-3 
-lgdk-3 -lpangocairo-1.0 -lpangoft2-1.0 -lpango-1.0 -lm -lfreetype -lz 
-lfontconfig -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 
-lgobject-2.0 -lglib-2.0 -lintl

./bsd-pkg-config.txt --prefix /usr/local --libs gtk+-3.0
 -L/usr/local/lib -lgtk-3 

looks like you neither have expansion of dependencies, nor compression...

cat gtk+-3.0.pc:


Name: GTK+
Description: GTK+ Graphical UI Library
Version: 3.10.7
Requires: gdk-3.0 atk cairo cairo-gobject gdk-pixbuf-2.0 gio-2.0
Requires.private: atk atk-bridge-2.0 pangoft2 gio-unix-2.0
Libs: -L${libdir} -lgtk-3
Cflags: -I${includedir}/gtk-3.0

Home | Main Index | Thread Index | Old Index