diff mbox series

[U-Boot] Makefile: Ensure we build with -std=gnu11

Message ID 1529467051-18964-1-git-send-email-trini@konsulko.com
State Accepted
Commit fa893990e9b53425af5f5059e04a2bffde91ccf9
Delegated to: Tom Rini
Headers show
Series [U-Boot] Makefile: Ensure we build with -std=gnu11 | expand

Commit Message

Tom Rini June 20, 2018, 3:57 a.m. UTC
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.

Signed-off-by: Tom Rini <trini@konsulko.com>
---
 Makefile | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Joakim Tjernlund June 20, 2018, 7:28 a.m. UTC | #1
On Tue, 2018-06-19 at 23:57 -0400, Tom Rini wrote:
> 
> 
> 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
Tom Rini June 20, 2018, 11:30 a.m. UTC | #2
On Wed, Jun 20, 2018 at 07:28:15AM +0000, Joakim Tjernlund wrote:

> On Tue, 2018-06-19 at 23:57 -0400, Tom Rini wrote:
> > 
> > 
> > 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
Tom Rini June 21, 2018, 6:21 p.m. UTC | #3
On Tue, Jun 19, 2018 at 11:57:31PM -0400, Tom Rini wrote:

> 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.
> 
> Signed-off-by: Tom Rini <trini@konsulko.com>

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!
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index fe7bf11970b8..399c5a5b549d 100644
--- a/Makefile
+++ b/Makefile
@@ -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__