Examining the libcurl.pc file when I install my own build (curl 8.9.1)
I'm not sure it is correct, and I wonder if there are opinions here.

FYI, I'm on GNU/Linux and I'm building all libraries statically and
only installing the static versions, no shared libs.

As I understand the Libs: variable is shown if you run pkg-config with
--libs, and BOTH Libs: and Libs.private: are shown if you run
pkg-config with --libs --static.

So for example, if I have libfoo.pc:

  Libs: -L${libdir} -lfoo
  Libs.private: -pthread

then I get this result:

  $ pkg-config --libs foo
  -L/my/lib/path -lfoo

  $ pkg-config --libs --static foo
  -L/my/lib/path -lfoo -pthread

The libcurl.pc file seems strange to me because the libraries are all
repeated in Libs.private (and also the prerequisites are duplicated in
Requires.private):

  Requires: zlib,libzstd,openssl
  Requires.private: zlib,libzstd,openssl

  Libs: -L${libdir} -lcurl -lssl -lcrypto -lssl -lcrypto -ldl -pthread -lzstd 
-lzstd -lz  -pthread
  Libs.private: -lssl -lcrypto -lssl -lcrypto -ldl -pthread -lzstd -lzstd -lz 
-pthread

This leads to a lot of duplication when --static is used:

  $ pkg-config --libs --static libcurl
  -L/my/lib/path -lcurl -lssl -lcrypto -lssl -lcrypto -ldl -pthread -lzstd -lz 
-pthread -lssl -lcrypto -lssl -lcrypto -ldl -pthread -lzstd -lz -pthread -lz 
-lzstd -pthread -lssl -lcrypto -ldl -pthread

I mean, in the grand scheme of things duplicating libraries is not a
big deal it just increases the link time a bit.

Is this something to be considered?  Or "don't really care"?

Looking at the .pc.in file I didn't quite follow the uses of the
LIBCURL_NO_SHARED and LIBCURL_LIBS metavariables.
-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to