kumquat-buildroot/package/zip/zip.mk
Brandon Maier 3326cbd2e5 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 <string.h>. 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 <brandon.maier@collins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
(cherry picked from commit 29c6fe13d3)
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-06-08 09:43:30 +02:00

57 lines
1.7 KiB
Makefile

################################################################################
#
# zip
#
################################################################################
ZIP_VERSION = 3.0
# The version is really 3.0, but the tarball is named zip30.tgz
ZIP_SOURCE = zip$(subst .,,$(ZIP_VERSION)).tgz
ZIP_SITE = ftp://ftp.info-zip.org/pub/infozip/src
ZIP_LICENSE = Info-ZIP
ZIP_LICENSE_FILES = LICENSE
ZIP_CPE_ID_VENDOR = info-zip_project
ifeq ($(BR2_PACKAGE_BZIP2),y)
ZIP_DEPENDENCIES += bzip2
endif
# Infozip's default CFLAGS.
ZIP_CFLAGS = -I. -DUNIX
# Disable the support of 16-bit UIDs/GIDs, the test in unix/configure was
# removed since it can't work for cross-compilation.
ZIP_CFLAGS += -DUIDGID_NOT_16BIT
# infozip already defines _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE when
# necessary, redefining it on the command line causes some warnings.
ZIP_TARGET_CFLAGS = \
$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE,$(TARGET_CFLAGS))
define ZIP_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) \
CFLAGS="$(ZIP_TARGET_CFLAGS) $(ZIP_CFLAGS)" \
CC="$(TARGET_CC) -std=gnu89" AS="$(TARGET_CC) -c" \
-f unix/Makefile generic
endef
define ZIP_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \
prefix=$(TARGET_DIR)/usr
endef
define HOST_ZIP_BUILD_CMDS
$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) \
CFLAGS="$(HOST_CFLAGS) $(ZIP_CFLAGS)" \
CC="$(HOSTCC) -std=gnu89" AS="$(HOSTCC) -c" \
-f unix/Makefile generic
endef
define HOST_ZIP_INSTALL_CMDS
$(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D) -f unix/Makefile install \
prefix=$(HOST_DIR)
endef
$(eval $(generic-package))
$(eval $(host-generic-package))