xref: /OK3568_Linux_fs/yocto/poky/meta/recipes-gnome/gtk+/gtk+3.inc (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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