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