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 gdk-pixbuf-native" 10 11LICENSE = "LGPL-2.0-only & LGPL-2.0-or-later & LGPL-2.1-or-later" 12 13inherit meson gettext pkgconfig gtk-doc update-alternatives gtk-immodules-cache gsettings features_check gobject-introspection 14 15BBCLASSEXTEND = "native nativesdk" 16 17GSETTINGS_PACKAGE:class-native = "" 18 19# versions >= 3.90 are development versions, otherwise like upstream-version-is-even 20UPSTREAM_CHECK_REGEX = "[^\d\.](?P<pver>3\.([1-8]?[02468])+(\.\d+)+)\.tar" 21 22ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" 23 24do_configure:prepend() { 25 # These files are generated by wayland-scanner but will race over modification 26 # time between the copies in the sysroot from wayland-protocols and the copy 27 # in the source tree. Solve the race by deleting so they need to be regenerated. 28 rm -f ${S}/modules/input/*-text-input-*.[ch] 29} 30 31GTKDOC_MESON_OPTION = 'gtk_doc' 32 33EXTRA_OEMESON = "-Dxinerama=no -Dtests=false" 34EXTRA_OEMESON:append:class-native = " -Ddemos=false -Dexamples=false" 35 36PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'opengl wayland x11', d)}" 37PACKAGECONFIG:class-native = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" 38PACKAGECONFIG:class-nativesdk = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}" 39 40PACKAGECONFIG[x11] = "-Dx11_backend=true,-Dx11_backend=false,at-spi2-atk fontconfig libx11 libxext libxcursor libxi libxdamage libxrandr libxrender libxcomposite libxfixes" 41# this is provided by oe-core patch that removes epoxy/gl dependency from a X11 build 42PACKAGECONFIG[opengl] = "-Dopengl=true,-Dopengl=false,libepoxy" 43PACKAGECONFIG[wayland] = "-Dwayland_backend=true,-Dwayland_backend=false,wayland wayland-protocols libxkbcommon virtual/egl virtual/libgles2 wayland-native" 44PACKAGECONFIG[cups] = ",,cups,cups" 45PACKAGECONFIG[colord] = "-Dcolord=yes,-Dcolord=no,colord" 46PACKAGECONFIG[cloudproviders] = "-Dcloudproviders=true,-Dcloudproviders=false,libcloudproviders" 47PACKAGECONFIG[tracker3] = "-Dtracker3=true,-Dtracker3=false,tracker,tracker-miners" 48 49prepare_gtk_scripts() { 50 mv ${D}${bindir}/gtk-update-icon-cache ${D}${bindir}/gtk-update-icon-cache-3.0 51 52 # duplicate gtk-query-immodules for post install script update_gtk_immodules_cache 53 mkdir -p ${D}${libexecdir} 54 ln ${D}${bindir}/gtk-query-immodules-3.0 ${D}${libexecdir}/${MLPREFIX}gtk-query-immodules-3.0 55} 56 57do_install:append:class-target() { 58 prepare_gtk_scripts 59} 60 61do_install:append:class-nativesdk() { 62 prepare_gtk_scripts 63} 64 65do_install:append:class-native() { 66 create_wrapper ${D}/${bindir}/gtk-update-icon-cache \ 67 GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache 68 create_wrapper ${D}/${bindir}/gtk-encode-symbolic-svg \ 69 GDK_PIXBUF_MODULE_FILE=${STAGING_LIBDIR_NATIVE}/gdk-pixbuf-2.0/2.10.0/loaders.cache 70} 71 72PROVIDES += "gtk-icon-utils" 73PACKAGES =+ "${PN}-demo" 74LIBV = "3.0.0" 75 76FILES:${PN}-demo = "${bindir}/gtk3-demo \ 77 ${bindir}/gtk3-demo-application \ 78 ${bindir}/gtk3-icon-browser \ 79 ${bindir}/gtk3-widget-factory \ 80 ${datadir}/gtk-3.0/demo \ 81 ${datadir}/applications/gtk3-demo.desktop \ 82 ${datadir}/applications/gtk3-icon-browser.desktop \ 83 ${datadir}/applications/gtk3-widget-factory.desktop \ 84 ${datadir}/icons/hicolor/*/apps/gtk3-demo*.png \ 85 ${datadir}/icons/hicolor/*/apps/gtk3-widget-factory*.png" 86 87FILES:${PN}:append = " ${bindir}/gtk-update-icon-cache-3.0 \ 88 ${bindir}/gtk-query-immodules-3.0 \ 89 ${bindir}/gtk-launch \ 90 ${datadir}/themes ${datadir}/gtk-3.0/emoji \ 91 ${sysconfdir} ${datadir}/glib-2.0/schemas/ \ 92 ${libdir}/gtk-3.0/${LIBV}/engines/libpixmap.so \ 93 ${libdir}/gtk-3.0/modules/*.so" 94 95FILES:${PN}-dev += " \ 96 ${datadir}/gtk-3.0/gtkbuilder.rng \ 97 ${datadir}/gtk-3.0/include \ 98 ${datadir}/gtk-3.0/valgrind \ 99 ${datadir}/gettext/its \ 100 ${libdir}/gtk-3.0/include \ 101 ${libdir}/gtk-3.0/${LIBV}/loaders/*.la \ 102 ${libdir}/gtk-3.0/${LIBV}/immodules/*.la \ 103 ${libdir}/gtk-3.0/3.0.0/printbackends/*.la \ 104 ${libdir}/gtk-3.0/${LIBV}/engines/*.la \ 105 ${libdir}/gtk-3.0/modules/*.la \ 106 ${bindir}/gtk-builder-convert \ 107 ${bindir}/gtk-encode-symbolic-svg \ 108 ${bindir}/gtk-builder-tool \ 109 ${bindir}/gtk-query-settings \ 110 " 111 112GTKBASE_RRECOMMENDS ?= "liberation-fonts \ 113 gdk-pixbuf-loader-png \ 114 gdk-pixbuf-loader-jpeg \ 115 gdk-pixbuf-loader-gif \ 116 gdk-pixbuf-loader-xpm \ 117 shared-mime-info \ 118 adwaita-icon-theme-symbolic \ 119 " 120 121GTKBASE_RRECOMMENDS:class-native ?= "\ 122 " 123 124GTKGLIBC_RRECOMMENDS ?= "${GTKBASE_RRECOMMENDS} glibc-gconv-iso8859-1" 125 126RRECOMMENDS:${PN} = "${GTKBASE_RRECOMMENDS}" 127RRECOMMENDS:${PN}:libc-glibc = "${GTKGLIBC_RRECOMMENDS}" 128RDEPENDS:${PN}-dev += "${@bb.utils.contains("PACKAGECONFIG", "wayland", "wayland-protocols", "", d)}" 129 130PACKAGES_DYNAMIC += "^gtk3-immodule-.* ^gtk3-printbackend-.*" 131 132ALTERNATIVE:${PN} = "gtk-update-icon-cache" 133ALTERNATIVE_TARGET[gtk-update-icon-cache] = "${bindir}/gtk-update-icon-cache-3.0" 134ALTERNATIVE_PRIORITY = "30" 135 136python populate_packages:prepend () { 137 import os.path 138 139 gtk_libdir = d.expand('${libdir}/gtk-3.0/${LIBV}') 140 immodules_root = os.path.join(gtk_libdir, 'immodules') 141 printmodules_root = os.path.join(gtk_libdir, 'printbackends'); 142 143 immodules = do_split_packages(d, immodules_root, r'^im-(.*)\.so$', 'gtk3-immodule-%s', 'GTK input module for %s') 144 if immodules: 145 d.setVar("GTKIMMODULES_PACKAGES", " ".join(immodules)) 146 147 do_split_packages(d, printmodules_root, r'^libprintbackend-(.*)\.so$', 'gtk3-printbackend-%s', 'GTK printbackend module for %s') 148 149 if (d.getVar('DEBIAN_NAMES')): 150 d.setVar(d.expand('PKG:${PN}'), '${MLPREFIX}libgtk-3.0') 151} 152