kumquat-buildroot/package/gdk-pixbuf/gdk-pixbuf.mk
Gustavo Zacarias 1b11285893 gdk-pixbuf: use host loaders to update the cache
Unfortunately gdk-pixbuf-query-loaders doesn't understand cross loaders
to update the cache, hence we can't use the host variant against target
loaders since it will output an effectively empty cache, causing runtime
failure of libgtk when finding icons.
So make host-gdk-pixbuf functionally equivalent to the target gdk-pixbuf
so we can run gdk-pixbuf-query-loaders against the host plugins and just
strip the host directory to make it runtime-compatible (like was done
before for the target directory).

This is still better than trying to update at runtime, since that would
require a writable loaders.cache file in tmpfs or rw filesystem, not to
mention the associated additional startup time.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2016-04-15 20:24:09 +02:00

78 lines
2.5 KiB
Makefile

################################################################################
#
# gdk-pixbuf
#
################################################################################
GDK_PIXBUF_VERSION_MAJOR = 2.34
GDK_PIXBUF_VERSION = $(GDK_PIXBUF_VERSION_MAJOR).0
GDK_PIXBUF_SOURCE = gdk-pixbuf-$(GDK_PIXBUF_VERSION).tar.xz
GDK_PIXBUF_SITE = http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/$(GDK_PIXBUF_VERSION_MAJOR)
GDK_PIXBUF_LICENSE = LGPLv2+
GDK_PIXBUF_LICENSE_FILES = COPYING
GDK_PIXBUF_INSTALL_STAGING = YES
GDK_PIXBUF_DEPENDENCIES = \
host-gdk-pixbuf host-libglib2 host-pkgconf \
libglib2 $(if $(BR2_ENABLE_LOCALE),,libiconv)
HOST_GDK_PIXBUF_DEPENDENCIES = host-libpng host-pkgconf host-libglib2
GDK_PIXBUF_CONF_ENV = \
ac_cv_path_GLIB_GENMARSHAL=$(LIBGLIB2_HOST_BINARY) \
gio_can_sniff=no
GDK_PIXBUF_CONF_OPTS = --disable-glibtest
ifneq ($(BR2_PACKAGE_LIBPNG),y)
GDK_PIXBUF_CONF_OPTS += --without-libpng
else
GDK_PIXBUF_DEPENDENCIES += libpng
endif
ifneq ($(BR2_PACKAGE_JPEG),y)
HOST_GDK_PIXBUF_CONF_OPTS += --without-libjpeg
GDK_PIXBUF_CONF_OPTS += --without-libjpeg
else
GDK_PIXBUF_DEPENDENCIES += jpeg
HOST_GDK_PIXBUF_DEPENDENCIES += host-libjpeg
endif
ifneq ($(BR2_PACKAGE_TIFF),y)
GDK_PIXBUF_CONF_OPTS += --without-libtiff
HOST_GDK_PIXBUF_CONF_OPTS += --without-libtiff
else
GDK_PIXBUF_DEPENDENCIES += tiff
GDK_PIXBUF_CONF_ENV += \
LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libtiff-4`"
HOST_GDK_PIXBUF_DEPENDENCIES += host-tiff
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBX11),y)
GDK_PIXBUF_CONF_OPTS += --with-x11
GDK_PIXBUF_DEPENDENCIES += xlib_libX11
endif
# gdk-pixbuf requires the loaders.cache file populated to work properly
# Rather than doing so at runtime, since the fs can be read-only, do so
# here after building and installing to target.
# And since the cache file will contain absolute host directory names we
# need to sanitize (strip) them.
ifeq ($(BR2_STATIC_LIBS),)
define GDK_PIXBUF_UPDATE_CACHE
GDK_PIXBUF_MODULEDIR=$(HOST_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders \
$(HOST_DIR)/usr/bin/gdk-pixbuf-query-loaders \
> $(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
$(SED) "s,$(HOST_DIR),,g" \
$(TARGET_DIR)/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
endef
GDK_PIXBUF_POST_INSTALL_TARGET_HOOKS += GDK_PIXBUF_UPDATE_CACHE
endif
# Tests don't build correctly with uClibc
define GDK_PIXBUF_DISABLE_TESTS
$(SED) 's/ tests//' $(@D)/Makefile.in
endef
GDK_PIXBUF_POST_PATCH_HOOKS += GDK_PIXBUF_DISABLE_TESTS
$(eval $(autotools-package))
$(eval $(host-autotools-package))