summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuli Piippo <samuli.piippo@qt.io>2017-03-15 08:39:13 +0200
committerSamuli Piippo <samuli.piippo@qt.io>2017-03-22 14:07:02 +0000
commit1d4ab7d047df4e08249b9c3d22bff78c02caf8ed (patch)
tree51cc88f9a63e854ce3d568319711caddff8c5aed
parentb13e04ff53a9b5c232487a61fd0a91073d719dce (diff)
downloadmeta-qt5-1d4ab7d047df4e08249b9c3d22bff78c02caf8ed.tar.gz
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>
-rw-r--r--recipes-qt/qt5/qtwebengine/0001-Force-host-toolchain-configuration.patch71
-rw-r--r--recipes-qt/qt5/qtwebengine/0001-chromium-base.gypi-include-atomicops_internals_x86_g.patch24
-rw-r--r--recipes-qt/qt5/qtwebengine_git.bb45
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 @@
1From 5c879db32cde9bee9c9073842ecc281172f19453 Mon Sep 17 00:00:00 2001
2From: Samuli Piippo <samuli.piippo@qt.io>
3Date: Wed, 15 Mar 2017 13:53:28 +0200
4Subject: [PATCH] Force host toolchain configuration
5
6Force gcc/g++ to be used for parts using host toolchain, since
7the option(host_build) does not work in yocto builds.
8
9Upstream-Status: Inappropriate [OE specific]
10Signed-off-by: Samuli Piippo <samuli.piippo@qt.io>
11---
12 src/buildtools/configure_host.pro | 12 ++++++------
13 1 file changed, 6 insertions(+), 6 deletions(-)
14
15diff --git a/src/buildtools/configure_host.pro b/src/buildtools/configure_host.pro
16index d8d731d..89dade4 100644
17--- a/src/buildtools/configure_host.pro
18+++ b/src/buildtools/configure_host.pro
19@@ -16,9 +16,9 @@ GN_CONTENTS = \
20 "import(\"//build/config/sysroot.gni\")" \
21 "import(\"//build/toolchain/gcc_toolchain.gni\")" \
22 "gcc_toolchain(\"host\") {" \
23-" cc = \"$$which($$QMAKE_CC)\" " \
24-" cxx = \"$$which($$QMAKE_CXX)\" " \
25-" ld = \"$$which($$QMAKE_LINK)\" " \
26+" cc = \"$$which(gcc)\" " \
27+" cxx = \"$$which(g++)\" " \
28+" ld = \"$$which(g++)\" " \
29 " ar = \"$$which(ar)\" " \
30 " nm = \"$$which(nm)\" " \
31 " toolchain_args = { " \
32@@ -27,9 +27,9 @@ GN_CONTENTS = \
33 " } " \
34 "}" \
35 "gcc_toolchain(\"v8_snapshot\") {" \
36-" cc = \"$$which($$QMAKE_CC)\" " \
37-" cxx = \"$$which($$QMAKE_CXX)\" " \
38-" ld = \"$$which($$QMAKE_LINK)\" " \
39+" cc = \"$$which(gcc)\" " \
40+" cxx = \"$$which(g++)\" " \
41+" ld = \"$$which(g++)\" " \
42 " ar = \"$$which(ar)\" " \
43 " nm = \"$$which(nm)\" " \
44 " toolchain_args = { " \
45diff --git a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
46index 75b9690..601f688 100755
47--- a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
48+++ b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
49@@ -298,14 +298,14 @@ def write_gn_ninja(path, root_gen_dir, options):
50 ld = os.environ.get('LD', 'link.exe')
51 ar = os.environ.get('AR', 'lib.exe')
52 else:
53- cc = os.environ.get('CC', 'cc')
54- cxx = os.environ.get('CXX', 'c++')
55- ld = os.environ.get('LD', cxx)
56- ar = os.environ.get('AR', 'ar')
57-
58- cflags = os.environ.get('CFLAGS', '').split()
59- cflags_cc = os.environ.get('CXXFLAGS', '').split()
60- ldflags = os.environ.get('LDFLAGS', '').split()
61+ cc = os.environ.get('CC_host', 'cc')
62+ cxx = os.environ.get('CXX_host', 'c++')
63+ ld = os.environ.get('LD_host', cxx)
64+ ar = os.environ.get('AR_host', 'ar')
65+
66+ cflags = os.environ.get('CFLAGS_host', '').split()
67+ cflags_cc = os.environ.get('CXXFLAGS_host', '').split()
68+ ldflags = os.environ.get('LDFLAGS_host', '').split()
69 include_dirs = [root_gen_dir, SRC_ROOT]
70 libs = []
71
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 @@
1From db56cd0fd185a9f3858f5aa6e95b24e63dee119f Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Fri, 3 Oct 2014 03:52:11 +0200
4Subject: [PATCH] <chromium> base.gypi: include atomicops_internals_x86_gcc.cc
5 when building for x64 arch
6
7Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
8---
9 src/3rdparty/chromium/base/base.gypi | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/src/3rdparty/chromium/base/base.gypi b/src/3rdparty/chromium/base/base.gypi
13index 63c3f76..331c975 100644
14--- a/src/3rdparty/chromium/base/base.gypi
15+++ b/src/3rdparty/chromium/base/base.gypi
16@@ -801,7 +801,7 @@
17 ['include', '^nix/'],
18 ],
19 }],
20- ['use_qt==1 and target_arch=="ia32"', {
21+ ['use_qt==1 and target_arch=="ia32" or target_arch=="x64"', {
22 'sources/': [
23 ['include', 'atomicops_internals_x86_gcc.cc'],
24 ],
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 = " \
14 14
15DEPENDS += " \ 15DEPENDS += " \
16 ninja-native \ 16 ninja-native \
17 yasm-native \
17 qtwebchannel \ 18 qtwebchannel \
18 qtbase qtdeclarative qtxmlpatterns qtquickcontrols \ 19 qtbase qtdeclarative qtxmlpatterns qtquickcontrols \
19 qtlocation \ 20 qtlocation \
@@ -23,8 +24,8 @@ DEPENDS += " \
23 ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa-lib', '', d)} \ 24 ${@bb.utils.contains('DISTRO_FEATURES', 'alsa', 'alsa-lib', '', d)} \
24" 25"
25 26
26DEPENDS += "yasm-native"
27EXTRA_QMAKEVARS_PRE += "GYP_CONFIG+=use_system_yasm GYP_CONFIG+=generate_character_data=0" 27EXTRA_QMAKEVARS_PRE += "GYP_CONFIG+=use_system_yasm GYP_CONFIG+=generate_character_data=0"
28EXTRA_QMAKEVARS_CONFIGURE += "-feature-system-ninja -no-feature-system-gn"
28 29
29# To use system ffmpeg you need to enable also libwebp, opus, vpx 30# To use system ffmpeg you need to enable also libwebp, opus, vpx
30# Only depenedencies available in oe-core are enabled by default 31# Only depenedencies available in oe-core are enabled by default
@@ -61,35 +62,33 @@ def gettext_oeconf(d):
61require qt5.inc 62require qt5.inc
62require qt5-git.inc 63require qt5-git.inc
63 64
64export NINJA_PATH="${STAGING_BINDIR_NATIVE}/ninja"
65
66do_configure() { 65do_configure() {
67 # replace LD with CXX, to workaround a possible gyp inheritssue?
68 export LD="${CXX}"
69 export CC="${CC}"
70 export CXX="${CXX}"
71 export CC_host="gcc"
72 export CXX_host="g++"
73 export QMAKE_MAKE_ARGS="${EXTRA_OEMAKE}"
74 export QMAKE_CACHE_EVAL="${PACKAGECONFIG_CONFARGS}"
75
76 # Disable autodetection from sysroot: 66 # Disable autodetection from sysroot:
77 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 67 sed -e 's/packagesExist([^)]*vpx[^)]*):/false:/g'\
68 -e 's/config_libvpx:/false:/g' \
69 -e 's/config_srtp:/false:/g' \
70 -e 's/config_snappy:/false:/g' \
71 -e 's/packagesExist(nss):/false:/g' \
72 -e 's/packagesExist(minizip, zlib):/false:/g' \
73 -e 's/packagesExist(libwebp,libwebpdemux):/false:/g' \
74 -e 's/packagesExist(libxml-2.0,libxslt):/false:/g'\
75 -e 's/^ *packagesExist($$package):/false:/g' \
76 -i ${S}/tools/qmake/mkspecs/features/configure.prf
78 77
79 # qmake can't find the OE_QMAKE_* variables on it's own so directly passing them as 78 # qmake can't find the OE_QMAKE_* variables on it's own so directly passing them as
80 # arguments here 79 # arguments here
81 ${OE_QMAKE_QMAKE} -r ${EXTRA_QMAKEVARS_PRE} ${S} \ 80 ${OE_QMAKE_QMAKE} ${EXTRA_QMAKEVARS_PRE} ${S} \
82 QMAKE_CXX="${OE_QMAKE_CXX}" QMAKE_CC="${OE_QMAKE_CC}" \ 81 QMAKE_CXX="${OE_QMAKE_CXX}" \
82 QMAKE_CC="${OE_QMAKE_CC}" \
83 QMAKE_LINK="${OE_QMAKE_LINK}" \ 83 QMAKE_LINK="${OE_QMAKE_LINK}" \
84 QMAKE_CFLAGS="${OE_QMAKE_CFLAGS}" \ 84 QMAKE_CFLAGS="${OE_QMAKE_CFLAGS}" \
85 QMAKE_CXXFLAGS="${OE_QMAKE_CXXFLAGS}" \ 85 QMAKE_CXXFLAGS="${OE_QMAKE_CXXFLAGS}" \
86 QMAKE_AR="${OE_QMAKE_AR} cqs" \ 86 -after ${EXTRA_QMAKEVARS_POST} -- \
87 -after ${EXTRA_QMAKEVARS_POST} 87 ${EXTRA_QMAKEVARS_CONFIGURE}
88} 88}
89 89
90do_install_append() { 90do_install_append() {
91 rmdir ${D}${OE_QMAKE_PATH_PLUGINS}/${BPN} ${D}${OE_QMAKE_PATH_PLUGINS} || true 91 sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@[^ ]*${B}[^ ]* @@g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc
92 sed -i 's@ -Wl,--start-group.*-Wl,--end-group@@g; s@-L${B}[^ ]* @ @g' ${D}${libdir}/pkgconfig/Qt5WebEngineCore.pc
93} 92}
94PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src" 93PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
95 94
@@ -102,7 +101,7 @@ RDEPENDS_${PN}-examples += " \
102 qtdeclarative-qmlplugins \ 101 qtdeclarative-qmlplugins \
103" 102"
104 103
105QT_MODULE_BRANCH_CHROMIUM = "53-based" 104QT_MODULE_BRANCH_CHROMIUM = "55-based"
106 105
107SRC_URI += " \ 106SRC_URI += " \
108 ${QT_GIT}/qtwebengine-chromium.git;name=chromium;branch=${QT_MODULE_BRANCH_CHROMIUM};protocol=${QT_GIT_PROTOCOL};destsuffix=git/src/3rdparty \ 107 ${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 += " \
111 file://0003-functions.prf-allow-build-for-linux-oe-g-platform.patch \ 110 file://0003-functions.prf-allow-build-for-linux-oe-g-platform.patch \
112 file://0004-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch \ 111 file://0004-WebEngine-qquickwebengineview_p_p.h-add-include-QCol.patch \
113 file://0005-Include-dependency-to-QCoreApplication-translate.patch \ 112 file://0005-Include-dependency-to-QCoreApplication-translate.patch \
114 file://0001-chromium-base.gypi-include-atomicops_internals_x86_g.patch \
115 file://0002-chromium-Change-false-to-FALSE-and-1-to-TRUE-FIX-qtw.patch \ 113 file://0002-chromium-Change-false-to-FALSE-and-1-to-TRUE-FIX-qtw.patch \
114 file://0001-Force-host-toolchain-configuration.patch \
116" 115"
117 116
118SRCREV_qtwebengine = "cd475d5727becd6ec4e7605d335721355e049354" 117SRCREV_qtwebengine = "29afdb0a34e425728ccf85b8421e9b1aadb22f45"
119SRCREV_chromium = "cd3417bc8b5bae4cdc04a9dd714adadacc03b28d" 118SRCREV_chromium = "049134677a607781ab9508e7b769b2055d714543"
120SRCREV = "${SRCREV_qtwebengine}" 119SRCREV = "${SRCREV_qtwebengine}"
121 120
122SRCREV_FORMAT = "qtwebengine_chromium" 121SRCREV_FORMAT = "qtwebengine_chromium"