zlib: switch to a virtual package

The existing zlib package is renamed to libzlib, and zlib is turned
into a virtual package. This is done in preparation to the
introduction of zlib-ng as an alternative implementation.

Signed-off-by: Stefan Fröberg <stefan.froberg@petroprogram.com>
[Thomas: define BR2_PACKAGE_PROVIDES_HOST_ZLIB as suggested by Yann
E. Morin.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2018.02.x
Stefan Fröberg 2017-11-29 23:17:13 +02:00 committed by Thomas Petazzoni
parent 287775d241
commit eb1a657880
4 changed files with 110 additions and 71 deletions

View File

@ -0,0 +1,78 @@
################################################################################
#
# libzlib
#
################################################################################
LIBZLIB_VERSION = 1.2.11
LIBZLIB_SOURCE = zlib-$(LIBZLIB_VERSION).tar.xz
LIBZLIB_SITE = http://www.zlib.net
LIBZLIB_LICENSE = Zlib
LIBZLIB_LICENSE_FILES = README
LIBZLIB_INSTALL_STAGING = YES
LIBZLIB_PROVIDES = zlib
# It is not possible to build only a shared version of zlib, so we build both
# shared and static, unless we only want the static libs, and we eventually
# selectively remove what we do not want
ifeq ($(BR2_STATIC_LIBS),y)
LIBZLIB_PIC =
LIBZLIB_SHARED = --static
else
LIBZLIB_PIC = -fPIC
LIBZLIB_SHARED = --shared
endif
define LIBZLIB_CONFIGURE_CMDS
(cd $(@D); rm -rf config.cache; \
$(TARGET_CONFIGURE_ARGS) \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS) $(LIBZLIB_PIC)" \
./configure \
$(LIBZLIB_SHARED) \
--prefix=/usr \
)
endef
define HOST_LIBZLIB_CONFIGURE_CMDS
(cd $(@D); rm -rf config.cache; \
$(HOST_CONFIGURE_ARGS) \
$(HOST_CONFIGURE_OPTS) \
./configure \
--prefix="$(HOST_DIR)" \
--sysconfdir="$(HOST_DIR)/etc" \
)
endef
define LIBZLIB_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)
endef
define HOST_LIBZLIB_BUILD_CMDS
$(HOST_MAKE_ENV) $(MAKE1) -C $(@D)
endef
define LIBZLIB_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install
endef
define LIBZLIB_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) LDCONFIG=true install
endef
# We don't care removing the .a from target, since it not used at link
# time to build other packages, and it is anyway removed later before
# assembling the filesystem images anyway.
ifeq ($(BR2_SHARED_LIBS),y)
define LIBZLIB_RM_STATIC_STAGING
rm -f $(STAGING_DIR)/usr/lib/libz.a
endef
LIBZLIB_POST_INSTALL_STAGING_HOOKS += LIBZLIB_RM_STATIC_STAGING
endif
define HOST_LIBZLIB_INSTALL_CMDS
$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) LDCONFIG=true install
endef
$(eval $(generic-package))
$(eval $(host-generic-package))

View File

@ -1,7 +1,37 @@
config BR2_PACKAGE_ZLIB
bool "zlib support"
help
Select the desired Zlib library provider.
if BR2_PACKAGE_ZLIB
choice
prompt "zlib variant"
default BR2_PACKAGE_LIBZLIB
help
Select the desired Zlib library provider.
config BR2_PACKAGE_LIBZLIB
bool "zlib"
select BR2_PACKAGE_HAS_ZLIB
help
Standard (de)compression library. Used by things like
gzip and libpng.
http://www.zlib.net
endchoice
config BR2_PACKAGE_HAS_ZLIB
bool
config BR2_PACKAGE_PROVIDES_ZLIB
string
default "libzlib" if BR2_PACKAGE_LIBZLIB
endif
# ensure libzlib is used for the host variant
config BR2_PACKAGE_PROVIDES_HOST_ZLIB
string
default "host-libzlib"

View File

@ -4,74 +4,5 @@
#
################################################################################
ZLIB_VERSION = 1.2.11
ZLIB_SOURCE = zlib-$(ZLIB_VERSION).tar.xz
ZLIB_SITE = http://www.zlib.net
ZLIB_LICENSE = Zlib
ZLIB_LICENSE_FILES = README
ZLIB_INSTALL_STAGING = YES
# It is not possible to build only a shared version of zlib, so we build both
# shared and static, unless we only want the static libs, and we eventually
# selectively remove what we do not want
ifeq ($(BR2_STATIC_LIBS),y)
ZLIB_PIC =
ZLIB_SHARED = --static
else
ZLIB_PIC = -fPIC
ZLIB_SHARED = --shared
endif
define ZLIB_CONFIGURE_CMDS
(cd $(@D); rm -rf config.cache; \
$(TARGET_CONFIGURE_ARGS) \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS) $(ZLIB_PIC)" \
./configure \
$(ZLIB_SHARED) \
--prefix=/usr \
)
endef
define HOST_ZLIB_CONFIGURE_CMDS
(cd $(@D); rm -rf config.cache; \
$(HOST_CONFIGURE_ARGS) \
$(HOST_CONFIGURE_OPTS) \
./configure \
--prefix="$(HOST_DIR)" \
--sysconfdir="$(HOST_DIR)/etc" \
)
endef
define ZLIB_BUILD_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D)
endef
define HOST_ZLIB_BUILD_CMDS
$(HOST_MAKE_ENV) $(MAKE1) -C $(@D)
endef
define ZLIB_INSTALL_STAGING_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(STAGING_DIR) LDCONFIG=true install
endef
define ZLIB_INSTALL_TARGET_CMDS
$(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) DESTDIR=$(TARGET_DIR) LDCONFIG=true install
endef
# We don't care removing the .a from target, since it not used at link
# time to build other packages, and it is anyway removed later before
# assembling the filesystem images anyway.
ifeq ($(BR2_SHARED_LIBS),y)
define ZLIB_RM_STATIC_STAGING
rm -f $(STAGING_DIR)/usr/lib/libz.a
endef
ZLIB_POST_INSTALL_STAGING_HOOKS += ZLIB_RM_STATIC_STAGING
endif
define HOST_ZLIB_INSTALL_CMDS
$(HOST_MAKE_ENV) $(MAKE1) -C $(@D) LDCONFIG=true install
endef
$(eval $(generic-package))
$(eval $(host-generic-package))
$(eval $(virtual-package))
$(eval $(host-virtual-package))