From: Jonathan Nieder <jrnieder@gmail.com>
To: Remi Pommarel <repk@triplefau.lt>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Brandon Casey <drafnel@gmail.com>, Jeff King <peff@peff.net>
Subject: Re: [PATCH v3 1/1] Makefile: link libcurl before libssl
Date: Mon, 5 Oct 2015 12:41:34 -0700 [thread overview]
Message-ID: <20151005194134.GD11993@google.com> (raw)
In-Reply-To: <1444073043-24618-1-git-send-email-repk@triplefau.lt>
Remi Pommarel wrote:
> For static linking especially library order while linking is important. For
Please be more explicit for the uninitiated: during static linking, the
library that needs symbols comes before the library providing those symbols.
> example, libcurl wants symbols for libssl when building http-push, http-fetch
> and remote-curl. So for these programs libcurl has to be linked before libssl.
Based on experience with NEEDS_CRYPTO_WITH_SSL vs NEEDS_SSL_WITH_CRYPTO,
these kinds of dependencies can be platform-specific. But a little quick
thought reveals that libssl is never going to depend on libcurl and libcurl
always needs libssl. Good.
Based on this dependency, shouldn't CURL_LIBCURL always include -lssl when
statically linking? How does this relate to NEEDS_SSL_WITH_CURL?
> --- a/Makefile
> +++ b/Makefile
> @@ -1029,7 +1029,6 @@ ifdef HAVE_ALLOCA_H
> endif
>
> IMAP_SEND_BUILDDEPS =
> -IMAP_SEND_LDFLAGS = $(OPENSSL_LINK) $(OPENSSL_LIBSSL) $(LIB_4_CRYPTO)
To protect against a value that might leak in from the environment, this
should say
IMAP_SEND_LDFLAGS =
[...]
> @@ -1971,10 +1971,10 @@ git-imap-send$X: imap-send.o $(IMAP_SEND_BUILDDEPS) GIT-LDFLAGS $(GITLIBS)
>
> git-http-fetch$X: http.o http-walker.o http-fetch.o GIT-LDFLAGS $(GITLIBS)
> $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
> - $(LIBS) $(CURL_LIBCURL)
> + $(CURL_LIBCURL) $(LIBS)
What happens in the NEEDS_SSL_WITH_CURL=Yes case?
> git-http-push$X: http.o http-push.o GIT-LDFLAGS $(GITLIBS)
> $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
> - $(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
> + $(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIBS)
Same question.
I guess the general principle is that $(LIBS) should always go at the
end. (That would make sense to me.)
Ideally this would be two patches:
- one putting $(LIBS) at the end everywhere, which is the simple part of the change
- a second doing some appropriate thing to turn on NEEDS_SSL_WITH_CURL when appropriate
or something
Sensible?
Thanks,
Jonathan
next prev parent reply other threads:[~2015-10-05 19:41 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-05 19:24 [PATCH v3 1/1] Makefile: link libcurl before libssl Remi Pommarel
2015-10-05 19:41 ` Jonathan Nieder [this message]
2015-10-05 20:16 ` Remi Pommarel
2015-10-20 20:20 ` Junio C Hamano
2015-10-21 16:44 ` Remi Pommarel
2015-10-21 16:52 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151005194134.GD11993@google.com \
--to=jrnieder@gmail.com \
--cc=drafnel@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=repk@triplefau.lt \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.