1*4882a593SmuzhiyunSUMMARY = "QtWebEngine combines the power of Chromium and Qt" 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun# Read http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ 4*4882a593SmuzhiyunLICENSE = "BSD-3-Clause & ( GPL-3.0-only & The-Qt-Company-GPL-Exception-1.0 | The-Qt-Company-Commercial ) & ( LGPL-3.0-only | The-Qt-Company-Commercial )" 5*4882a593SmuzhiyunLIC_FILES_CHKSUM = " \ 6*4882a593Smuzhiyun file://src/3rdparty/chromium/LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \ 7*4882a593Smuzhiyun file://LICENSE.LGPL3;md5=8211fde12cc8a4e2477602f5953f5b71 \ 8*4882a593Smuzhiyun file://LICENSE.GPLv3;md5=88e2b9117e6be406b5ed6ee4ca99a705 \ 9*4882a593Smuzhiyun file://LICENSE.GPL3;md5=d32239bcb673463ab874e80d47fae504 \ 10*4882a593Smuzhiyun file://LICENSE.GPL3-EXCEPT;md5=763d8c535a234d9a3fb682c7ecb6c073 \ 11*4882a593Smuzhiyun file://LICENSE.GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ 12*4882a593Smuzhiyun" 13*4882a593Smuzhiyun 14*4882a593SmuzhiyunDEPENDS += " \ 15*4882a593Smuzhiyun dbus \ 16*4882a593Smuzhiyun libpng-native \ 17*4882a593Smuzhiyun nss-native \ 18*4882a593Smuzhiyun nspr-native \ 19*4882a593Smuzhiyun ninja-native \ 20*4882a593Smuzhiyun nasm-native \ 21*4882a593Smuzhiyun nodejs-native \ 22*4882a593Smuzhiyun bison-native \ 23*4882a593Smuzhiyun qtwebchannel \ 24*4882a593Smuzhiyun qtbase qtdeclarative qtxmlpatterns qtquickcontrols qtquickcontrols2 \ 25*4882a593Smuzhiyun qtlocation \ 26*4882a593Smuzhiyun libdrm libxkbcommon fontconfig pixman openssl pango cairo pciutils nss \ 27*4882a593Smuzhiyun libcap \ 28*4882a593Smuzhiyun jpeg-native \ 29*4882a593Smuzhiyun freetype-native \ 30*4882a593Smuzhiyun gperf-native \ 31*4882a593Smuzhiyun ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa-lib', '', d)} \ 32*4882a593Smuzhiyun ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'libxkbfile libxcomposite libxcursor libxi libxrandr libxtst', '', d)} \ 33*4882a593Smuzhiyun" 34*4882a593Smuzhiyun 35*4882a593SmuzhiyunDEPENDS:append:libc-musl = " libexecinfo" 36*4882a593Smuzhiyun 37*4882a593Smuzhiyuninherit pkgconfig 38*4882a593Smuzhiyun 39*4882a593SmuzhiyunEXTRA_QMAKEVARS_CONFIGURE += "-feature-webengine-system-ninja -no-feature-webengine-system-gn" 40*4882a593SmuzhiyunEXTRA_QMAKEVARS_PRE += "CONFIG+=force_debug_info" 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun# chromium/third_party/openh264/openh264.gyp adds 43*4882a593Smuzhiyun# -Wno-format to openh264_cflags_add 44*4882a593Smuzhiyun# similarly chromium/third_party/openh264/BUILD.gn for newer qtwebengine 45*4882a593Smuzhiyun# causing following error, because -Wformat-security cannot be used together with -Wno-format 46*4882a593Smuzhiyun# cc1plus: error: -Wformat-security ignored without -Wformat [-Werror=format-security] 47*4882a593Smuzhiyun# http://errors.yoctoproject.org/Errors/Details/150333/ 48*4882a593SmuzhiyunSECURITY_STRINGFORMAT = "" 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun# To use system ffmpeg you need to enable also libwebp, opus, libvpx 51*4882a593Smuzhiyun# Only depenedencies available in oe-core are enabled by default 52*4882a593SmuzhiyunPACKAGECONFIG ??= "libevent libpng \ 53*4882a593Smuzhiyun ${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}" 54*4882a593Smuzhiyun 55*4882a593SmuzhiyunPACKAGECONFIG[icu] = "-feature-webengine-system-icu,-no-feature-webengine-system-icu,icu" 56*4882a593SmuzhiyunPACKAGECONFIG[ffmpeg] = "-feature-webengine-system-ffmpeg,-no-feature-webengine-system-ffmpeg,libav" 57*4882a593SmuzhiyunPACKAGECONFIG[webrtc] = "-feature-webengine-webrtc,-no-feature-webengine-webrtc,libvpx" 58*4882a593SmuzhiyunPACKAGECONFIG[libwebp] = "-feature-webengine-system-libwebp,-no-feature-webengine-system-libwebp,libwebp" 59*4882a593SmuzhiyunPACKAGECONFIG[opus] = "-feature-webengine-system-opus,-no-feature-webengine-system-opus,libopus" 60*4882a593SmuzhiyunPACKAGECONFIG[libvpx] = "-feature-webengine-system-libvpx,-no-feature-webengine-system-libvpx,libvpx" 61*4882a593SmuzhiyunPACKAGECONFIG[libevent] = "-feature-webengine-system-libevent,-no-feature-webengine-system-libevent,libevent" 62*4882a593SmuzhiyunPACKAGECONFIG[libpng] = "-feature-webengine-system-png,-no-feature-webengine-system-png,libpng" 63*4882a593SmuzhiyunPACKAGECONFIG[harfbuzz] = "-feature-webengine-system-harfbuzz,-no-feature-webengine-system-harfbuzz,harfbuzz" 64*4882a593SmuzhiyunPACKAGECONFIG[glib] = "-feature-webengine-system-glib,-no-feature-webengine-system-glib,glib-2.0" 65*4882a593SmuzhiyunPACKAGECONFIG[zlib] = "-feature-webengine-system-zlib,-no-feature-webengine-system-zlib,zlib" 66*4882a593SmuzhiyunPACKAGECONFIG[libxml2] = "-feature-webengine-system-libxml2,-no-feature-webengine-system-libxml2,libxml2" 67*4882a593SmuzhiyunPACKAGECONFIG[minizip] = "-feature-webengine-system-minizip,-no-feature-webengine-system-minizip,minizip" 68*4882a593SmuzhiyunPACKAGECONFIG[proprietary-codecs] = "-feature-webengine-proprietary-codecs,-no-feature-webengine-proprietary-codecs" 69*4882a593SmuzhiyunPACKAGECONFIG[pepper-plugins] = "-feature-webengine-pepper-plugins,-no-feature-webengine-pepper-plugins" 70*4882a593SmuzhiyunPACKAGECONFIG[printing-and-pdf] = "-feature-webengine-printing-and-pdf,-no-feature-webengine-printing-and-pdf" 71*4882a593SmuzhiyunPACKAGECONFIG[spellchecker] = "-feature-webengine-spellchecker,-no-feature-webengine-spellchecker" 72*4882a593SmuzhiyunPACKAGECONFIG[pulseaudio] = "-feature-webengine-pulseaudio,-no-feature-webengine-pulseaudio,pulseaudio" 73*4882a593Smuzhiyun 74*4882a593SmuzhiyunEXTRA_QMAKEVARS_CONFIGURE += "${PACKAGECONFIG_CONFARGS}" 75*4882a593Smuzhiyun 76*4882a593SmuzhiyunCOMPATIBLE_MACHINE = "(-)" 77*4882a593SmuzhiyunCOMPATIBLE_MACHINE:x86 = "(.*)" 78*4882a593SmuzhiyunCOMPATIBLE_MACHINE:x86-64 = "(.*)" 79*4882a593SmuzhiyunCOMPATIBLE_MACHINE:armv6 = "(.*)" 80*4882a593SmuzhiyunCOMPATIBLE_MACHINE:armv7a = "(.*)" 81*4882a593SmuzhiyunCOMPATIBLE_MACHINE:armv7ve = "(.*)" 82*4882a593SmuzhiyunCOMPATIBLE_MACHINE:aarch64 = "(.*)" 83*4882a593Smuzhiyun 84*4882a593Smuzhiyuninherit qmake5 85*4882a593Smuzhiyuninherit gettext 86*4882a593Smuzhiyuninherit perlnative 87*4882a593Smuzhiyuninherit features_check 88*4882a593Smuzhiyun 89*4882a593Smuzhiyuninherit ${@bb.utils.contains("BBFILE_COLLECTIONS", "meta-python2", "pythonnative", "", d)} 90*4882a593Smuzhiyun 91*4882a593Smuzhiyunpython() { 92*4882a593Smuzhiyun if 'meta-python2' not in d.getVar('BBFILE_COLLECTIONS').split(): 93*4882a593Smuzhiyun raise bb.parse.SkipRecipe('Requires meta-python2 to be present.') 94*4882a593Smuzhiyun} 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun# Static builds of QtWebEngine aren't supported. 98*4882a593SmuzhiyunCONFLICT_DISTRO_FEATURES = "qt5-static" 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun# we don't want gettext.bbclass to append --enable-nls 101*4882a593Smuzhiyundef gettext_oeconf(d): 102*4882a593Smuzhiyun return "" 103*4882a593Smuzhiyun 104*4882a593Smuzhiyunrequire qt5.inc 105*4882a593Smuzhiyunrequire qt5-git.inc 106*4882a593Smuzhiyun 107*4882a593Smuzhiyunexport GN_PKG_CONFIG_HOST = "${STAGING_BINDIR_NATIVE}/pkg-config-native" 108*4882a593Smuzhiyunexport GN_HOST_TOOLCHAIN_EXTRA_CPPFLAGS = "-I${STAGING_DIR_NATIVE}/usr/include" 109*4882a593Smuzhiyunexport NINJAFLAGS="${PARALLEL_MAKE}" 110*4882a593Smuzhiyun 111*4882a593Smuzhiyundo_configure() { 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun # qmake can't find the OE_QMAKE_* variables on it's own so directly passing them as 114*4882a593Smuzhiyun # arguments here 115*4882a593Smuzhiyun ${OE_QMAKE_QMAKE} ${EXTRA_QMAKEVARS_PRE} ${S} \ 116*4882a593Smuzhiyun QMAKE_CXX="${OE_QMAKE_CXX}" \ 117*4882a593Smuzhiyun QMAKE_CC="${OE_QMAKE_CC}" \ 118*4882a593Smuzhiyun QMAKE_LINK="${OE_QMAKE_LINK}" \ 119*4882a593Smuzhiyun QMAKE_CFLAGS="${OE_QMAKE_CFLAGS}" \ 120*4882a593Smuzhiyun QMAKE_CXXFLAGS="${OE_QMAKE_CXXFLAGS}" \ 121*4882a593Smuzhiyun -after ${EXTRA_QMAKEVARS_POST} -- \ 122*4882a593Smuzhiyun ${EXTRA_QMAKEVARS_CONFIGURE} 123*4882a593Smuzhiyun} 124*4882a593Smuzhiyun 125*4882a593Smuzhiyundo_configure:prepend:libc-musl() { 126*4882a593Smuzhiyun for f in `find ${S}/src/3rdparty/chromium/third_party/ffmpeg/chromium/config/Chromium/linux/ -name config.h -o -name config.asm`; do 127*4882a593Smuzhiyun sed -i -e "s:define HAVE_SYSCTL 1:define HAVE_SYSCTL 0:g" $f 128*4882a593Smuzhiyun done 129*4882a593Smuzhiyun} 130*4882a593Smuzhiyun 131*4882a593Smuzhiyundo_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+" 132*4882a593Smuzhiyun 133*4882a593Smuzhiyundo_install:append() { 134*4882a593Smuzhiyun sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@[^ ]*${B}[^ ]* @@g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc 135*4882a593Smuzhiyun} 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun# for /usr/share/qt5/qtwebengine_resources.pak 138*4882a593SmuzhiyunFILES:${PN} += "${OE_QMAKE_PATH_QT_TRANSLATIONS} ${OE_QMAKE_PATH_QT_DATA}" 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun# Chromium uses libpci to determine which optimizations/workarounds to apply 141*4882a593SmuzhiyunRDEPENDS:${PN}:append:x86 = " libpci" 142*4882a593Smuzhiyun 143*4882a593SmuzhiyunRDEPENDS:${PN}-examples += " \ 144*4882a593Smuzhiyun ${PN}-qmlplugins \ 145*4882a593Smuzhiyun qtquickcontrols-qmlplugins \ 146*4882a593Smuzhiyun qtdeclarative-qmlplugins \ 147*4882a593Smuzhiyun" 148*4882a593Smuzhiyun 149*4882a593SmuzhiyunQT_MODULE_BRANCH_CHROMIUM = "87-based" 150*4882a593Smuzhiyun 151*4882a593SmuzhiyunQT_MODULE_BRANCH = "5.15.10" 152*4882a593SmuzhiyunPV = "5.15.10+git${SRCPV}" 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtwebengine/commits/b5.15-glibc 155*4882a593Smuzhiyun# 5.15-glibc.meta-qt5.15 156*4882a593SmuzhiyunSRC_URI += " \ 157*4882a593Smuzhiyun ${QT_GIT}/qtwebengine-chromium.git;name=chromium;branch=${QT_MODULE_BRANCH_CHROMIUM};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty \ 158*4882a593Smuzhiyun file://0001-Force-host-toolchain-configuration.patch \ 159*4882a593Smuzhiyun file://0002-qmake.conf-lower-MODULE_VERSION-to-5.15.X.patch \ 160*4882a593Smuzhiyun" 161*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtwebengine/commits/b5.15 162*4882a593Smuzhiyun# 5.15.meta-qt5.15 163*4882a593SmuzhiyunSRC_URI:append:libc-musl = "\ 164*4882a593Smuzhiyun file://0003-musl-don-t-use-pvalloc-as-it-s-not-available-on-musl.patch \ 165*4882a593Smuzhiyun file://0004-musl-link-against-libexecinfo.patch \ 166*4882a593Smuzhiyun file://0005-mkspecs-Allow-builds-with-libc-glibc.patch \ 167*4882a593Smuzhiyun" 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtwebengine-chromium/commits/87-based-glibc 170*4882a593Smuzhiyun# 87-based-glibc.meta-qt5.9 171*4882a593SmuzhiyunSRC_URI += " \ 172*4882a593Smuzhiyun file://chromium/0001-chromium-workaround-for-too-long-.rps-file-name.patch;patchdir=src/3rdparty \ 173*4882a593Smuzhiyun file://chromium/0002-chromium-fix-build-with-clang.patch;patchdir=src/3rdparty \ 174*4882a593Smuzhiyun file://chromium/0003-chromium-Exclude-CRC32-for-32bit-arm.patch;patchdir=src/3rdparty \ 175*4882a593Smuzhiyun file://chromium/0004-chromium-Do-not-try-to-set-the-guessed-values-for.patch;patchdir=src/3rdparty \ 176*4882a593Smuzhiyun file://chromium/0005-chromium-fix-build-after-y2038-changes-in-glibc.patch;patchdir=src/3rdparty \ 177*4882a593Smuzhiyun file://chromium/0006-chromium-Fix-build-on-32bit-arches-with-64bit-time_t.patch;patchdir=src/3rdparty \ 178*4882a593Smuzhiyun file://chromium/0007-chromium-Include-cstddef-for-size_t-definition.patch;patchdir=src/3rdparty \ 179*4882a593Smuzhiyun file://chromium/0008-chromium-Move-CharAllocator-definition-to-a-header-f.patch;patchdir=src/3rdparty \ 180*4882a593Smuzhiyun file://chromium/0009-chromium-Link-v8-with-libatomic-on-x86.patch;patchdir=src/3rdparty \ 181*4882a593Smuzhiyun file://chromium/0010-chromium-icu-use-system-library-only-targets.patch;patchdir=src/3rdparty \ 182*4882a593Smuzhiyun file://chromium/0011-chromium-Remove-TRUE-to-prep-landing-of-icu68.patch;patchdir=src/3rdparty \ 183*4882a593Smuzhiyun file://chromium/0012-chromium-skia-Fix-build-with-gcc-12.patch;patchdir=src/3rdparty \ 184*4882a593Smuzhiyun file://chromium/0013-Remove-unsetting-_FILE_OFFSET_BITS.patch;patchdir=src/3rdparty \ 185*4882a593Smuzhiyun" 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun# Patches from https://github.com/meta-qt5/qtwebengine-chromium/commits/87-based 188*4882a593Smuzhiyun# 87-based.meta-qt5.9 189*4882a593SmuzhiyunSRC_URI:append:libc-musl = "\ 190*4882a593Smuzhiyun file://chromium/0013-chromium-musl-sandbox-Define-TEMP_FAILURE_RETRY-if-n.patch;patchdir=src/3rdparty \ 191*4882a593Smuzhiyun file://chromium/0014-chromium-musl-Avoid-mallinfo-APIs-on-non-glibc-linux.patch;patchdir=src/3rdparty \ 192*4882a593Smuzhiyun file://chromium/0015-chromium-musl-include-fcntl.h-for-loff_t.patch;patchdir=src/3rdparty \ 193*4882a593Smuzhiyun file://chromium/0016-chromium-musl-use-off64_t-instead-of-the-internal-__.patch;patchdir=src/3rdparty \ 194*4882a593Smuzhiyun file://chromium/0017-chromium-musl-linux-glibc-make-the-distinction.patch;patchdir=src/3rdparty \ 195*4882a593Smuzhiyun file://chromium/0018-chromium-musl-Define-res_ninit-and-res_nclose-for-no.patch;patchdir=src/3rdparty \ 196*4882a593Smuzhiyun file://chromium/0019-chromium-musl-Do-not-define-__sbrk-on-musl.patch;patchdir=src/3rdparty \ 197*4882a593Smuzhiyun file://chromium/0020-chromium-musl-Adjust-default-pthread-stack-size.patch;patchdir=src/3rdparty \ 198*4882a593Smuzhiyun file://chromium/0021-chromium-musl-elf_reader.cc-include-sys-reg.h-to-get.patch;patchdir=src/3rdparty \ 199*4882a593Smuzhiyun file://chromium/0022-chromium-musl-pread-pwrite.patch;patchdir=src/3rdparty \ 200*4882a593Smuzhiyun file://chromium/0023-chromium-musl-initialize-msghdr-in-a-compatible-mann.patch;patchdir=src/3rdparty \ 201*4882a593Smuzhiyun" 202*4882a593Smuzhiyun 203*4882a593SmuzhiyunSRCREV_qtwebengine = "c7e716ef1ffd63a8ab1f4dbf879230849eb3b505" 204*4882a593Smuzhiyun# this is 3 commits ahead of what submodule in 5.15.10 uses (caba2fcb0fe8a8d213c4c79d26da3bb88eee61c7), but contains useful fix: 205*4882a593SmuzhiyunSRCREV_chromium = "ecc2bb74f1f7140fc52650042299be18e826b27b" 206*4882a593SmuzhiyunSRCREV = "${SRCREV_qtwebengine}" 207*4882a593Smuzhiyun 208*4882a593SmuzhiyunSRCREV_FORMAT = "qtwebengine_chromium" 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun# WARNING: qtwebengine-5.5.99+5.6.0-rc+gitAUTOINC+3f02c25de4_779a2388fc-r0 do_package_qa: QA Issue: ELF binary '/OE/build/oe-core/tmp-glibc/work/i586-oe-linux/qtwebengine/5.5.99+5.6.0-rc+gitAUTOINC+3f02c25de4_779a2388fc-r0/packages-split/qtwebengine/usr/lib/libQt5WebEngineCore.so.5.6.0' has relocations in .text [textrel] 211*4882a593SmuzhiyunINSANE_SKIP:${PN} += "textrel" 212