1 2SUMMARY = "Multi-platform toolkit for creating GUIs" 3DESCRIPTION = "GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete \ 4set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites." 5HOMEPAGE = "http://www.gtk.org" 6BUGTRACKER = "https://bugzilla.gnome.org/" 7SECTION = "libs" 8 9DEPENDS = "glib-2.0 cairo pango atk jpeg libpng gdk-pixbuf \ 10 gdk-pixbuf-native" 11 12LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later" 13 14inherit autotools gettext pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings features_check gobject-introspection 15 16BBCLASSEXTEND = "native nativesdk" 17 18GSETTINGS_PACKAGE:class-native = "" 19 20# versions >= 3.90 are development versions, otherwise like upstream-version-is-even 21UPSTREAM_CHECK_REGEX = "[^\d\.](?P<pver>3\.([1-8]?[02468])+(\.\d+)+)\.tar" 22 23ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" 24 25# This should be in autotools.bbclass, but until something elses uses it putting 26# it here avoids rebuilding everything. 27export PKG_CONFIG_FOR_BUILD = "${STAGING_BINDIR_NATIVE}/pkg-config-native" 28 29do_configure:prepend() { 30 #delete a file that will get confused with generated one in ${B} 31 rm -f ${S}/gtk/gtktypefuncs.c 32 33 # These files are generated by wayland-scanner but will race over modification 34 # time between the copies in the sysroot from wayland-protocols and the copy 35 # in the source tree. Solve the race by deleting so they need to be regenerated. 36 # 3.24.22 will not be shipping these files so this can be deleted then: 37 # https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/2183 38 rm -f ${S}/modules/input/text-input-unstable-v3*.[ch] 39} 40 41EXTRA_OECONF += " \ 42 --disable-glibtest \ 43 --disable-xinerama \ 44 --enable-modules \ 45 ${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "--disable-gtk-doc", d)} \ 46 " 47 48do_compile:prepend() { 49 export GIR_EXTRA_LIBS_PATH="${B}/gdk/.libs" 50} 51 52PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl wayland x11', d)}" 53PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" 54PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" 55 56PACKAGECONFIG[x11] = "--enable-x11-backend,--disable-x11-backend,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes" 57# this is provided by oe-core patch that removes epoxy/gl dependency from a X11 build 58PACKAGECONFIG[opengl] = "--enable-opengl,--disable-opengl,libepoxy" 59PACKAGECONFIG[wayland] = "--enable-wayland-backend,--disable-wayland-backend,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2 wayland-native" 60PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups" 61PACKAGECONFIG[colord] = "--enable-colord,--disable-colord,colord" 62 63prepare_gtk_scripts() { 64 mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-3.0 65 66 # duplicate gtk-query-immodules for post install script update_gtk_immodules_cache 67 mkdir -p ${D}${libexecdir} 68 ln ${D}${bindir}/gtk-query-immodules-3.0 ${D}${libexecdir}/${MLPREFIX}gtk-query-immodules-3.0 69} 70 71do_install:append:class-target() { 72 prepare_gtk_scripts 73} 74 75do_install:append:class-nativesdk() { 76 prepare_gtk_scripts 77} 78 79do_install:append:class-native() { 80 create_wrapper ${D}/${bindir}/gtk-update-icon-cache \ 81 GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache 82 create_wrapper ${D}/${bindir}/gtk-encode-symbolic-svg \ 83 GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache 84} 85 86PROVIDES += "gtk-icon-utils" 87PACKAGES =+ "${PN}-demo" 88LIBV = "3.0.0" 89 90FILES:${PN}-demo = "${bindir}/gtk3-demo \ 91 ${bindir}/gtk3-demo-application \ 92 ${bindir}/gtk3-icon-browser \ 93 ${bindir}/gtk3-widget-factory \ 94 ${datadir}/gtk-3.0/demo \ 95 ${datadir}/applications/gtk3-demo.desktop \ 96 ${datadir}/applications/gtk3-icon-browser.desktop \ 97 ${datadir}/applications/gtk3-widget-factory.desktop \ 98 ${datadir}/icons/hicolor/*/apps/gtk3-demo*.png \ 99 ${datadir}/icons/hicolor/*/apps/gtk3-widget-factory*.png" 100 101FILES:${PN}:append = " ${bindir}/gtk-update-icon-cache-3.0 \ 102 ${bindir}/gtk-query-immodules-3.0 \ 103 ${bindir}/gtk-launch \ 104 ${datadir}/themes ${sysconfdir} ${datadir}/glib-2.0/schemas/ \ 105 ${libdir}/gtk-3.0/${LIBV}/engines/libpixmap.so \ 106 ${libdir}/gtk-3.0/modules/*.so" 107 108FILES:${PN}-dev += " \ 109 ${datadir}/gtk-3.0/gtkbuilder.rng \ 110 ${datadir}/gtk-3.0/include \ 111 ${datadir}/gtk-3.0/valgrind \ 112 ${datadir}/gettext/its \ 113 ${libdir}/gtk-3.0/include \ 114 ${libdir}/gtk-3.0/${LIBV}/loaders/*.la \ 115 ${libdir}/gtk-3.0/${LIBV}/immodules/*.la \ 116 ${libdir}/gtk-3.0/3.0.0/printbackends/*.la \ 117 ${libdir}/gtk-3.0/${LIBV}/engines/*.la \ 118 ${libdir}/gtk-3.0/modules/*.la \ 119 ${bindir}/gtk-builder-convert \ 120 ${bindir}/gtk-encode-symbolic-svg \ 121 ${bindir}/gtk-builder-tool \ 122 ${bindir}/gtk-query-settings \ 123 " 124 125GTKBASE_RRECOMMENDS ?= "liberation-fonts \ 126 gdk-pixbuf-loader-png \ 127 gdk-pixbuf-loader-jpeg \ 128 gdk-pixbuf-loader-gif \ 129 gdk-pixbuf-loader-xpm \ 130 shared-mime-info \ 131 adwaita-icon-theme-symbolic \ 132 " 133 134GTKBASE_RRECOMMENDS:class-native ?= "\ 135 " 136 137GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1" 138 139RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}" 140RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}" 141RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}" 142 143PACKAGES_DYNAMIC += "^gtk3-immodule-.* ^gtk3-printbackend-.*" 144 145ALTERNATIVE:${PN} = "gtk-update-icon-cache" 146ALTERNATIVE_TARGET[gtk-update-icon-cache] = "${bindir}/gtk-update-icon-cache-3.0" 147ALTERNATIVE_PRIORITY = "30" 148 149python populate_packages:prepend () { 150 import os.path 151 152 gtk_libdir = d.expand('${libdir}/gtk-3.0/${LIBV}') 153 immodules_root = os.path.join(gtk_libdir, 'immodules') 154 printmodules_root = os.path.join(gtk_libdir, 'printbackends'); 155 156 immodules = do_split_packages(d, immodules_root, r'^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for %s') 157 if immodules: 158 d.setVar("GTKIMMODULES_PACKAGES", " ".join(immodules)) 159 160 do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend module for %s') 161 162 if (d.getVar('DEBIAN_NAMES')): 163 d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-3.0') 164} 165