Skip to contentSkip to conversation

Makefile: Ensure we build with -std=gnu11

PATCH New Tom Rini 2 participants 4 messages Jun 20, 2018 – Jun 21, 2018 Kbuild

lore
Share & tools
lore

Tom Rini

author
#0 lore raw

PATCH 1/1 Makefile: Ensure we build with -std=gnu11

With the move to using at least gcc-6 for many targets we now have C code that requires the GNU11 C standard to be used in all cases.

---
 Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
Makefile +3 -2
index fe7bf11970b8..399c5a5b549d 100644
@@ -263,8 +263,9 @@ HOSTCXXFLAGS = -O2
 # Some Linux distributions (including RHEL7, SLES13, Debian 8) still
 # have older compilers as their default, so we make it explicit for
 # these that our host tools are GNU11 (i.e. C11 w/ GNU extensions).
+CSTD_FLAG := -std=gnu11
 ifeq ($(HOSTOS),linux)
-HOSTCFLAGS += --std=gnu11
+HOSTCFLAGS += $(CSTD_FLAG)
 endif
 
 ifeq ($(HOSTOS),cygwin)
@@ -370,7 +371,7 @@ KBUILD_CPPFLAGS := -D__KERNEL__ -D__UBOOT__
 
 KBUILD_CFLAGS   := -Wall -Wstrict-prototypes \
 		   -Wno-format-security \
-		   -fno-builtin -ffreestanding
+		   -fno-builtin -ffreestanding $(CSTD_FLAG)
 KBUILD_CFLAGS	+= -fshort-wchar
 KBUILD_AFLAGS   := -D__ASSEMBLY__
 
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 Makefile: Ensure we build with -std=gnu11

Quoted 4 lines · Tom Rini

With the move to using at least gcc-6 for many targets we now have C code that requires the GNU11 C standard to be used in all cases.

Requiring gcc-6 is a bit much I think, there are lots of cross gcc's out there that is older. I don't think even the kernel needs gcc-6

Jocke

author
#2 lore raw

PATCH 1/1 Makefile: Ensure we build with -std=gnu11

Quoted 8 lines · Joakim Tjernlund
Quoted 4 lines · Tom Rini

With the move to using at least gcc-6 for many targets we now have C code that requires the GNU11 C standard to be used in all cases.

Requiring gcc-6 is a bit much I think, there are lots of cross gcc's out there that is older. I don't think even the kernel needs gcc-6

We've required gcc-6 for ARM since v2018.01, and we were warning about that for a while longer than that, due to toolchain issues.

That said, my commit message is clearly not clear enough. We don't require gcc-6 for everyone, we require support for -std=gnu11, and that goes back a long ways. It's just that since some platforms require gcc-6 we've started having (and this is good, the code is cleaner!) some C-11'isms sneak into the code. For example, sandbox now fails to compile on older hosts due to a for (int i = 0; ...) in cmd/iotrace.c

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180620/eda026ab/attachment.sig>
author
#3 lore raw

PATCH 1/1 Makefile: Ensure we build with -std=gnu11

In reply to Tom Rini
Quoted 4 lines · Tom Rini

With the move to using at least gcc-6 for many targets we now have C code that requires the GNU11 C standard to be used in all cases.

With a much re-worded to be clearer than gcc-6 is not required but that C11 (or rather, GNU11) is used, applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180621/b562f012/attachment.sig>