[gnutls-dev] pkg-config file for libgnutls

Simon Josefsson simon at josefsson.org
Tue Feb 20 00:14:06 CET 2007


Andreas Metzler <ametzler at downhill.at.eu.org> writes:

>> Which leads to, on my Debian box:
>
>> jas at mocca:~$ pkg-config --libs gtk+-2.0
>> -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lfontconfig -lXext -lXrender -lXinerama -lXi -lXrandr -lXcursor -lXfixes -lpango-1.0 -lcairo -lX11 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
>> jas at mocca:~$
>
>> Note that even '-lm' and '-lX11' is there.  IIRC, the gtk people
>> invented pkg-config, so they should hopefully use the best practice.
>
> Afaik that is because
> a) gtk *does* expose and require the atk
> (/usr/include/gtk-2.0/gtk/gtkaccessible.h) and cairo
> (/usr/include/gtk-2.0/gdk/gdkcairo.h) APIs/headers

I see your point, but I'm not sure it holds for gtk.  Does gtk, or one
of its dependencies, also expose the -lm, -lX11, -lpango etc APIs?
The 'pkg-config --libs gtk+-2.0' output seem to contain all libraries
use by any gtk application.  That wouldn't be necessary, since both
libgtk and libgdk dynamically links with -lX11, -lpango etc.

Lacking any clear and referencable documentation to answer this, I
think mimicking the GTK people's pkg-config behaviour is the best we
can do.  They wrote pkg-config after all.  That means adding the
'Requires:'.

> and
> b) because Requires.private is currently rather useless
> http://bugs.debian.org/390132 forcing GNOME to use Requires instead.

Ah, maybe fixing that bug is the real solution.  Then gnutls could
have:

Requires.private: libtasn1

and no 'Requires:'.

Maybe we could make this change now, reverting to the old behaviour,
and be prepared for when 'Requires.private' works fine?  As far as I
understand, it does work today, except recursively.

> Yes, when building pkg-config itself it queries libtool to check
> whether indirect dependencies should be reported on the arch it is
> building for. The result is then hardcoded into the pkg-config binary.

Yes, ok, so I now think it should be 'Requires.private: libtasn1'.

>> Anyway, I consider pkg-config a poor design since it doesn't use the
>> test-for-a-feature-approach.
> [...]
>
> I do not disagree. ;-) It is a little bit better still than using a
> separate libfoo-config script. ;-)

Yes.  Although it does require users to install yet another package
(pkg-config)...  to me, that almost, but only almost, cancels out the
advantage.

/Simon




More information about the Gnutls-devel mailing list