diff options
author | Samuli Piippo <samuli.piippo@qt.io> | 2017-03-15 08:39:13 +0200 |
---|---|---|
committer | Samuli Piippo <samuli.piippo@qt.io> | 2017-03-22 14:07:02 +0000 |
commit | 1d4ab7d047df4e08249b9c3d22bff78c02caf8ed (patch) | |
tree | 51cc88f9a63e854ce3d568319711caddff8c5aed | |
parent | b13e04ff53a9b5c232487a61fd0a91073d719dce (diff) |
qtwebengine: update to use gn based build system
QtWebEngine switched from gyp to gn when generating ninja files.
Parts of the build need to be done using host toolchain, which
needs to be patched to work with bitbake builds.
Change-Id: I5241f215fbaf49a2dedd8699b7984de33f38b5d3
Reviewed-by: Mikko Gronoff <mikko.gronoff@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
3 files changed, 93 insertions, 47 deletions
diff --git a/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch b/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch new file mode 100644 index 00000000..65d170c5 --- /dev/null +++ b/recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch @@ -0,0 +1,71 @@ +From 5c879db32cde9bee9c9073842ecc281172f19453 Mon Sep 17 00:00:00 2001 +From: Samuli Piippo <samuli.piippo@qt.io> +Date: Wed, 15 Mar 2017 13:53:28 +0200 +Subject: [PATCH] Force host toolchain configuration + +Force gcc/g++ to be used for parts using host toolchain, since +the option(host_build) does not work in yocto builds. + +Upstream-Status: Inappropriate [OE specific] +Signed-off-by: Samuli Piippo <samuli.piippo@qt.io> +--- + src/buildtools/configure_host.pro | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/buildtools/configure_host.pro b/src/buildtools/configure_host.pro +index d8d731d..89dade4 100644 +--- a/src/buildtools/configure_host.pro ++++ b/src/buildtools/configure_host.pro +@@ -16,9 +16,9 @@ GN_CONTENTS = \ + "import(\"//build/config/sysroot.gni\")" \ + "import(\"//build/toolchain/gcc_toolchain.gni\")" \ + "gcc_toolchain(\"host\") {" \ +-" cc = \"$$which($$QMAKE_CC)\" " \ +-" cxx = \"$$which($$QMAKE_CXX)\" " \ +-" ld = \"$$which($$QMAKE_LINK)\" " \ ++" cc = \"$$which(gcc)\" " \ ++" cxx = \"$$which(g++)\" " \ ++" ld = \"$$which(g++)\" " \ + " ar = \"$$which(ar)\" " \ + " nm = \"$$which(nm)\" " \ + " toolchain_args = { " \ +@@ -27,9 +27,9 @@ GN_CONTENTS = \ + " } " \ + "}" \ + "gcc_toolchain(\"v8_snapshot\") {" \ +-" cc = \"$$which($$QMAKE_CC)\" " \ +-" cxx = \"$$which($$QMAKE_CXX)\" " \ +-" ld = \"$$which($$QMAKE_LINK)\" " \ ++" cc = \"$$which(gcc)\" " \ ++" cxx = \"$$which(g++)\" " \ ++" ld = \"$$which(g++)\" " \ + " ar = \"$$which(ar)\" " \ + " nm = \"$$which(nm)\" " \ + " toolchain_args = { " \ +diff --git a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py +index 75b9690..601f688 100755 +--- a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py ++++ b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py +@@ -298,14 +298,14 @@ def write_gn_ninja(path, root_gen_dir, options): + ld = os.environ.get('LD', 'link.exe') + ar = os.environ.get('AR', 'lib.exe') + else: +- cc = os.environ.get('CC', 'cc') +- cxx = os.environ.get('CXX', 'c++') +- ld = os.environ.get('LD', cxx) +- ar = os.environ.get('AR', 'ar') +- +- cflags = os.environ.get('CFLAGS', '').split() +- cflags_cc = os.environ.get('CXXFLAGS', '').split() +- ldflags = os.environ.get('LDFLAGS', '').split() ++ cc = os.environ.get('CC_host', 'cc') ++ cxx = os.environ.get('CXX_host', 'c++') ++ ld = os.environ.get('LD_host', cxx) ++ ar = os.environ.get('AR_host', 'ar') ++ ++ cflags = os.environ.get('CFLAGS_host', '').split() ++ cflags_cc = os.environ.get('CXXFLAGS_host', '').split() ++ ldflags = os.environ.get('LDFLAGS_host', '').split() + include_dirs = [root_gen_dir, SRC_ROOT] + libs = [] + diff --git a/recipes-qt/qt5/qtwebengine/0001-chromium-base.gypi-include-atomicops_internals_x86_g.patch b/recipes-qt/qt5/qtwebengine/0001-chromium-base.gypi-include-atomicops_internals_x86_g.patch deleted file mode 100644 index ccd43e21..00000000 --- a/recipes-qt/qt5/qtwebengine/0001-chromium-base.gypi-include-atomicops_internals_x86_g.patch +++ /dev/null @@ -1,24 +0,0 @@ -From db56cd0fd185a9f3858f5aa6e95b24e63dee119f Mon Sep 17 00:00:00 2001 -From: Martin Jansa <Martin.Jansa@gmail.com> -Date: Fri, 3 Oct 2014 03:52:11 +0200 -Subject: [PATCH] <chromium> base.gypi: include atomicops_internals_x86_gcc.cc - when building for x64 arch - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> ---- - src/3rdparty/chromium/base/base.gypi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/3rdparty/chromium/base/base.gypi b/src/3rdparty/chromium/base/base.gypi -index 63c3f76..331c975 100644 ---- a/src/3rdparty/chromium/base/base.gypi -+++ b/src/3rdparty/chromium/base/base.gypi -@@ -801,7 +801,7 @@ - ['include', '^nix/'], - ], - }], -- ['use_qt==1 and target_arch=="ia32"', { -+ ['use_qt==1 and target_arch=="ia32" or target_arch=="x64"', { - 'sources/': [ - ['include', 'atomicops_internals_x86_gcc.cc'], - ], diff --git a/recipes-qt/qt5/qtwebengine_git.bb b/recipes-qt/qt5/qtwebengine_git.bb index 9187a331..78a78f8b 100644 --- a/recipes-qt/qt5/qtwebengine_git.bb +++ b/recipes-qt/qt5/qtwebengine_git.bb @@ -14,6 +14,7 @@ LIC_FILES_CHKSUM = " \ DEPENDS += " \ ninja-native \ + yasm-native \ qtwebchannel \ qtbase qtdeclarative qtxmlpatterns qtquickcontrols \ qtlocation \ @@ -23,8 +24,8 @@ DEPENDS += " \ ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa-lib', '', d)} \ " -DEPENDS += "yasm-native" EXTRA_QMAKEVARS_PRE += "GYP_CONFIG+=use_system_yasm GYP_CONFIG+=generate_character_data=0" +EXTRA_QMAKEVARS_CONFIGURE += "-feature-system-ninja -no-feature-system-gn" # To use system ffmpeg you need to enable also libwebp, opus, vpx # Only depenedencies available in oe-core are enabled by default @@ -61,35 +62,33 @@ def gettext_oeconf(d): require qt5.inc require qt5-git.inc -export NINJA_PATH="${STAGING_BINDIR_NATIVE}/ninja" - do_configure() { - # replace LD with CXX, to workaround a possible gyp inheritssue? - export LD="${CXX}" - export CC="${CC}" - export CXX="${CXX}" - export CC_host="gcc" - export CXX_host="g++" - export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}" - export QMAKE_CACHE_EVAL="${PACKAGECONFIG_CONFARGS}" - # Disable autodetection from sysroot: - sed -i 's/packagesExist([^)]*vpx[^)]*):/false:/g; s/config_libvpx:/false:/g; s/config_srtp:/false:/g; s/config_snappy:/false:/g; s/packagesExist(nss):/false:/g; s/packagesExist(minizip, zlib):/false:/g; s/packagesExist(libwebp,libwebpdemux):/false:/g; s/packagesExist(libxml-2.0,libxslt):/false:/g; s/^ *packagesExist($$package):/false:/g' ${S}/tools/qmake/mkspecs/features/configure.prf + sed -e 's/packagesExist([^)]*vpx[^)]*):/false:/g'\ + -e 's/config_libvpx:/false:/g' \ + -e 's/config_srtp:/false:/g' \ + -e 's/config_snappy:/false:/g' \ + -e 's/packagesExist(nss):/false:/g' \ + -e 's/packagesExist(minizip, zlib):/false:/g' \ + -e 's/packagesExist(libwebp,libwebpdemux):/false:/g' \ + -e 's/packagesExist(libxml-2.0,libxslt):/false:/g'\ + -e 's/^ *packagesExist($$package):/false:/g' \ + -i ${S}/tools/qmake/mkspecs/features/configure.prf # qmake can't find the OE_QMAKE_* variables on it's own so directly passing them as # arguments here - ${OE_QMAKE_QMAKE} -r ${EXTRA_QMAKEVARS_PRE} ${S} \ - QMAKE_CXX="${OE_QMAKE_CXX}" QMAKE_CC="${OE_QMAKE_CC}" \ + ${OE_QMAKE_QMAKE} ${EXTRA_QMAKEVARS_PRE} ${S} \ + QMAKE_CXX="${OE_QMAKE_CXX}" \ + QMAKE_CC="${OE_QMAKE_CC}" \ QMAKE_LINK="${OE_QMAKE_LINK}" \ QMAKE_CFLAGS="${OE_QMAKE_CFLAGS}" \ QMAKE_CXXFLAGS="${OE_QMAKE_CXXFLAGS}" \ - QMAKE_AR="${OE_QMAKE_AR} cqs" \ - -after ${EXTRA_QMAKEVARS_POST} + -after ${EXTRA_QMAKEVARS_POST} -- \ + ${EXTRA_QMAKEVARS_CONFIGURE} } do_install_append() { - rmdir ${D}${OE_QMAKE_PATH_PLUGINS}/${BPN} ${D}${OE_QMAKE_PATH_PLUGINS} || true - sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@-L${B}[^ ]* @ @g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc + sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@[^ ]*${B}[^ ]* @@g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc } PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src" @@ -102,7 +101,7 @@ RDEPENDS_${PN}-examples += " \ qtdeclarative-qmlplugins \ " -QT_MODULE_BRANCH_CHROMIUM = "53-based" +QT_MODULE_BRANCH_CHROMIUM = "55-based" SRC_URI += " \ ${QT_GIT}/qtwebengine-chromium.git;name=chromium;branch=${QT_MODULE_BRANCH_CHROMIUM};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty \ @@ -111,12 +110,12 @@ SRC_URI += " \ file://0003-functions.prf-allow-build-for-linux-oe-g-platform.patch \ file://0004-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch \ file://0005-Include-dependency-to-QCoreApplication-translate.patch \ - file://0001-chromium-base.gypi-include-atomicops_internals_x86_g.patch \ file://0002-chromium-Change-false-to-FALSE-and-1-to-TRUE-FIX-qtw.patch \ + file://0001-Force-host-toolchain-configuration.patch \ " -SRCREV_qtwebengine = "cd475d5727becd6ec4e7605d335721355e049354" -SRCREV_chromium = "cd3417bc8b5bae4cdc04a9dd714adadacc03b28d" +SRCREV_qtwebengine = "29afdb0a34e425728ccf85b8421e9b1aadb22f45" +SRCREV_chromium = "049134677a607781ab9508e7b769b2055d714543" SRCREV = "${SRCREV_qtwebengine}" SRCREV_FORMAT = "qtwebengine_chromium" |