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