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