Re: [PATCH 0/2] Fix syntax errors under clang 11.0.0 on MacOS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



René Scharfe <l.s.r@xxxxxx> writes:

> Perhaps like this?  (No sign-off because I'm not comfortable with that
> make function syntax, but feel free to steal salvageable parts.)
>
> diff --git a/config.mak.dev b/config.mak.dev
> index 4fa19d361b..4d59c9044f 100644
> --- a/config.mak.dev
> +++ b/config.mak.dev
> @@ -69,6 +69,14 @@ DEVELOPER_CFLAGS += -Wno-missing-braces
>  endif
>  endif
>
> +# LLVM clang older than 9 and Apple clang older than 12 complain
> +# about initializing a struct-within-a-struct using just "{ 0 }"
> +ifneq ($(filter clang1,$(COMPILER_FEATURES)),)

If it is any version of clang, detect-compiler script should give us
at last "clang1" in $(COMPILER_FEATURES), and filtering the latter
with "clang1" should become "clang1" which should be neq.  We fail
the ifneq if the compiler is not llvm and do not come into this part.

> +ifeq ($(filter $(if $(filter Darwin,$(uname_S)),clang12,clang9),$(COMPILER_FEATURES)),)

On Darwin, $(uname_S) is Darwin and filtering the $(uname_S) with
Darwin will leave Darwin as the "condition" parameter to $(if).
So $(if) evaluates to clang12 on Darwin and clang9 everywhere else.
If $(COMPILER_FEATURES) lacks that cut-off version, that means we
are using clang older than 12 (on macOS) or 9 (everywhere else) and
we come inside this block ...

> +DEVELOPER_CFLAGS += -Wno-missing-braces

... which adds this workaround.

> +endif
> +endif

OK. That is dense, but sounds correct.





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux