On 2020-08-10 13:14, Ken Brown via Cygwin wrote: > On 8/10/2020 1:33 PM, Brian Inglis wrote: >> On 2020-08-10 08:52, Ken Brown via Cygwin wrote: >>> On 8/9/2020 5:48 PM, Brian Inglis wrote: >>>> On 2020-08-09 12:28, Adam Dinwoodie wrote: >>>>> On Fri, 24 Jul 2020 at 13:56, Adam Dinwoodie wrote: >>>>>> In the failing case, the `/configure` stage includes the following >>>>>> text: `configure: Setting CURL_LDFLAGS to '-lcurl -lnghttp2 -lidn2 >>>>>> -lssh -lpsl -lssl -lcrypto -lldap -llber -lbrotlidec -lbrotlidec >>>>>> -lz'`; in the working case using -7.66.0-1, the corresponding line is >>>>>> just `configure: Setting CURL_LDFLAGS to '-lcurl'`. >>> [...] >>>> Meanwhile, that info likely comes from: >>>> >>>> $ tail -vn15 /lib/pkgconfig/libcurl.pc >>>> ==> /lib/pkgconfig/libcurl.pc <== >>>> # >>>> prefix=/usr >>>> exec_prefix=/usr >>>> libdir=${exec_prefix}/lib >>>> includedir=${prefix}/include >>>> supported_protocols="DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS LDAP LDAPS >>>> POP3 POP3S RTSP SCP SFTP SMB SMBS SMTP SMTPS TELNET TFTP" >>>> supported_features="SSL IPv6 UnixSockets libz brotli AsynchDNS IDN PSL NTLM >>>> NTLM_WB TLS-SRP HTTP2 HTTPS-proxy" >>>> >>>> Name: libcurl >>>> URL: https://curl.haxx.se/ >>>> Description: Library to transfer files with ftp, http, etc. >>>> Version: 7.71.1 >>>> Libs: -L${libdir} -lcurl >>>> Libs.private: -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber >>>> -lbrotlidec -lbrotlidec -lz >>>> Cflags: -I${includedir} >>>> >>>> it looks like your git build should be using Libs for dynamic builds and adding >>>> Libs.private for static builds >> >>> If you look at configure.ac in the git sources, you'll see that it uses >>> curl-config, not pkg-config.  The former reports: >>> >>> $ curl-config --libs >>> -lcurl -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber -lbrotlidec >>> -lbrotlidec -lz >>> >>> Yaakov's build of earlier versions of curl used a patch 7.33.0-libdeps.patch to >>> prevent the unnecessary libs from being listed.  He even had a comment at the >>> beginning of the patch, explaining the reason for it: "These are needed only for >>> static linking, but we build with --disable-static". >> >> I try to avoid looking at autotools plumbing if I can possibly avoid it! ;^> >> Someone cleaned up the approach used, as the patch did not apply and was dropped. > > My point is that the patch shouldn't have been dropped.  It should have been > modified to apply to the updated sources.  (I've done this.  See the attached.) > As Yaakov wrote, the patch is needed to prevent 'curl-config --libs' from > including libs that are only needed for static linking. > > With the modified patch applied, curl-config gives the expected result: > > $ curl-config --libs > -lcurl > >> If you look at my later post, cygport git build and tests worked for me with no >> problems other than at first missing some package build dependencies > > Those were not really build dependencies.  They only appeared to be needed > because 'curl-config --libs' erroneously included libs that are only needed for > static linking. Your patch seems to reproduce exactly what is currently distributed in the libcurl-devel package: $ tail -n7 /lib/pkgconfig/libcurl.pc Name: libcurl URL: https://curl.haxx.se/ Description: Library to transfer files with ftp, http, etc. Version: 7.71.1 Libs: -L${libdir} -lcurl Libs.private: -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber -lbrotlidec -lbrotlidec -lz Cflags: -I${includedir} and from what I can see, picked up and used in my vanilla cygport git build from the vanilla distributed src package: $ for exe in *.exe */*.exe; do ldd $exe | fgrep -q cygcurl && cygcheck ./$exe && echo; done > ~/git-curl.log [see attached] Perhaps I am misunderstanding: I was addressing the OP build issue; are you perhaps concerned solely with the correct operation of curl-config? In that case, it looks to me as if the generated curl-config --libs statements: if test "Xyes" = "Xno" -o "Xyes" = "Xyes"; then echo ${CURLLIBDIR}-lcurl -lnghttp2 -lidn2 -lssh -lpsl -lssl -lcrypto -lldap -llber -lbrotlidec -lbrotlidec -lz based on curl-config.in: if test "X@ENABLE_SHARED@" = "Xno" -o "X@REQUIRE_LIB_DEPS@" = "Xyes"; then echo ${CURLLIBDIR}-lcurl @LIBCURL_LIBS@ REQUIRE_LIB_DEPS should be no, derived from configure.ac: if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno" then REQUIRE_LIB_DEPS=no else REQUIRE_LIB_DEPS=yes fi AC_SUBST(REQUIRE_LIB_DEPS) AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes) but for Cygwin link_all_deplibs remains defaulted to unknown, so either that variable should be set in configure, or that condition should perhaps be changed to: if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" != "Xyes" with appropriate bug reports and changes to be made upstream if possible. If you can provide any more insight on the autotools generation of curl-config, I can add that to the upstream bug report. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in IEC units and prefixes, physical quantities in SI.]