1SUMMARY = "WebKit web rendering engine for the GTK+ platform" 2HOMEPAGE = "https://www.webkitgtk.org/" 3BUGTRACKER = "https://bugs.webkit.org/" 4 5LICENSE = "BSD-2-Clause & LGPL-2.0-or-later" 6LIC_FILES_CHKSUM = "file://Source/JavaScriptCore/COPYING.LIB;md5=d0c6d6397a5d84286dda758da57bd691 \ 7 file://Source/WebCore/LICENSE-APPLE;md5=4646f90082c40bcf298c285f8bab0b12 \ 8 file://Source/WebCore/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \ 9 file://Source/WebCore/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \ 10 " 11 12SRC_URI = "https://www.webkitgtk.org/releases/${BP}.tar.xz \ 13 file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \ 14 file://0001-Tweak-gtkdoc-settings-so-that-gtkdoc-generation-work.patch \ 15 file://0001-Fix-build-without-opengl-or-es.patch \ 16 file://reproducibility.patch \ 17 file://0001-When-building-introspection-files-do-not-quote-CFLAG.patch \ 18 " 19SRC_URI[sha256sum] = "0ad9fb6bf28308fe3889faf184bd179d13ac1b46835d2136edbab2c133d00437" 20 21inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gtk-doc 22 23ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}" 24REQUIRED_DISTRO_FEATURES = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'opengl', '', d)}" 25 26CVE_PRODUCT = "webkitgtk webkitgtk\+" 27 28DEPENDS = " \ 29 ruby-native \ 30 gperf-native \ 31 cairo \ 32 harfbuzz \ 33 jpeg \ 34 atk \ 35 libwebp \ 36 gtk+3 \ 37 libxslt \ 38 libtasn1 \ 39 libnotify \ 40 gstreamer1.0 \ 41 gstreamer1.0-plugins-base \ 42 " 43 44PACKAGECONFIG_SOUP ?= "soup2" 45PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd wayland x11', d)} \ 46 ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'webgl opengl', '', d)} \ 47 ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', 'webgl gles2', d)} \ 48 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl-or-es', '', d)} \ 49 enchant \ 50 libsecret \ 51 ${PACKAGECONFIG_SOUP} \ 52 " 53 54PACKAGECONFIG[wayland] = "-DENABLE_WAYLAND_TARGET=ON,-DENABLE_WAYLAND_TARGET=OFF,wayland libwpe wpebackend-fdo wayland-native" 55PACKAGECONFIG[angle] = "-DUSE_ANGLE_WEBGL=ON,-DUSE_ANGLE_WEBGL=OFF" 56PACKAGECONFIG[x11] = "-DENABLE_X11_TARGET=ON,-DENABLE_X11_TARGET=OFF,virtual/libx11 libxcomposite libxdamage libxrender libxt" 57PACKAGECONFIG[geoclue] = "-DENABLE_GEOLOCATION=ON,-DENABLE_GEOLOCATION=OFF,geoclue" 58PACKAGECONFIG[enchant] = "-DENABLE_SPELLCHECK=ON,-DENABLE_SPELLCHECK=OFF,enchant2" 59PACKAGECONFIG[gles2] = "-DENABLE_GLES2=ON,-DENABLE_GLES2=OFF,virtual/libgles2" 60PACKAGECONFIG[webgl] = "-DENABLE_WEBGL=ON,-DENABLE_WEBGL=OFF,virtual/egl" 61PACKAGECONFIG[opengl] = "-DENABLE_GRAPHICS_CONTEXT_GL=ON,-DENABLE_GRAPHICS_CONTEXT_GL=OFF,virtual/egl" 62PACKAGECONFIG[opengl-or-es] = "-DUSE_OPENGL_OR_ES=ON,-DUSE_OPENGL_OR_ES=OFF" 63PACKAGECONFIG[libsecret] = "-DUSE_LIBSECRET=ON,-DUSE_LIBSECRET=OFF,libsecret" 64PACKAGECONFIG[libhyphen] = "-DUSE_LIBHYPHEN=ON,-DUSE_LIBHYPHEN=OFF,libhyphen" 65PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2" 66PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg" 67PACKAGECONFIG[systemd] = "-DUSE_SYSTEMD=ON,-DUSE_SYSTEMD=off,systemd" 68PACKAGECONFIG[reduce-size] = "-DCMAKE_BUILD_TYPE=MinSizeRel,-DCMAKE_BUILD_TYPE=Release,," 69PACKAGECONFIG[lcms] = "-DUSE_LCMS=ON,-DUSE_LCMS=OFF,lcms" 70PACKAGECONFIG[soup2] = "-DUSE_SOUP2=ON,-DUSE_SOUP2=OFF,libsoup-2.4,,,soup3" 71PACKAGECONFIG[soup3] = ",,libsoup,,,soup2" 72PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd" 73 74# webkitgtk is full of /usr/bin/env python, particular for generating docs 75do_configure[postfuncs] += "setup_python_link" 76setup_python_link() { 77 if [ ! -e ${STAGING_BINDIR_NATIVE}/python ]; then 78 ln -s `which python3` ${STAGING_BINDIR_NATIVE}/python 79 fi 80} 81 82EXTRA_OECMAKE = " \ 83 -DPORT=GTK \ 84 ${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-DENABLE_INTROSPECTION=ON', '-DENABLE_INTROSPECTION=OFF', d)} \ 85 ${@bb.utils.contains('GTKDOC_ENABLED', 'True', '-DENABLE_GTKDOC=ON', '-DENABLE_GTKDOC=OFF', d)} \ 86 -DENABLE_MINIBROWSER=ON \ 87 -DPYTHON_EXECUTABLE=`which python3` \ 88 -DENABLE_BUBBLEWRAP_SANDBOX=OFF \ 89 -DENABLE_GAMEPAD=OFF \ 90 " 91 92# Javascript JIT is not supported on ARC 93EXTRA_OECMAKE:append:arc = " -DENABLE_JIT=OFF " 94# By default 25-bit "medium" calls are used on ARC 95# which is not enough for binaries larger than 32 MiB 96CFLAGS:append:arc = " -mlong-calls" 97CXXFLAGS:append:arc = " -mlong-calls" 98 99# Needed for non-mesa graphics stacks when x11 is disabled 100CXXFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'x11', '', '-DEGL_NO_X11=1', d)}" 101 102# Javascript JIT is not supported on powerpc 103EXTRA_OECMAKE:append:powerpc = " -DENABLE_JIT=OFF " 104EXTRA_OECMAKE:append:powerpc64 = " -DENABLE_JIT=OFF " 105 106# ARM JIT code does not build on ARMv4/5/6 anymore 107EXTRA_OECMAKE:append:armv5 = " -DENABLE_JIT=OFF " 108EXTRA_OECMAKE:append:armv6 = " -DENABLE_JIT=OFF " 109EXTRA_OECMAKE:append:armv4 = " -DENABLE_JIT=OFF " 110 111EXTRA_OECMAKE:append:mipsarch = " -DUSE_LD_GOLD=OFF " 112EXTRA_OECMAKE:append:powerpc = " -DUSE_LD_GOLD=OFF " 113 114# JIT and gold linker does not work on RISCV 115EXTRA_OECMAKE:append:riscv32 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF" 116EXTRA_OECMAKE:append:riscv64 = " -DUSE_LD_GOLD=OFF -DENABLE_JIT=OFF" 117 118# JIT not supported on MIPS either 119EXTRA_OECMAKE:append:mipsarch = " -DENABLE_JIT=OFF -DENABLE_C_LOOP=ON " 120 121# JIT not supported on X32 122# An attempt was made to upstream JIT support for x32 in 123# https://bugs.webkit.org/show_bug.cgi?id=100450, but this was closed as 124# unresolved due to limited X32 adoption. 125EXTRA_OECMAKE:append:x86-x32 = " -DENABLE_JIT=OFF " 126 127SECURITY_CFLAGS:remove:aarch64 = "-fpie" 128SECURITY_CFLAGS:append:aarch64 = " -fPIE" 129 130FILES:${PN} += "${libdir}/webkit2gtk-4.*/injected-bundle/libwebkit2gtkinjectedbundle.so" 131 132RRECOMMENDS:${PN} += "ca-certificates shared-mime-info" 133 134# http://errors.yoctoproject.org/Errors/Details/20370/ 135ARM_INSTRUCTION_SET:armv4 = "arm" 136ARM_INSTRUCTION_SET:armv5 = "arm" 137ARM_INSTRUCTION_SET:armv6 = "arm" 138 139# https://bugzilla.yoctoproject.org/show_bug.cgi?id=9474 140# https://bugs.webkit.org/show_bug.cgi?id=159880 141# JSC JIT can build on ARMv7 with -marm, but doesn't work on runtime. 142# Upstream only tests regularly the JSC JIT on ARMv7 with Thumb2 (-mthumb). 143ARM_INSTRUCTION_SET:armv7a = "thumb" 144ARM_INSTRUCTION_SET:armv7r = "thumb" 145ARM_INSTRUCTION_SET:armv7ve = "thumb" 146 147# introspection inside qemu-arm hangs forever on musl/arm builds 148# therefore disable GI_DATA 149GI_DATA_ENABLED:libc-musl:armv7a = "False" 150GI_DATA_ENABLED:libc-musl:armv7ve = "False" 151 152# Can't be built with ccache 153CCACHE_DISABLE = "1" 154 155PACKAGE_PREPROCESS_FUNCS += "src_package_preprocess" 156src_package_preprocess () { 157 # Trim build paths from comments in generated sources to ensure reproducibility 158 sed -i -e "s,${WORKDIR},,g" \ 159 ${B}/JavaScriptCore/DerivedSources/*.h \ 160 ${B}/JavaScriptCore/DerivedSources/yarr/*.h \ 161 ${B}/JavaScriptCore/PrivateHeaders/JavaScriptCore/*.h \ 162 ${B}/WebKit2Gtk/DerivedSources/webkit2/*.cpp \ 163 ${B}/WebKit2Gtk/DerivedSources/webkit2/*.h 164 165} 166 167