Hi Markus, On Tue, 8 Oct 2024 at 15:42, Markus Mayer <mmayer@xxxxxxxxxxxx> wrote: > > We need to check if some compiler flags are supported as not all > compilers may do so. For instance, "-Wsuggest-attribute=format" is > supported by gcc but not by clang. > > Using a compiler option that is not supported will most likely cause the > build to fail, since we are building with "-Werror" and the compiler will > issue a warning about the unknown option. > > As a result, we only use the option if the compiler understands it. > > Signed-off-by: Markus Mayer <mmayer@xxxxxxxxxxxx> > --- > Makefile | 25 ++++++++++++++++++++++++- > 1 file changed, 24 insertions(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index f1f0ab368cd3..febdca5742c5 100644 > --- a/Makefile > +++ b/Makefile > @@ -3,6 +3,26 @@ > # Device Tree Compiler > # > > +# try-run and cc-option were stolen from the Linux kernel > +TMPOUT = .tmp_$$$$ > +# try-run > +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) > +# Exit code chooses option. "$$TMP" serves as a temporary file and is > +# automatically cleaned up. > +try-run = $(shell set -e; \ > + TMP=$(TMPOUT)/tmp; \ > + mkdir -p $(TMPOUT); \ > + trap "rm -rf $(TMPOUT)" EXIT; \ > + if ($(1)) >/dev/null 2>&1; \ > + then echo "$(2)"; \ > + else echo "$(3)"; \ > + fi) > + > +# cc-option > +# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) > +cc-option = $(call try-run, \ > + $(CC) -Werror $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) > + > # > # Version information will be constructed in this order: > # DTC_VERSION release version as MAJOR.MINOR.PATCH > @@ -18,9 +38,12 @@ CONFIG_LOCALVERSION = > ASSUME_MASK ?= 0 > > CPPFLAGS = -I libfdt -I . -DFDT_ASSUME_MASK=$(ASSUME_MASK) > +# Warnings where we need to check they are supported > +OPT_WARNINGS = $(call cc-option,-Wsuggest-attribute=format) This is fine, but you should be able to use the existing cc-option in U-Boot > +# Regular warnings > WARNINGS = -Wall -Wpointer-arith -Wcast-qual -Wnested-externs -Wsign-compare \ > -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wshadow \ > - -Wsuggest-attribute=format -Wwrite-strings > + -Wwrite-strings $(OPT_WARNINGS) > CFLAGS = -g -Os $(SHAREDLIB_CFLAGS) -Werror $(WARNINGS) $(EXTRA_CFLAGS) > > BISON = bison > -- > 2.46.0 > > Regards, Simon