From 3326cbd2e528170c1d86d3cbe4c7853467dbfa47 Mon Sep 17 00:00:00 2001 From: Brandon Maier Date: Fri, 10 May 2024 23:55:10 +0000 Subject: [PATCH] package/zip: fix build with GCC 14 Builds with GCC 14 print the following error > zip.h:726:10: error: conflicting types for 'memset'; have 'char *(char *, int, unsigned int)' This is because with GCC 14, Zip incorrectly detects that the memset functions exist. Which enables the ZMEM flag and declares its own version of memset. This is because the ./unix/configure script attempts to compile a C file using 'memset' but it does not include the . This was allowed in gnu89, but in GCC 14 -Werror=implicit-function-declaration is enabled by default[1]. We forcefully set '-std=gnu89' so that Zip will compile everything against gnu89, which suppresses the warning. [1] https://gcc.gnu.org/gcc-14/porting_to.html#warnings-as-errors Signed-off-by: Brandon Maier Signed-off-by: Thomas Petazzoni (cherry picked from commit 29c6fe13d37ab1a3305005b42441a49afe4d1895) Signed-off-by: Peter Korsgaard --- package/zip/zip.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package/zip/zip.mk b/package/zip/zip.mk index 67958a4a66..3aa59e7ba7 100644 --- a/package/zip/zip.mk +++ b/package/zip/zip.mk @@ -31,7 +31,7 @@ ZIP_TARGET_CFLAGS = \ define ZIP_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \ CFLAGS="$(ZIP_TARGET_CFLAGS) $(ZIP_CFLAGS)" \ - AS="$(TARGET_CC) -c" \ + CC="$(TARGET_CC) -std=gnu89" AS="$(TARGET_CC) -c" \ -f unix/Makefile generic endef @@ -43,7 +43,7 @@ endef define HOST_ZIP_BUILD_CMDS $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \ CFLAGS="$(HOST_CFLAGS) $(ZIP_CFLAGS)" \ - AS="$(HOSTCC) -c" \ + CC="$(HOSTCC) -std=gnu89" AS="$(HOSTCC) -c" \ -f unix/Makefile generic endef