From 2218f0215557278cf9b9810960eca019f33fcfe7 Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Thu, 28 Aug 2025 15:27:46 +0200 Subject: [PATCH] package/vde2: fix build w/ gcc-15 Fixes: https://autobuild.buildroot.net/results/8d14173f31922a737c326be75aa24c9f9471342a/ The vde2 source code uses empty argument function pointer prototypes like: typedef ssize_t (* ssize_fun)(); extern ssize_fun vdehist_vderead; In C17 and earlier, such prototypes means unknown number of arguments, whereas with C23 it means no arguments, leading to build failures: libvdehist.c:39:27: error: initialization of 'ssize_fun' {aka 'long int (*)(void)'} from incompatible pointer type 'ssize_t (*)(int, void *, size_t)' {aka 'long int (*)(int, void *, long unsigned int)'} [-Wincompatible-pointer-types] Workaround it using -std=gnu99. Vde2 is provided both as a host and target package, so do this unconditionally for both. Signed-off-by: Peter Korsgaard Signed-off-by: Arnout Vandecappelle --- package/vde2/vde2.mk | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package/vde2/vde2.mk b/package/vde2/vde2.mk index ab4c32143d..7c7fbfca9c 100644 --- a/package/vde2/vde2.mk +++ b/package/vde2/vde2.mk @@ -38,5 +38,10 @@ HOST_VDE2_CONF_OPTS = \ --disable-profile \ --enable-tuntap +# C23 changes meaning of empty argument prototypes like int (*)() +# causing build failures, so force gnu99 +VDE2_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" +HOST_VDE2_CONF_ENV = CFLAGS="$(HOST_CFLAGS) -std=gnu99" + $(eval $(autotools-package)) $(eval $(host-autotools-package))