wrong gnutls.pc

Vincent Torri vincent.torri at gmail.com
Fri Feb 26 22:10:02 CET 2010


On Fri, Feb 26, 2010 at 7:30 PM, Andreas Metzler <
ametzler at downhill.at.eu.org> wrote:

> On 2010-02-26 Vincent Torri <vincent.torri at gmail.com> wrote:
> > Hey,
> >
> > compiling libcurl on Windows with MinGW leads to undefined symbols. The
> > problem is in a bug in gnutls.pc. Indeed libgcrypt is a required
> dependency
> > (btw, it is not checked in gnutls/lib/configure.ac. I think that it must
> be
> > checked there. The library has a libgcrypt-config to  get cflags and
> libs).
> > Hence, -lgcrypt must appear in the Libs.private field of gnutls.pc
>
> Hello,
>
> This broke somewhere after 2.6.6. 2.6.6 still has
> Libs: -L${libdir} -lgnutls
> Libs.private: -L${exec_prefix}/lib -lgnutls -lgcrypt  -L/usr/lib -ltasn1
>
> but e.g. 2.7.11 is missing -lgcrypt in Libs.private.
>
> I will try to investigate further this weekend.
>
> > * in Libs.private of gnutls.pc.in, @LIBGNUTLS_LIBS@ is added, which
> means,
> > according to its definition, that -lgnutls appears in Libs.private, which
> is
> > useless.
>
> It does not hurt either, pkg-config strips the duplicates.
>

it does not hurt, but it is not clean. I can always hack anything so that it
works. I have no problem with linking with gnutls on windows. modifying
LDFLAGS, hacking libcurl configure stuff, modifying by hand gnutls.pc,
etc... If I send that mail, it's for the correct fix to be done. If you
don't care, no problem. I can leave without the proper fix.

>  * libtasn1 is not checked with pkg-config if it exists (well, i don't see
> anything in gnutls/lib/configure.ac).

 tasn is searched for with AC_LIB_HAVE_LINKFLAGS. See
> ./lib/m4/hooks.m4.
>

ok.

> If it exists, 'libtasn1' must appear
> in the Requires.private field (or Requires field if you support pkg-config
<
> 0.22).

 It does.
>

no it does not. the field *****Requires.private*****, and not Libs.private,
does not appear in the .pc


> > If it does not exists, i think that you link directly against your
> > own libtasn2 code, so @LTLIBTASN1@ should not appear in Libs.private
>
> This seems to work correctly for me, too.


sure, but having libtasn1 in Requires.private instead of having -ltasn1 in
Libs.private is different. pkg-config takes care of the possible
dependencies with the Requires.private field. Look at pkg-config
documentation. By doing what you do, you can broke linking with future
versions of libtasn1 if it has dependencies.

Vincent Torri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/attachments/20100226/2b28564a/attachment.htm>


More information about the Gnutls-devel mailing list