xref: /OK3568_Linux_fs/buildroot/package/libgtk3/libgtk3.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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