Re: [PATCH v2] config.mak.dev: disable suggest braces error on old clang versions
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 10, 2022, 18:13 UTC
- Message-ID
- <xmqqo7uj35td.fsf@gitster.g>
- In-Reply-To
- <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>
"Jeff Hostetler via GitGitGadget" <gitgitgadget@gmail.com> writes:
Show 40 quoted lines
> Here is version 2. This version adds the "-Wno-missing-braces" compiler
> flag when we are using an old version of clang -- rather than updating
> the source files to use the "{{0}}" syntax that was expected by older
> versions of clang.
>
> I've expanded the scope to include fixes for Apple's clang 11 and below
> and non-Apple clang 8 and below.
>
> diff --git a/config.mak.dev b/config.mak.dev
> index 4fa19d361b7..981304727c5 100644
> --- a/config.mak.dev
> +++ b/config.mak.dev
> @@ -69,6 +69,31 @@ DEVELOPER_CFLAGS += -Wno-missing-braces
> endif
> endif
>
> +# Old versions of clang complain about initializaing a
> +# struct-within-a-struct using just "{0}" rather than "{{0}}". This
> +# error is considered a false-positive and not worth fixing, because
> +# new clang versions do not, so just disable it.
> +#
> +# The "bug" was fixed in upstream clang 9.
> +#
> +# Complicating this is that versions of clang released by Apple have
> +# their own version numbers (associated with the corresponding version
> +# of XCode) unrelated to the official clang version numbers.
> +#
> +# The bug was fixed in Apple clang 12.
> +#
> +ifneq ($(filter clang1,$(COMPILER_FEATURES)),) # if we are using clang
> +ifeq ($(uname_S),Darwin) # if we are on darwin
> +ifeq ($(filter clang12,$(COMPILER_FEATURES)),) # if version < 12
> +DEVELOPER_CFLAGS += -Wno-missing-braces
> +endif
> +else # not darwin
> +ifeq ($(filter clang9,$(COMPILER_FEATURES)),) # if version < 9
> +DEVELOPER_CFLAGS += -Wno-missing-braces
> +endif
> +endif
> +endifLooks very straight-forward, albeit a tad verbose, and simple to follow. I think this is equivalent to René's original one-liner.
Will queue. Thanks.