blob: 7e5882f830ec5da6a87f2f8a9d9f06e2db51d326 [file] [log] [blame]
################################################################################
#
# libgtk3
#
################################################################################
LIBGTK3_VERSION_MAJOR = 3.24
LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).41
LIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz
LIBGTK3_SITE = https://download.gnome.org/sources/gtk+/$(LIBGTK3_VERSION_MAJOR)
LIBGTK3_LICENSE = LGPL-2.0+
LIBGTK3_LICENSE_FILES = COPYING
LIBGTK3_CPE_ID_VENDOR = gnome
LIBGTK3_CPE_ID_PRODUCT = gtk
LIBGTK3_INSTALL_STAGING = YES
LIBGTK3_DEPENDENCIES = host-pkgconf host-libgtk3 at-spi2-core libglib2 cairo pango \
gdk-pixbuf libepoxy $(TARGET_NLS_DEPENDENCIES)
ifeq ($(BR2_PACKAGE_LIBGTK3_X11),y)
LIBGTK3_DEPENDENCIES += fontconfig xlib_libX11 xlib_libXext xlib_libXrandr xlib_libXrender xlib_libXi
LIBGTK3_CONF_OPTS += -Dx11_backend=true
else
LIBGTK3_CONF_OPTS += -Dx11_backend=false
endif
ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)
LIBGTK3_CONF_OPTS += -Dintrospection=true
LIBGTK3_DEPENDENCIES += gobject-introspection
else
LIBGTK3_CONF_OPTS += -Dintrospection=false
endif
ifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y)
LIBGTK3_DEPENDENCIES += wayland wayland-protocols libxkbcommon
LIBGTK3_CONF_OPTS += -Dwayland_backend=true
else
LIBGTK3_CONF_OPTS += -Dwayland_backend=false
endif
ifeq ($(BR2_PACKAGE_LIBGTK3_BROADWAY),y)
LIBGTK3_CONF_OPTS += -Dbroadway_backend=true
else
LIBGTK3_CONF_OPTS += -Dbroadway_backend=false
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y)
LIBGTK3_CONF_OPTS += -Dxinerama=yes
LIBGTK3_DEPENDENCIES += xlib_libXinerama
else
LIBGTK3_CONF_OPTS += -Dxinerama=no
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y)
LIBGTK3_DEPENDENCIES += xlib_libXcursor
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y)
LIBGTK3_DEPENDENCIES += xlib_libXfixes
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y)
LIBGTK3_DEPENDENCIES += xlib_libXcomposite
endif
ifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y)
LIBGTK3_DEPENDENCIES += xlib_libXdamage
endif
ifeq ($(BR2_PACKAGE_CUPS),y)
LIBGTK3_CONF_OPTS += -Dprint_backends=file,cups
LIBGTK3_DEPENDENCIES += cups
else
LIBGTK3_CONF_OPTS += -Dprint_backends=auto
endif
ifeq ($(BR2_PACKAGE_LIBGTK3_DEMO),y)
LIBGTK3_CONF_OPTS += -Ddemos=true -Dexamples=true
LIBGTK3_DEPENDENCIES += hicolor-icon-theme shared-mime-info
else
LIBGTK3_CONF_OPTS += -Ddemos=false -Dexamples=false
endif
ifeq ($(BR2_PACKAGE_LIBGTK3_TESTS),y)
LIBGTK3_CONF_OPTS += -Dtests=true -Dinstalled_tests=true
else
LIBGTK3_CONF_OPTS += -Dtests=false -Dinstalled_tests=false
endif
define LIBGTK3_COMPILE_GLIB_SCHEMAS
$(HOST_DIR)/bin/glib-compile-schemas \
$(TARGET_DIR)/usr/share/glib-2.0/schemas
endef
LIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_COMPILE_GLIB_SCHEMAS
# gtk+ >= 3.10 can build a native version of gtk-update-icon-cache if
# --enable-gtk2-dependency=no is set when invoking './configure'.
#
# Unfortunately, if the target toolchain is based on uClibc, the macro
# AM_GLIB_GNU_GETTEXT will detect the libintl built for the target and
# will add '-lintl' to the default list of libraries for the linker (used
# for both native and target builds).
#
# But no native version of libintl is available (the functions are
# provided by glibc). So gtk-update-icon-cache will not build.
#
# As a workaround, we build gtk-update-icon-cache on our own, set
# --enable-gtk2-dependency=yes and force './configure' to use our version.
HOST_LIBGTK3_DEPENDENCIES = \
host-libglib2 \
host-libpng \
host-gdk-pixbuf \
host-pkgconf \
host-librsvg
HOST_LIBGTK3_CFLAGS = \
`$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gdk-pixbuf-2.0` \
`$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gio-2.0`
define HOST_LIBGTK3_CONFIGURE_CMDS
echo "#define GETTEXT_PACKAGE \"gtk30\"" >> $(@D)/gtk/config.h
echo "#define HAVE_UNISTD_H 1" >> $(@D)/gtk/config.h
echo "#define HAVE_FTW_H 1" >> $(@D)/gtk/config.h
endef
define HOST_LIBGTK3_BUILD_CMDS
$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \
$(@D)/gtk/updateiconcache.c \
$(HOST_LIBGTK3_CFLAGS) \
-o $(@D)/gtk/gtk-update-icon-cache
$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \
$(@D)/gtk/encodesymbolic.c \
$(HOST_LIBGTK3_CFLAGS) \
-o $(@D)/gtk/gtk-encode-symbolic-svg
endef
define HOST_LIBGTK3_INSTALL_CMDS
$(INSTALL) -D -m 0755 $(@D)/gtk/gtk-update-icon-cache \
$(HOST_DIR)/bin/gtk-update-icon-cache
$(INSTALL) -D -m 0755 $(@D)/gtk/gtk-encode-symbolic-svg \
$(HOST_DIR)/bin/gtk-encode-symbolic-svg
endef
# Create icon-theme.cache for each of the icon directories/themes
# It's not strictly necessary but speeds up lookups
define LIBGTK3_UPDATE_ICON_CACHE
[ ! -d $(TARGET_DIR)/usr/share/icons ] || \
find $(TARGET_DIR)/usr/share/icons -maxdepth 1 -mindepth 1 -type d \
-exec $(HOST_DIR)/bin/gtk-update-icon-cache {} \;
endef
LIBGTK3_TARGET_FINALIZE_HOOKS += LIBGTK3_UPDATE_ICON_CACHE
$(eval $(meson-package))
$(eval $(host-generic-package))