git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 1/2] Makefile: use curl-config to determine curl flags

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 14, 2014, 20:22 UTC
Message-ID
<xmqqioqboe50.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1397344502-23459-1-git-send-email-dborowitz@google.com>
Dave Borowitz <dborowitz@google.com> writes:
Show 11 quoted lines
> curl-config should always be installed alongside a curl distribution,
> and its purpose is to provide flags for building against libcurl, so
> use it instead of guessing flags and dependent libraries.
>
> Allow overriding CURL_CONFIG to a custom path to curl-config, to
> compile against a curl installation other than the first in PATH.
>
> Use this only when CURLDIR is not explicitly specified, to continue
> supporting older builds.
>
> Signed-off-by: Dave Borowitz <dborowitz@google.com>

Sounds logically the right thing to do. Was there a particular platform that needed this (i.e. cannot be made to work with the existing CURLDIR and "guessing flags and dependeent libraries") that may be worth mentioning in the log message?

Show 69 quoted lines
> ---
>  Makefile | 35 +++++++++++++++++++++++------------
>  1 file changed, 23 insertions(+), 12 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 2128ce3..d6330bc 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -34,8 +34,12 @@ all::
>  # git-http-push are not built, and you cannot use http:// and https://
>  # transports (neither smart nor dumb).
>  #
> +# Define CURL_CONFIG to the path to a curl-config binary other than the
> +# default 'curl-config'.
> +#
>  # Define CURLDIR=/foo/bar if your curl header and library files are in
> -# /foo/bar/include and /foo/bar/lib directories.
> +# /foo/bar/include and /foo/bar/lib directories.  This overrides CURL_CONFIG,
> +# but is less robust.
>  #
>  # Define NO_EXPAT if you do not have expat installed.  git-http-push is
>  # not built, and you cannot push using http:// and https:// transports (dumb).
> @@ -143,9 +147,11 @@ all::
>  #
>  # Define NEEDS_SSL_WITH_CRYPTO if you need -lssl when using -lcrypto (Darwin).
>  #
> -# Define NEEDS_SSL_WITH_CURL if you need -lssl with -lcurl (Minix).
> +# Define NEEDS_SSL_WITH_CURL if you need -lssl with -lcurl (Minix).  Only used
> +# if CURLDIR is set.
>  #
> -# Define NEEDS_IDN_WITH_CURL if you need -lidn when using -lcurl (Minix).
> +# Define NEEDS_IDN_WITH_CURL if you need -lidn when using -lcurl (Minix).  Only
> +# used if CURLDIR is set.
>  #
>  # Define NEEDS_LIBICONV if linking with libc is not enough (Darwin).
>  #
> @@ -1121,18 +1127,23 @@ else
>  		# Try "-Wl,-rpath=$(CURLDIR)/$(lib)" in such a case.
>  		BASIC_CFLAGS += -I$(CURLDIR)/include
>  		CURL_LIBCURL = -L$(CURLDIR)/$(lib) $(CC_LD_DYNPATH)$(CURLDIR)/$(lib) -lcurl
> +		ifdef NEEDS_SSL_WITH_CURL
> +			CURL_LIBCURL += -lssl
> +			ifdef NEEDS_CRYPTO_WITH_SSL
> +				CURL_LIBCURL += -lcrypto
> +			endif
> +		endif
> +		ifdef NEEDS_IDN_WITH_CURL
> +			CURL_LIBCURL += -lidn
> +		endif
>  	else
> -		CURL_LIBCURL = -lcurl
> -	endif
> -	ifdef NEEDS_SSL_WITH_CURL
> -		CURL_LIBCURL += -lssl
> -		ifdef NEEDS_CRYPTO_WITH_SSL
> -			CURL_LIBCURL += -lcrypto
> +		CURL_CONFIG ?= curl-config
> +		BASIC_CFLAGS += $(shell $(CURL_CONFIG) --cflags)
> +		CURL_LIBCURL = $(shell $(CURL_CONFIG) --libs)
> +		ifeq "$(CURL_LIBCURL)" ""
> +			$(error curl not detected; try setting CURLDIR)
>  		endif
>  	endif
> -	ifdef NEEDS_IDN_WITH_CURL
> -		CURL_LIBCURL += -lidn
> -	endif
>  
>  	REMOTE_CURL_PRIMARY = git-remote-http$X
>  	REMOTE_CURL_ALIASES = git-remote-https$X git-remote-ftp$X git-remote-ftps$X
Previous: Dave BorowitzNext: Dave Borowitz
Message 3 of 5 in “Makefile: use curl-config to determine curl flags”
  1. 1/2 Makefile: use curl-config to determine curl flagsDave Borowitz, Apr 12, 2014
  2. 2/2 Makefile: allow static linking against libcurlDave Borowitz, Apr 12, 2014
  3. Junio C HamanoApr 14, 2014
  4. Dave BorowitzApr 15, 2014
  5. Junio C HamanoApr 15, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.