libgtk3.mk 5.9 KB

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