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

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

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 28, 2014, 19:56 UTC
Message-ID
<xmqqtx9dp6rd.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1398713704-15428-1-git-send-email-dborowitz@google.com>
Dave Borowitz <dborowitz@google.com> writes:
Show 13 quoted lines
> Use this only when CURLDIR is not explicitly specified, to continue
> supporting older builds. Moreover, if CURL_CONFIG is unset or running
> it returns no results (e.g. because it is missing), default to the old
> behavior of blindly setting -lcurl.
>  	ifdef CURLDIR
> +		CURL_LIBCURL=
>  	else
> +		CURL_CONFIG ?= curl-config
> +		ifeq "$(CURL_CONFIG)" ""
> +			CURL_LIBCURL =
> +		else
> +			CURL_LIBCURL := $(shell $(CURL_CONFIG) --libs)
>  		endif

This "ifeq" is redundant and will never set CURL_LIBCURL to empty without running the "else" part, I think. In a Makefile, a variable explicitly set to empty and a variable that is unset are treated the same.

	$ cat >Makefile <<EOF
	CURL_CONFIG ?= curl-config
	ifeq "$(CURL_CONFIG)" ""
		X=Empty
	else
		X=NotEmpty
	endif
	ifdef "$(CURL_CONFIG)"
		Z=Defined
	else
		Z=Undefined
	endif
	all::
		@echo "$(X) $(Z)"
	EOF
	$ make -f Makefile CURL_CONFIG=""
	Empty Undefined

That does not mean the patch will give us a broken behaviour, though. It just means the ifeq/else part will be redundant.

>  	endif
> +
> +	ifeq "$(CURL_LIBCURL)" ""

This will catch the "$(shell $(CURL_CONFIG) --libs) assigned an empty string to CURL_LIBCURL" case, so the result is good.

I haven't checked what it would look like if we turn this into an incremental patch to be applied on top of 'master' (which would give us a place to document better why we do not rely on the presense of curl-config), but if we can do so, that would be more preferable than having to revert the merge of the previous one and then applying these two patches anew.

Thanks.
Show 21 quoted lines
> +		ifdef CURLDIR
> +			# 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
> +		else
> +			CURL_LIBCURL = -lcurl
> +		endif
> +		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
> +		BASIC_CFLAGS += $(shell $(CURL_CONFIG) --cflags)
>  	endif
>  
>  	REMOTE_CURL_PRIMARY = git-remote-http$X
Previous: Dave BorowitzNext: Junio C Hamano
Message 5 of 7 in “Makefile: use curl-config to determine curl flags”
  1. 1/2 Makefile: use curl-config to determine curl flagsDave Borowitz, Apr 28, 2014
  2. 2/2 Makefile: allow static linking against libcurlDave Borowitz, Apr 28, 2014
  3. Jonathan NiederApr 28, 2014
  4. Dave BorowitzApr 28, 2014
  5. Junio C HamanoApr 28, 2014
  6. Junio C HamanoApr 28, 2014
  7. Junio C HamanoApr 28, 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.