[PATCH] tools: Stop re-defining -std= when building tools

While we intentionally set -std=gnu11 for building host tools, and have for quite some time, we never dropped -std=gnu99 from tools/Makefile. This resulted in passing -std=gnu11 ... -std=gnu99 when building, and gnu99 would win. This in turn would result now in warnings such as: tools/mkeficapsule.c:25:15: warning: redefinition of typedef 'u32' is a C11 feature [-Wtypedef-redefinition] typedef __u32 u32; ^
Signed-off-by: Tom Rini trini@konsulko.com --- tools/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile index 999fd4653166..b45219e2c30c 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -295,8 +295,7 @@ HOST_EXTRACFLAGS += -include $(srctree)/include/compiler.h \ -I$(srctree)/tools \ -DUSE_HOSTCC \ -D__KERNEL_STRICT_NAMES \ - -D_GNU_SOURCE \ - -std=gnu99 + -D_GNU_SOURCE
__build: $(LOGO-y)

On Mon, Oct 11, 2021 at 3:23 AM Tom Rini trini@konsulko.com wrote:
While we intentionally set -std=gnu11 for building host tools, and have for quite some time, we never dropped -std=gnu99 from tools/Makefile. This resulted in passing -std=gnu11 ... -std=gnu99 when building, and gnu99 would win. This in turn would result now in warnings such as: tools/mkeficapsule.c:25:15: warning: redefinition of typedef 'u32' is a C11 feature [-Wtypedef-redefinition] typedef __u32 u32; ^
Signed-off-by: Tom Rini trini@konsulko.com
tools/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile index 999fd4653166..b45219e2c30c 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -295,8 +295,7 @@ HOST_EXTRACFLAGS += -include $(srctree)/include/compiler.h \ -I$(srctree)/tools \ -DUSE_HOSTCC \ -D__KERNEL_STRICT_NAMES \
-D_GNU_SOURCE \
-std=gnu99
-D_GNU_SOURCE
It looks like std=gnu11 is only added for Linux host.
KBUILD_HOSTCFLAGS += $(CSTD_FLAG)
Should we still keep it for other hosts?
Regards, Bin

On Mon, Oct 11, 2021 at 11:21:49AM +0800, Bin Meng wrote:
On Mon, Oct 11, 2021 at 3:23 AM Tom Rini trini@konsulko.com wrote:
While we intentionally set -std=gnu11 for building host tools, and have for quite some time, we never dropped -std=gnu99 from tools/Makefile. This resulted in passing -std=gnu11 ... -std=gnu99 when building, and gnu99 would win. This in turn would result now in warnings such as: tools/mkeficapsule.c:25:15: warning: redefinition of typedef 'u32' is a C11 feature [-Wtypedef-redefinition] typedef __u32 u32; ^
Signed-off-by: Tom Rini trini@konsulko.com
tools/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile index 999fd4653166..b45219e2c30c 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -295,8 +295,7 @@ HOST_EXTRACFLAGS += -include $(srctree)/include/compiler.h \ -I$(srctree)/tools \ -DUSE_HOSTCC \ -D__KERNEL_STRICT_NAMES \
-D_GNU_SOURCE \
-std=gnu99
-D_GNU_SOURCE
It looks like std=gnu11 is only added for Linux host.
KBUILD_HOSTCFLAGS += $(CSTD_FLAG)
Should we still keep it for other hosts?
Good question. Looking at the Linux kernel, we're of course vastly diverged again at this point, but it always passes -std=gnu89 (because hey, we demand a newer minimum than the kernel) unless it's a tool/test that spells out something else. Given that Azure builds macOS and cygwin for us, I'll see what happens when we tell everyone to use -std=gnu11 and report back.

On Mon, Oct 11, 2021 at 08:44:09AM -0400, Tom Rini wrote:
On Mon, Oct 11, 2021 at 11:21:49AM +0800, Bin Meng wrote:
On Mon, Oct 11, 2021 at 3:23 AM Tom Rini trini@konsulko.com wrote:
While we intentionally set -std=gnu11 for building host tools, and have for quite some time, we never dropped -std=gnu99 from tools/Makefile. This resulted in passing -std=gnu11 ... -std=gnu99 when building, and gnu99 would win. This in turn would result now in warnings such as: tools/mkeficapsule.c:25:15: warning: redefinition of typedef 'u32' is a C11 feature [-Wtypedef-redefinition] typedef __u32 u32; ^
Signed-off-by: Tom Rini trini@konsulko.com
tools/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/tools/Makefile b/tools/Makefile index 999fd4653166..b45219e2c30c 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -295,8 +295,7 @@ HOST_EXTRACFLAGS += -include $(srctree)/include/compiler.h \ -I$(srctree)/tools \ -DUSE_HOSTCC \ -D__KERNEL_STRICT_NAMES \
-D_GNU_SOURCE \
-std=gnu99
-D_GNU_SOURCE
It looks like std=gnu11 is only added for Linux host.
KBUILD_HOSTCFLAGS += $(CSTD_FLAG)
Should we still keep it for other hosts?
Good question. Looking at the Linux kernel, we're of course vastly diverged again at this point, but it always passes -std=gnu89 (because hey, we demand a newer minimum than the kernel) unless it's a tool/test that spells out something else. Given that Azure builds macOS and cygwin for us, I'll see what happens when we tell everyone to use -std=gnu11 and report back.
The build completed: https://dev.azure.com/u-boot/u-boot/_build/results?buildId=3024&view=res... and the interesting parts are: https://dev.azure.com/u-boot/u-boot/_build/results?buildId=3024&view=log... https://dev.azure.com/u-boot/u-boot/_build/results?buildId=3024&view=log...
In sum, we can use -std=gnu11 everywhere. There's warnings on these hosts, but that's been true before this change: https://dev.azure.com/u-boot/u-boot/_build/results?buildId=2991&view=res...
Posting v2 in a moment.
participants (2)
-
Bin Meng
-
Tom Rini