Subject: Re: [PATCH v2] config.mak.uname: avoid macOS linker warning on Xcode 16.3+

From: Junio C Hamano <[email-masked]>
Date: Tue, 02 Jun 2026 07:41:59 +0900

"Harald Nordgren via GitGitGadget" <[email-masked]> writes:

> diff --git a/config.mak.uname b/config.mak.uname
> index ce5e7de779..d4d55cb324 100644
> --- a/config.mak.uname
> +++ b/config.mak.uname
> @@ -163,6 +163,12 @@ ifeq ($(uname_S),Darwin)
>  		NEEDS_GOOD_LIBICONV = UnfortunatelyYes
>          endif
>  
> +	# Silence Xcode 16.3+ linker warning about __DATA,__common alignment.
> +	LD_MAJOR_VERSION = $(shell ld -v 2>&1 | sed -n 's/.*PROJECT:ld-\([0-9]*\).*/\1/p')

If LD_MAJOR_VERSION ever ends up being an empty string, then ...

> +        ifeq ($(shell test "$(LD_MAJOR_VERSION)" -ge 1167 && echo 1),1)

... this "test" would see

	test "" -ge 1167

that would result in errors like

	/bin/bash: line 1: test: : integer expected
	dash: 1: test: Illegal number: 

While this won't break the build (the `ifeq` will just evaluate to
false), it can be noisy.

Perhaps

	test -n "$(LD_MAJOR_VERSION)" &&

in front?  We know from your "sed" invocation that we won't see
anything other than an empty string that is not a number, so I do
not think we have to worry about feeding a non-number to the
comparison against 1167 except for the "ah, no match, empty string"
case.

Other than that, looking good.  Thanks.

> +		BASIC_CFLAGS += -fno-common
> +        endif
> +
>  	# The builtin FSMonitor on MacOS builds upon Simple-IPC.  Both require
>  	# Unix domain sockets and PThreads.
>          ifndef NO_PTHREADS
>
> base-commit: c69baaf57ba26cf117c2b6793802877f19738b0d