1*4882a593Smuzhiyun################################################################################ 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# libgtk3 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun################################################################################ 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunLIBGTK3_VERSION_MAJOR = 3.24 8*4882a593SmuzhiyunLIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).30 9*4882a593SmuzhiyunLIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz 10*4882a593SmuzhiyunLIBGTK3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK3_VERSION_MAJOR) 11*4882a593SmuzhiyunLIBGTK3_LICENSE = LGPL-2.0+ 12*4882a593SmuzhiyunLIBGTK3_LICENSE_FILES = COPYING 13*4882a593SmuzhiyunLIBGTK3_CPE_ID_VENDOR = gnome 14*4882a593SmuzhiyunLIBGTK3_CPE_ID_PRODUCT = gtk 15*4882a593SmuzhiyunLIBGTK3_INSTALL_STAGING = YES 16*4882a593SmuzhiyunLIBGTK3_AUTORECONF = YES 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunLIBGTK3_CONF_ENV = \ 19*4882a593Smuzhiyun ac_cv_path_GTK_UPDATE_ICON_CACHE=$(HOST_DIR)/bin/gtk-update-icon-cache \ 20*4882a593Smuzhiyun ac_cv_path_GDK_PIXBUF_CSOURCE=$(HOST_DIR)/bin/gdk-pixbuf-csource \ 21*4882a593Smuzhiyun PKG_CONFIG_FOR_BUILD=$(HOST_DIR)/bin/pkgconf 22*4882a593Smuzhiyun 23*4882a593SmuzhiyunLIBGTK3_CONF_OPTS = \ 24*4882a593Smuzhiyun --disable-glibtest \ 25*4882a593Smuzhiyun --enable-explicit-deps=no 26*4882a593SmuzhiyunHOST_LIBGTK3_CONF_OPTS = --disable-introspection 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun# Override pkg-config pkgdatadir variable, it needs the prefix 29*4882a593SmuzhiyunLIBGTK3_MAKE_OPTS = \ 30*4882a593Smuzhiyun WAYLAND_PROTOCOLS_DATADIR=$(STAGING_DIR)/usr/share/wayland-protocols \ 31*4882a593Smuzhiyun LIBS=$(TARGET_NLS_LIBS) 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES = host-pkgconf host-libgtk3 atk libglib2 cairo pango \ 34*4882a593Smuzhiyun gdk-pixbuf libepoxy $(TARGET_NLS_DEPENDENCIES) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGTK3_X11),y) 37*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += fontconfig xlib_libX11 xlib_libXext xlib_libXrender xlib_libXi 38*4882a593Smuzhiyun 39*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += \ 40*4882a593Smuzhiyun --enable-x11-backend \ 41*4882a593Smuzhiyun --x-includes=$(STAGING_DIR)/usr/include/X11 \ 42*4882a593Smuzhiyun --x-libraries=$(STAGING_DIR)/usr/lib 43*4882a593Smuzhiyunelse 44*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-x11-backend 45*4882a593Smuzhiyunendif 46*4882a593Smuzhiyun 47*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y) 48*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-introspection 49*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += gobject-introspection 50*4882a593Smuzhiyunelse 51*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-introspection 52*4882a593Smuzhiyunendif 53*4882a593Smuzhiyun 54*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGTK3_WAYLAND),y) 55*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += wayland wayland-protocols libxkbcommon 56*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-wayland-backend 57*4882a593Smuzhiyunelse 58*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-wayland-backend 59*4882a593Smuzhiyunendif 60*4882a593Smuzhiyun 61*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGTK3_BROADWAY),y) 62*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-broadway-backend 63*4882a593Smuzhiyunelse 64*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-broadway-backend 65*4882a593Smuzhiyunendif 66*4882a593Smuzhiyun 67*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXINERAMA),y) 68*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-xinerama 69*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libXinerama 70*4882a593Smuzhiyunelse 71*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-xinerama 72*4882a593Smuzhiyunendif 73*4882a593Smuzhiyun 74*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXRANDR),y) 75*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-xrandr 76*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libXrandr 77*4882a593Smuzhiyunelse 78*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-xrandr 79*4882a593Smuzhiyunendif 80*4882a593Smuzhiyun 81*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXCURSOR),y) 82*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libXcursor 83*4882a593Smuzhiyunendif 84*4882a593Smuzhiyun 85*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXFIXES),y) 86*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-xfixes 87*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libXfixes 88*4882a593Smuzhiyunelse 89*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-xfixes 90*4882a593Smuzhiyunendif 91*4882a593Smuzhiyun 92*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXCOMPOSITE),y) 93*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-xcomposite 94*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libXcomposite 95*4882a593Smuzhiyunelse 96*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-xcomposite 97*4882a593Smuzhiyunendif 98*4882a593Smuzhiyun 99*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXDAMAGE),y) 100*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-xdamage 101*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libXdamage 102*4882a593Smuzhiyunelse 103*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-xdamage 104*4882a593Smuzhiyunendif 105*4882a593Smuzhiyun 106*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_XLIB_LIBXKBFILE),y) 107*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-xkb 108*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += xlib_libxkbfile 109*4882a593Smuzhiyunelse 110*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-xkb 111*4882a593Smuzhiyunendif 112*4882a593Smuzhiyun 113*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_CUPS),y) 114*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-cups 115*4882a593SmuzhiyunLIBGTK3_CONF_ENV += ac_cv_path_CUPS_CONFIG=$(STAGING_DIR)/usr/bin/cups-config 116*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += cups 117*4882a593Smuzhiyunelse 118*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-cups 119*4882a593Smuzhiyunendif 120*4882a593Smuzhiyun 121*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGTK3_DEMO),y) 122*4882a593SmuzhiyunLIBGTK3_DEPENDENCIES += hicolor-icon-theme shared-mime-info 123*4882a593Smuzhiyunelse 124*4882a593Smuzhiyundefine LIBGTK3_REMOVE_DEMOS 125*4882a593Smuzhiyun $(RM) $(TARGET_DIR)/usr/bin/gtk3-demo \ 126*4882a593Smuzhiyun $(TARGET_DIR)/usr/bin/gtk3-demo-application 127*4882a593Smuzhiyunendef 128*4882a593SmuzhiyunLIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_REMOVE_DEMOS 129*4882a593Smuzhiyunendif 130*4882a593Smuzhiyun 131*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_LIBGTK3_TESTS),y) 132*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --enable-installed-tests 133*4882a593Smuzhiyunelse 134*4882a593SmuzhiyunLIBGTK3_CONF_OPTS += --disable-installed-tests 135*4882a593Smuzhiyunendif 136*4882a593Smuzhiyun 137*4882a593Smuzhiyundefine LIBGTK3_COMPILE_GLIB_SCHEMAS 138*4882a593Smuzhiyun $(HOST_DIR)/bin/glib-compile-schemas \ 139*4882a593Smuzhiyun $(TARGET_DIR)/usr/share/glib-2.0/schemas 140*4882a593Smuzhiyunendef 141*4882a593Smuzhiyun 142*4882a593SmuzhiyunLIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_COMPILE_GLIB_SCHEMAS 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun# gtk+ >= 3.10 can build a native version of gtk-update-icon-cache if 145*4882a593Smuzhiyun# --enable-gtk2-dependency=no is set when invoking './configure'. 146*4882a593Smuzhiyun# 147*4882a593Smuzhiyun# Unfortunately, if the target toolchain is based on uClibc, the macro 148*4882a593Smuzhiyun# AM_GLIB_GNU_GETTEXT will detect the libintl built for the target and 149*4882a593Smuzhiyun# will add '-lintl' to the default list of libraries for the linker (used 150*4882a593Smuzhiyun# for both native and target builds). 151*4882a593Smuzhiyun# 152*4882a593Smuzhiyun# But no native version of libintl is available (the functions are 153*4882a593Smuzhiyun# provided by glibc). So gtk-update-icon-cache will not build. 154*4882a593Smuzhiyun# 155*4882a593Smuzhiyun# As a workaround, we build gtk-update-icon-cache on our own, set 156*4882a593Smuzhiyun# --enable-gtk2-dependency=yes and force './configure' to use our version. 157*4882a593Smuzhiyun 158*4882a593SmuzhiyunHOST_LIBGTK3_DEPENDENCIES = \ 159*4882a593Smuzhiyun host-libglib2 \ 160*4882a593Smuzhiyun host-libpng \ 161*4882a593Smuzhiyun host-gdk-pixbuf \ 162*4882a593Smuzhiyun host-pkgconf \ 163*4882a593Smuzhiyun host-librsvg 164*4882a593Smuzhiyun 165*4882a593SmuzhiyunHOST_LIBGTK3_CFLAGS = \ 166*4882a593Smuzhiyun `$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gdk-pixbuf-2.0` \ 167*4882a593Smuzhiyun `$(HOST_MAKE_ENV) $(PKG_CONFIG_HOST_BINARY) --cflags --libs gio-2.0` 168*4882a593Smuzhiyun 169*4882a593Smuzhiyundefine HOST_LIBGTK3_CONFIGURE_CMDS 170*4882a593Smuzhiyun echo "#define GETTEXT_PACKAGE \"gtk30\"" >> $(@D)/gtk/config.h 171*4882a593Smuzhiyun echo "#define HAVE_UNISTD_H 1" >> $(@D)/gtk/config.h 172*4882a593Smuzhiyun echo "#define HAVE_FTW_H 1" >> $(@D)/gtk/config.h 173*4882a593Smuzhiyunendef 174*4882a593Smuzhiyun 175*4882a593Smuzhiyundefine HOST_LIBGTK3_BUILD_CMDS 176*4882a593Smuzhiyun $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ 177*4882a593Smuzhiyun $(@D)/gtk/updateiconcache.c \ 178*4882a593Smuzhiyun $(HOST_LIBGTK3_CFLAGS) \ 179*4882a593Smuzhiyun -o $(@D)/gtk/gtk-update-icon-cache 180*4882a593Smuzhiyun $(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS) \ 181*4882a593Smuzhiyun $(@D)/gtk/encodesymbolic.c \ 182*4882a593Smuzhiyun $(HOST_LIBGTK3_CFLAGS) \ 183*4882a593Smuzhiyun -o $(@D)/gtk/gtk-encode-symbolic-svg 184*4882a593Smuzhiyunendef 185*4882a593Smuzhiyun 186*4882a593Smuzhiyundefine HOST_LIBGTK3_INSTALL_CMDS 187*4882a593Smuzhiyun $(INSTALL) -D -m 0755 $(@D)/gtk/gtk-update-icon-cache \ 188*4882a593Smuzhiyun $(HOST_DIR)/bin/gtk-update-icon-cache 189*4882a593Smuzhiyun $(INSTALL) -D -m 0755 $(@D)/gtk/gtk-encode-symbolic-svg \ 190*4882a593Smuzhiyun $(HOST_DIR)/bin/gtk-encode-symbolic-svg 191*4882a593Smuzhiyunendef 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun# Create icon-theme.cache for each of the icon directories/themes 194*4882a593Smuzhiyun# It's not strictly necessary but speeds up lookups 195*4882a593Smuzhiyundefine LIBGTK3_UPDATE_ICON_CACHE 196*4882a593Smuzhiyun find $(TARGET_DIR)/usr/share/icons -maxdepth 1 -mindepth 1 -type d \ 197*4882a593Smuzhiyun -exec $(HOST_DIR)/bin/gtk-update-icon-cache {} \; 198*4882a593Smuzhiyunendef 199*4882a593SmuzhiyunLIBGTK3_TARGET_FINALIZE_HOOKS += LIBGTK3_UPDATE_ICON_CACHE 200*4882a593Smuzhiyun 201*4882a593Smuzhiyunifneq ($(BR2_PACKAGE_HAS_LIBEGL),) 202*4882a593Smuzhiyundefine LIBGTK3_GDK_GL_GLES 203*4882a593Smuzhiyun echo "export GDK_GL=gles" > $(@D)/gdk.sh 204*4882a593Smuzhiyun $(INSTALL) -D -m 0644 $(@D)/gdk.sh \ 205*4882a593Smuzhiyun $(TARGET_DIR)/etc/profile.d/gdk.sh 206*4882a593Smuzhiyunendef 207*4882a593Smuzhiyun 208*4882a593SmuzhiyunLIBGTK3_POST_INSTALL_TARGET_HOOKS += LIBGTK3_GDK_GL_GLES 209*4882a593Smuzhiyunendif 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun$(eval $(autotools-package)) 212*4882a593Smuzhiyun$(eval $(host-autotools-package)) 213