package/am33x-cm3: fix build with gcc >= 15

gcc 15 defaults to the C23 standard, where bool, true and false are
keywords. The am33x-cm3 code base defines them in its own stddef.h,
so the build fails with:

src/include/stddef.h:18:15: error: 'bool' cannot be defined via 'typedef'
   18 | typedef _Bool bool;
      |               ^~~~
src/include/stddef.h:19:8: error: cannot use keyword 'false' as enumeration constant
   19 | enum { false, true };
      |        ^~~~~

The upstream project has not received any commit since 2018 and none
of its branches fix this issue, so rather than carrying a patch that
cannot be submitted to an active upstream, force the GNU C11 standard
in the .mk file.

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Dario Binacchi
2026-10-14 09:37:42 +02:00
committed by Peter Korsgaard
parent ad1d1c6dbc
commit 874aba9eba

View File

@@ -13,8 +13,10 @@ AM33X_CM3_LICENSE_FILES = License.txt
# The build command below will use the standard cross-compiler (normally
# build for Cortex-A8, to build the FW for the Cortex-M3.
# The code base predates C23 and defines its own bool/true/false, so
# force an older C standard to build with gcc >= 15.
define AM33X_CM3_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all
$(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC) -std=gnu11" CROSS_COMPILE="$(TARGET_CROSS)" -C $(@D) all
endef
define AM33X_CM3_INSTALL_TARGET_CMDS