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.