summaryrefslogtreecommitdiffstats
path: root/recipes-qt/qt5/qtbase
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2015-05-28 14:52:48 +0200
committerMartin Jansa <Martin.Jansa@gmail.com>2015-05-28 14:52:48 +0200
commit3208763b8b3f65b17825ded4b2c9b9166d78f2b2 (patch)
tree9b4d2c0f4bf069f1f23c37e66be00041c192b271 /recipes-qt/qt5/qtbase
parent3fa7bb148ed40bd018ce51b5f20c0c8792638568 (diff)
downloadmeta-qt5-3208763b8b3f65b17825ded4b2c9b9166d78f2b2.tar.gz
qt5: rename <module>-git directories with patches to just <module>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Diffstat (limited to 'recipes-qt/qt5/qtbase')
-rw-r--r--recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch351
-rw-r--r--recipes-qt/qt5/qtbase/0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch39
-rw-r--r--recipes-qt/qt5/qtbase/0003-Add-external-hostbindir-option.patch233
-rw-r--r--recipes-qt/qt5/qtbase/0004-qt_module-Fix-pkgconfig-and-libtool-replacements.patch114
-rw-r--r--recipes-qt/qt5/qtbase/0005-Revert-eglfs-Print-the-chosen-config-in-debug-mode.patch97
-rw-r--r--recipes-qt/qt5/qtbase/0006-qeglplatformintegration-Undefine-CursorShape-from-X..patch30
-rw-r--r--recipes-qt/qt5/qtbase/0007-configure-bump-path-length-from-256-to-512-character.patch29
-rw-r--r--recipes-qt/qt5/qtbase/0008-eglfs-fix-egl-error-for-platforms-only-supporting-on.patch72
-rw-r--r--recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch157
-rw-r--r--recipes-qt/qt5/qtbase/0010-Make-Qt5GuiConfigExtras.cmake-find-gl-es-include-dir.patch42
-rw-r--r--recipes-qt/qt5/qtbase/0011-Always-build-uic.patch31
-rw-r--r--recipes-qt/qt5/qtbase/0011-qmake-don-t-build-it-in-configure-but-allow-to-build.patch68
-rw-r--r--recipes-qt/qt5/qtbase/0012-Add-external-hostbindir-option-for-native-sdk.patch108
-rw-r--r--recipes-qt/qt5/qtbase/0012-Set-paths-for-target-properly.patch72
-rw-r--r--recipes-qt/qt5/qtbase/0013-configure-preserve-built-qmake-and-swap-with-native-.patch30
-rw-r--r--recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake1
16 files changed, 1474 insertions, 0 deletions
diff --git a/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch b/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch
new file mode 100644
index 00000000..f34aed42
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch
@@ -0,0 +1,351 @@
1From 08f6be97c3f088fd8a2d752441c638093eedd990 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Mon, 15 Apr 2013 04:29:32 +0200
4Subject: [PATCH 01/12] Add linux-oe-g++ platform
5
6* This qmake.conf unlike other platforms reads most variables from
7 shell environment, because it's easier for qt recipes to export
8 *FLAGS or CC specific for given recipe
9
10* configure: add getQEvalMakeConf and getXQEvalMakeConf
11 Allow expansion of $(...) references from qmake.conf to generate
12 qmake environment from shell environment as exported by qmake5_base
13
14* configure: don't export SYSTEM_VARIABLES to .qmake.vars
15 linux-oe-g++ should handle this correctly and exporting LD as QMAKE_LINK is
16 causing issues as we need g++ to be used as linker
17
18* configure.prf: Allow to add extra arguments to make
19 sometimes we would like to add -e or define some variable and respect it from both
20 Makefiles used in configure tests and also Makefiles to build the application
21
22* OE_QMAKE_CXX in order to allow compiler version check to succeed
23 which allows WebKit to be enabled.
24
25* Other variables in order to let config.tests to use our -platform
26 settings
27
28* Add setBootstrapEvalVariable to bootstrap qmake with our environment
29 too, this allows us to use -platform linux-oe-g++ also for native
30 recipe
31
32* disable gdb_dwarf_index
33 * qmake is trying to call native gdb and we don't depend on gdb-native
34 (or even provide gdb-native)
35 * fixes errors like this:
36 /bin/sh: gdb: command not found
37 /bin/sh: line 0: test: -gt: unary operator expected
38 which are not fatal, but still misleading in do_configure output
39
40Upstream-Status: Inappropriate [embedded specific]
41 too OE specific, probably cannot be upstreamed
42
43Change-Id: I0591ed5da0d61d7cf1509d420e6b293582f1863c
44Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
45---
46 configure | 66 ++++++++++++++++-------
47 mkspecs/features/configure.prf | 4 +-
48 mkspecs/linux-oe-g++/qmake.conf | 40 ++++++++++++++
49 mkspecs/linux-oe-g++/qplatformdefs.h | 100 +++++++++++++++++++++++++++++++++++
50 4 files changed, 188 insertions(+), 22 deletions(-)
51 create mode 100644 mkspecs/linux-oe-g++/qmake.conf
52 create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h
53
54diff --git a/configure b/configure
55index 6ce6753..0a00d6d 100755
56--- a/configure
57+++ b/configure
58@@ -316,6 +316,16 @@ getQMakeConf()
59 getSingleQMakeVariable "$1" "$specvals"
60 }
61
62+# OE qmake.conf is reading some variables from shell env
63+# read them from qmake.conf, replace qmake () syntax with shell and eval
64+getQEvalMakeConf()
65+{
66+ VAL=`getQMakeConf "$1" | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'`
67+ EVAL=`eval "echo ${VAL}"`
68+# echo "Running getQEvalMakeConf: var='$1', val='`getQMakeConf \"$1\"`, val-sed='$VAL', eval='$EVAL'" >&2
69+ eval "echo ${VAL}"
70+}
71+
72 getXQMakeConf()
73 {
74 if [ -z "$xspecvals" ]; then
75@@ -325,6 +335,16 @@ getXQMakeConf()
76 getSingleQMakeVariable "$1" "$xspecvals"
77 }
78
79+# OE qmake.conf is reading some variables from shell env
80+# read them from qmake.conf, replace qmake () syntax with shell and eval
81+getXQEvalMakeConf()
82+{
83+ VAL=`getXQMakeConf "$1" | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'`
84+ EVAL=`eval "echo ${VAL}"`
85+# echo "Running getXQEvalMakeConf: var='$1', val='`getXQMakeConf \"$1\"`, val-sed='$VAL', eval='$EVAL'" >&2
86+ eval "echo ${VAL}"
87+}
88+
89 compilerSupportsFlag()
90 {
91 cat >conftest.cpp <<EOF
92@@ -541,21 +561,19 @@ fi
93 # initalize variables
94 #-------------------------------------------------------------------------------
95
96-SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS"
97-for varname in $SYSTEM_VARIABLES; do
98+# Export all OE variables for qmake.conf from shell env to QMakeVars
99+OE_VARIABLES="AR CC CFLAGS COMPILER CXX CXXFLAGS LDFLAGS LINK QT_CONFIG STRIP"
100+for varname in $OE_VARIABLES; do
101 qmakevarname="${varname}"
102- # use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS
103- if [ "${varname}" = "LDFLAGS" ]; then
104- qmakevarname="LFLAGS"
105- elif [ "${varname}" = "LD" ]; then
106- qmakevarname="LINK"
107- fi
108 cmd=`echo \
109-'if [ -n "\$'${varname}'" ]; then
110- QMakeVar set QMAKE_'${qmakevarname}' "\$'${varname}'"
111+'if [ -n "\$OE_QMAKE_'${varname}'" ]; then
112+ QMakeVar set OE_QMAKE_'${qmakevarname}' "\$OE_QMAKE_'${varname}'"
113+# echo "Exporting OE_QMAKE_'${qmakevarname}' value=\"\$OE_QMAKE_'${varname}'\"" >&2
114 fi'`
115 eval "$cmd"
116 done
117+
118+SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS"
119 # Use CC/CXX to run config.tests
120 mkdir -p "$outpath/config.tests"
121 rm -f "$outpath/config.tests/.qmake.cache"
122@@ -3178,7 +3196,7 @@ if [ "$XPLATFORM_MAC" = "yes" ]; then
123 [ "$CFG_QGTKSTYLE" = "auto" ] && CFG_QGTKSTYLE=no
124 fi
125
126-QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX`
127+QMAKE_CONF_COMPILER=`getXQEvalMakeConf QMAKE_CXX`
128
129 TEST_COMPILER=$QMAKE_CONF_COMPILER
130
131@@ -3216,7 +3234,7 @@ if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then
132 exit 1
133 fi
134 fi
135-TEST_COMPILER_CXXFLAGS=`getXQMakeConf QMAKE_CXXFLAGS`
136+TEST_COMPILER_CXXFLAGS=`getXQEvalMakeConf QMAKE_CXXFLAGS`
137
138 GCC_MACHINE_DUMP=
139 case "$TEST_COMPILER" in *g++) GCC_MACHINE_DUMP=$($TEST_COMPILER -dumpmachine);; esac
140@@ -3687,6 +3705,14 @@ setBootstrapVariable()
141 getQMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile"
142 }
143
144+# OE qmake.conf is reading some variables from shell env
145+# read them from qmake.conf, replace qmake () syntax with shell and eval
146+setBootstrapEvalVariable()
147+{
148+ getQEvalMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile"
149+}
150+
151+
152 # build qmake
153 if true; then ###[ '!' -f "$outpath/bin/qmake" ];
154 echo "Creating qmake..."
155@@ -3725,14 +3751,14 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
156 fi
157
158 [ "$CFG_SILENT" = "yes" ] && CC_TRANSFORM='s,^,\@,' || CC_TRANSFORM=
159- setBootstrapVariable QMAKE_CC CC "$CC_TRANSFORM"
160- setBootstrapVariable QMAKE_CXX CXX "$CC_TRANSFORM"
161- setBootstrapVariable QMAKE_CFLAGS
162- setBootstrapVariable QMAKE_CFLAGS_SPLIT_SECTIONS
163- setBootstrapVariable QMAKE_CXXFLAGS
164- setBootstrapVariable QMAKE_CXXFLAGS_SPLIT_SECTIONS
165- setBootstrapVariable QMAKE_LFLAGS
166- setBootstrapVariable QMAKE_LFLAGS_GCSECTIONS
167+ setBootstrapEvalVariable QMAKE_CC CC "$CC_TRANSFORM"
168+ setBootstrapEvalVariable QMAKE_CXX CXX "$CC_TRANSFORM"
169+ setBootstrapEvalVariable QMAKE_CFLAGS
170+ setBootstrapEvalVariable QMAKE_CFLAGS_SPLIT_SECTIONS
171+ setBootstrapEvalVariable QMAKE_CXXFLAGS
172+ setBootstrapEvalVariable QMAKE_CXXFLAGS_SPLIT_SECTIONS
173+ setBootstrapEvalVariable QMAKE_LFLAGS
174+ setBootstrapEvalVariable QMAKE_LFLAGS_GCSECTIONS
175
176 if [ "$CFG_RELEASE_QMAKE" = "yes" ]; then
177 setBootstrapVariable QMAKE_CFLAGS_RELEASE
178diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf
179index 6b37a04..dcf6025 100644
180--- a/mkspecs/features/configure.prf
181+++ b/mkspecs/features/configure.prf
182@@ -63,12 +63,12 @@ defineTest(qtCompileTest) {
183 }
184
185 # Clean up after previous run
186- exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean")
187+ exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS) distclean")
188
189 mkpath($$test_out_dir)|error("Aborting.")
190
191 qtRunLoggedCommand("$$test_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE)) -spec $$QMAKESPEC $$qmake_configs $$shell_quote($$test_dir)") {
192- qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE") {
193+ qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS)") {
194 log("yes$$escape_expand(\\n)")
195 msg = "test $$1 succeeded"
196 write_file($$QMAKE_CONFIG_LOG, msg, append)
197diff --git a/mkspecs/linux-oe-g++/qmake.conf b/mkspecs/linux-oe-g++/qmake.conf
198new file mode 100644
199index 0000000..2ad2810
200--- /dev/null
201+++ b/mkspecs/linux-oe-g++/qmake.conf
202@@ -0,0 +1,40 @@
203+#
204+# qmake configuration for linux-g++ with modifications for building with OpenEmbedded
205+#
206+
207+MAKEFILE_GENERATOR = UNIX
208+CONFIG += incremental
209+QMAKE_INCREMENTAL_STYLE = sublib
210+
211+include(../common/linux.conf)
212+
213+# QMAKE_<TOOL> (moc, uic, rcc) are gone, overwrite only ar and strip
214+QMAKE_AR = $(OE_QMAKE_AR) cqs
215+QMAKE_STRIP = $(OE_QMAKE_STRIP)
216+QMAKE_WAYLAND_SCANNER = $(OE_QMAKE_WAYLAND_SCANNER)
217+
218+include(../common/gcc-base-unix.conf)
219+
220+# *FLAGS from gcc-base.conf
221+QMAKE_CFLAGS += $(OE_QMAKE_CFLAGS)
222+QMAKE_CXXFLAGS += $(OE_QMAKE_CXXFLAGS)
223+QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS)
224+
225+include(../common/g++-unix.conf)
226+
227+# tc settings from g++-base.conf
228+QMAKE_COMPILER = $(OE_QMAKE_COMPILER) gcc
229+QMAKE_CC = $(OE_QMAKE_CC)
230+QMAKE_CXX = $(OE_QMAKE_CXX)
231+
232+QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS)
233+
234+QMAKE_LINK = $(OE_QMAKE_LINK)
235+QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK)
236+QMAKE_LINK_C = $(OE_QMAKE_LINK)
237+QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK)
238+
239+# for the SDK
240+isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG)
241+
242+load(qt_config)
243diff --git a/mkspecs/linux-oe-g++/qplatformdefs.h b/mkspecs/linux-oe-g++/qplatformdefs.h
244new file mode 100644
245index 0000000..dd12003
246--- /dev/null
247+++ b/mkspecs/linux-oe-g++/qplatformdefs.h
248@@ -0,0 +1,100 @@
249+/****************************************************************************
250+**
251+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
252+** Contact: http://www.qt-project.org/legal
253+**
254+** This file is part of the qmake spec of the Qt Toolkit.
255+**
256+** $QT_BEGIN_LICENSE:LGPL$
257+** Commercial License Usage
258+** Licensees holding valid commercial Qt licenses may use this file in
259+** accordance with the commercial license agreement provided with the
260+** Software or, alternatively, in accordance with the terms contained in
261+** a written agreement between you and Digia. For licensing terms and
262+** conditions see http://qt.digia.com/licensing. For further information
263+** use the contact form at http://qt.digia.com/contact-us.
264+**
265+** GNU Lesser General Public License Usage
266+** Alternatively, this file may be used under the terms of the GNU Lesser
267+** General Public License version 2.1 as published by the Free Software
268+** Foundation and appearing in the file LICENSE.LGPL included in the
269+** packaging of this file. Please review the following information to
270+** ensure the GNU Lesser General Public License version 2.1 requirements
271+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
272+**
273+** In addition, as a special exception, Digia gives you certain additional
274+** rights. These rights are described in the Digia Qt LGPL Exception
275+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
276+**
277+** GNU General Public License Usage
278+** Alternatively, this file may be used under the terms of the GNU
279+** General Public License version 3.0 as published by the Free Software
280+** Foundation and appearing in the file LICENSE.GPL included in the
281+** packaging of this file. Please review the following information to
282+** ensure the GNU General Public License version 3.0 requirements will be
283+** met: http://www.gnu.org/copyleft/gpl.html.
284+**
285+**
286+** $QT_END_LICENSE$
287+**
288+****************************************************************************/
289+
290+#ifndef QPLATFORMDEFS_H
291+#define QPLATFORMDEFS_H
292+
293+// Get Qt defines/settings
294+
295+#include "qglobal.h"
296+
297+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
298+
299+// 1) need to reset default environment if _BSD_SOURCE is defined
300+// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0
301+// 3) it seems older glibc need this to include the X/Open stuff
302+#ifndef _GNU_SOURCE
303+# define _GNU_SOURCE
304+#endif
305+
306+#include <unistd.h>
307+
308+
309+// We are hot - unistd.h should have turned on the specific APIs we requested
310+
311+#include <features.h>
312+#include <pthread.h>
313+#include <dirent.h>
314+#include <fcntl.h>
315+#include <grp.h>
316+#include <pwd.h>
317+#include <signal.h>
318+
319+#include <sys/types.h>
320+#include <sys/ioctl.h>
321+#include <sys/ipc.h>
322+#include <sys/time.h>
323+#include <sys/shm.h>
324+#include <sys/socket.h>
325+#include <sys/stat.h>
326+#include <sys/wait.h>
327+#include <netinet/in.h>
328+#ifndef QT_NO_IPV6IFNAME
329+#include <net/if.h>
330+#endif
331+
332+#define QT_USE_XOPEN_LFS_EXTENSIONS
333+#include "../common/posix/qplatformdefs.h"
334+
335+#undef QT_SOCKLEN_T
336+
337+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
338+#define QT_SOCKLEN_T socklen_t
339+#else
340+#define QT_SOCKLEN_T int
341+#endif
342+
343+#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
344+#define QT_SNPRINTF ::snprintf
345+#define QT_VSNPRINTF ::vsnprintf
346+#endif
347+
348+#endif // QPLATFORMDEFS_H
349--
3502.3.5
351
diff --git a/recipes-qt/qt5/qtbase/0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch b/recipes-qt/qt5/qtbase/0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch
new file mode 100644
index 00000000..ec2bcb49
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch
@@ -0,0 +1,39 @@
1From 31fa051d53e26301ef6abf72bd3f992d7c16cad2 Mon Sep 17 00:00:00 2001
2From: Holger Freyther <zecke@selfish.org>
3Date: Wed, 26 Sep 2012 17:22:30 +0200
4Subject: [PATCH 02/12] qlibraryinfo: allow to set qt.conf from the outside
5 using the environment
6
7Allow to set a qt.conf from the outside using the environment. This allows
8to inject new prefixes and other paths into qmake. This is needed when using
9the same qmake binary to build qt/x11 and qt/embedded
10
11Upstream-Status: Inappropriate [embedded specific]
12 again very OE specific to read everything from environment (reusing the same
13 qmake from sstate and replacing all configured paths in it with qt.conf from
14 environment).
15
16Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
17---
18 src/corelib/global/qlibraryinfo.cpp | 5 ++++-
19 1 file changed, 4 insertions(+), 1 deletion(-)
20
21diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
22index d66007b..91ca643 100644
23--- a/src/corelib/global/qlibraryinfo.cpp
24+++ b/src/corelib/global/qlibraryinfo.cpp
25@@ -138,7 +138,10 @@ QLibrarySettings::QLibrarySettings()
26
27 QSettings *QLibraryInfoPrivate::findConfiguration()
28 {
29- QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
30+ QByteArray config = getenv("QT_CONF_PATH");
31+ QString qtconfig = QFile::decodeName(config);
32+ if(!QFile::exists(qtconfig))
33+ qtconfig = QStringLiteral(":/qt/etc/qt.conf");
34 #ifdef QT_BOOTSTRAPPED
35 if(!QFile::exists(qtconfig))
36 qtconfig = qt_libraryInfoFile();
37--
382.3.5
39
diff --git a/recipes-qt/qt5/qtbase/0003-Add-external-hostbindir-option.patch b/recipes-qt/qt5/qtbase/0003-Add-external-hostbindir-option.patch
new file mode 100644
index 00000000..779ea918
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0003-Add-external-hostbindir-option.patch
@@ -0,0 +1,233 @@
1From cf4e996876e0b467b7aae124c7cb285f677bf6b0 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Sat, 6 Apr 2013 13:15:07 +0200
4Subject: [PATCH 03/12] Add -external-hostbindir option
5
6* when cross-compiling it's sometimes useful to use existing tools from machine
7 (or in OpenEmbedded built with separate native recipe) when building for target
8
9* this way we can skip bootstraping tools we already have
10
11* qt_functions: temporary remove isEmpty check
12* now we assume that every build will provide QT_EXTERNAL_HOST_BINS value
13* isEmpty works correctly only with qmake variables (e.g. $$FOO -
14 isEmpty(FOO)), but doesn't work with system properties like $$[FOO].
15
16* cmake: Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS to determine path to host binaries
17
18Upstream-Status: Pending
19 is a lot better for upstreaming (and it was already sort of approved by
20 Oswald) but in 5.2.0 I've noticed that he added something similar for
21 android builds
22
23Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
24Signed-off-by: Simon Busch <morphis@gravedo.de>
25Signed-off-by: Jonathan Liu <net147@gmail.com>
26---
27 configure | 15 +++++++++++++++
28 mkspecs/features/qt_functions.prf | 6 +++++-
29 mkspecs/features/qt_tool.prf | 4 ++--
30 qtbase.pro | 13 ++++++++++---
31 src/corelib/Qt5CoreConfigExtras.cmake.in | 6 +++---
32 src/dbus/Qt5DBusConfigExtras.cmake.in | 4 ++--
33 src/widgets/Qt5WidgetsConfigExtras.cmake.in | 2 +-
34 7 files changed, 38 insertions(+), 12 deletions(-)
35
36diff --git a/configure b/configure
37index 0a00d6d..ad5f4cd 100755
38--- a/configure
39+++ b/configure
40@@ -770,6 +770,7 @@ QT_HOST_BINS=
41 QT_HOST_LIBS=
42 QT_HOST_DATA=
43 QT_EXT_PREFIX=
44+QT_EXTERNAL_HOST_BINS=
45
46 #flags for SQL drivers
47 QT_CFLAGS_PSQL=
48@@ -889,6 +890,7 @@ while [ "$#" -gt 0 ]; do
49 -testsdir| \
50 -hostdatadir| \
51 -hostbindir| \
52+ -external-hostbindir| \
53 -hostlibdir| \
54 -extprefix| \
55 -sysroot| \
56@@ -1107,6 +1109,9 @@ while [ "$#" -gt 0 ]; do
57 extprefix)
58 QT_EXT_PREFIX="$VAL"
59 ;;
60+ external-hostbindir)
61+ QT_EXTERNAL_HOST_BINS="$VAL"
62+ ;;
63 pkg-config)
64 if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
65 CFG_PKGCONFIG="$VAL"
66@@ -2270,6 +2275,10 @@ Installation options:
67 -hostdatadir <dir> . Data used by qmake will be installed to <dir>
68 (default HOSTPREFIX)
69
70+ -external-hostbindir <dir> Use external host executables instead of building them
71+ (not used by defaut)
72+
73+
74 Configure options:
75
76 The defaults (*) are usually acceptable. A plus (+) denotes a default value
77@@ -2949,6 +2958,11 @@ fi
78 # command line and environment validation
79 #-------------------------------------------------------------------------------
80
81+# default is empty, don't call makeabs if it is empty
82+if [ ! -z "$QT_EXTERNAL_HOST_BINS" ]; then
83+ QT_EXTERNAL_HOST_BINS=`"$relpath/config.tests/unix/makeabs" "$QT_EXTERNAL_HOST_BINS"`
84+fi
85+
86 # update QT_CONFIG to show our current predefined configuration
87 CFG_QCONFIG_PATH=$relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h
88 case "$CFG_QCONFIG" in
89@@ -3649,6 +3663,7 @@ static const char qt_configure_prefix_path_strs[][256 + 12] = {
90 "qt_hbinpath=$QT_HOST_BINS",
91 "qt_hlibpath=$QT_HOST_LIBS",
92 "qt_hdatpath=$QT_HOST_DATA",
93+ "qt_ebinpath=$QT_EXTERNAL_HOST_BINS",
94 "qt_targspec=$shortxspec",
95 "qt_hostspec=$shortspec",
96 #endif
97diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
98index 79b4eab..8c6913e 100644
99--- a/mkspecs/features/qt_functions.prf
100+++ b/mkspecs/features/qt_functions.prf
101@@ -198,7 +198,11 @@ defineTest(qtAddRpathLink) {
102 defineTest(qtPrepareTool) {
103 cmd = $$eval(QT_TOOL.$${2}.binary)
104 isEmpty(cmd) {
105- cmd = $$[QT_HOST_BINS]/$$2
106+ QT_EXTERNAL_HOST_BINS = $$[QT_EXTERNAL_HOST_BINS]
107+ isEmpty(QT_EXTERNAL_HOST_BINS): \
108+ cmd = $$[QT_HOST_BINS]/$$2
109+ else: \
110+ cmd = $$[QT_EXTERNAL_HOST_BINS]/$$2
111 exists($${cmd}.pl) {
112 cmd = perl -w $$system_path($${cmd}.pl)
113 } else: contains(QMAKE_HOST.os, Windows) {
114diff --git a/mkspecs/features/qt_tool.prf b/mkspecs/features/qt_tool.prf
115index 1d3e88c..9b26adf 100644
116--- a/mkspecs/features/qt_tool.prf
117+++ b/mkspecs/features/qt_tool.prf
118@@ -12,11 +12,11 @@
119 load(qt_app)
120
121 CONFIG += console
122+QT_EXTERNAL_HOST_BINS = $$[QT_EXTERNAL_HOST_BINS]
123
124 # If we are doing a prefix build, create a "module" pri which enables
125 # qtPrepareTool() to work with the non-installed build.
126-# Non-bootstrapped tools always need this because of the environment setup.
127-!build_pass:if(!host_build|!force_bootstrap|force_independent) {
128+!build_pass:if(!host_build|!force_bootstrap|force_independent):isEmpty(QT_EXTERNAL_HOST_BINS) {
129 isEmpty(MODULE):MODULE = $$TARGET
130
131 !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, _private)
132diff --git a/qtbase.pro b/qtbase.pro
133index 6d0de44..ddf7478 100644
134--- a/qtbase.pro
135+++ b/qtbase.pro
136@@ -69,18 +69,25 @@ CONFIG -= qt
137
138 ### installations ####
139
140+QT_EXTERNAL_HOST_BINS = $$[QT_EXTERNAL_HOST_BINS]
141+
142 #qmake
143 qmake.path = $$[QT_HOST_BINS]
144+qmake.files = $$OUT_PWD/bin/qmake
145+!isEmpty(QT_EXTERNAL_HOST_BINS) {
146+ qmake.files = $$[QT_EXTERNAL_HOST_BINS]/qmake
147+}
148 equals(QMAKE_HOST.os, Windows) {
149- qmake.files = $$OUT_PWD/bin/qmake.exe
150-} else {
151- qmake.files = $$OUT_PWD/bin/qmake
152+ qmake.files = $${qmake.files}.exe
153 }
154 INSTALLS += qmake
155
156 #syncqt
157 syncqt.path = $$[QT_HOST_BINS]
158 syncqt.files = $$PWD/bin/syncqt.pl
159+!isEmpty(QT_EXTERNAL_HOST_BINS) {
160+ syncqt.files = $$[QT_EXTERNAL_HOST_BINS]/syncqt.pl
161+}
162 INSTALLS += syncqt
163
164 # If we are doing a prefix build, create a "module" pri which enables
165diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in
166index 7213a84..a977417 100644
167--- a/src/corelib/Qt5CoreConfigExtras.cmake.in
168+++ b/src/corelib/Qt5CoreConfigExtras.cmake.in
169@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qmake)
170 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
171 set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
172 !!ELSE
173- set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\")
174+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake$$CMAKE_BIN_SUFFIX\")
175 !!ENDIF
176 _qt5_Core_check_file_exists(${imported_location})
177
178@@ -20,7 +20,7 @@ if (NOT TARGET Qt5::moc)
179 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
180 set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
181 !!ELSE
182- set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\")
183+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/moc$$CMAKE_BIN_SUFFIX\")
184 !!ENDIF
185 _qt5_Core_check_file_exists(${imported_location})
186
187@@ -37,7 +37,7 @@ if (NOT TARGET Qt5::rcc)
188 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
189 set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
190 !!ELSE
191- set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\")
192+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/rcc$$CMAKE_BIN_SUFFIX\")
193 !!ENDIF
194 _qt5_Core_check_file_exists(${imported_location})
195
196diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in
197index 1d94715..301af8f 100644
198--- a/src/dbus/Qt5DBusConfigExtras.cmake.in
199+++ b/src/dbus/Qt5DBusConfigExtras.cmake.in
200@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml)
201 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
202 set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
203 !!ELSE
204- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
205+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\")
206 !!ENDIF
207 _qt5_DBus_check_file_exists(${imported_location})
208
209@@ -20,7 +20,7 @@ if (NOT TARGET Qt5::qdbusxml2cpp)
210 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
211 set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
212 !!ELSE
213- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
214+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\")
215 !!ENDIF
216 _qt5_DBus_check_file_exists(${imported_location})
217
218diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in
219index 99d87e2..5621dc0 100644
220--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in
221+++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in
222@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::uic)
223 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE)
224 set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
225 !!ELSE
226- set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\")
227+ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/uic$$CMAKE_BIN_SUFFIX\")
228 !!ENDIF
229 _qt5_Widgets_check_file_exists(${imported_location})
230
231--
2322.3.5
233
diff --git a/recipes-qt/qt5/qtbase/0004-qt_module-Fix-pkgconfig-and-libtool-replacements.patch b/recipes-qt/qt5/qtbase/0004-qt_module-Fix-pkgconfig-and-libtool-replacements.patch
new file mode 100644
index 00000000..c586775f
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0004-qt_module-Fix-pkgconfig-and-libtool-replacements.patch
@@ -0,0 +1,114 @@
1From bf9f8df42f5a7ac4a0cb4bdad8c849228aa79b35 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Sat, 27 Apr 2013 23:15:37 +0200
4Subject: [PATCH 04/12] qt_module: Fix pkgconfig and libtool replacements
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9* in situation like this:
10 QT_SYSROOT:/OE/oe-core/tmp-eglibc/sysroots/qemuarm
11 QT_INSTALL_LIBS:/OE/oe-core/tmp-eglibc/sysroots/qemuarm/usr/lib
12 QT_INSTALL_LIBS/raw:/usr/lib
13 QT_INSTALL_LIBS/get:/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/lib
14
15 I don't want the replacement like this:
16 sed
17 -e "s,/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/include,/usr/include/qt5,g"
18 -e "s,/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/lib,/usr/lib,g"
19 "../../lib/pkgconfig/Qt5Core.pc"
20 >"/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/image/OE/oe-core/tmp-eglibc/sysroots/qemuarm/usr/lib/pkgconfig/Qt5Core.pc"
21 because that way I'll end with -L/usr/lib in .pc file which is
22 cross-compile unfriendly, keeping ${libdir}/${includedir} works better
23 in my case
24
25* qt_module: Fix paths in .prl files
26* qmake does not prefix them with QT_SYSROOT when using them
27 so e.g. when building qtdeclarative we get -L/usr/lib to LINKAGE
28 variable, which is unsafe for cross-compilation
29* writting QT_SYSROOT in .prl files is dangerous for sstate when
30 builds are in different directories, so we need
31 SSTATE_SCAN_FILES += "*.pri *.prl"
32 to make them relocateble
33
34* fix paths in packageconfig files
35 This reverts parts of:
36
37 enable path replacement in installed prl files on all platforms
38
39 Task-number: QTBUG-33794
40 Change-Id: Id0d38715673b8a1c0c034e9c15783eb255c4315b
41 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
42
43* to debug this, rebuild qtbase and read build/src/corelib/Makefile
44* this is example of broken install_target rule (added line feeds):
45 -$(SED) -e s,/OE/5.3.1-r0/build/lib,/usr/lib,g
46 -e 's,/OE/5.3.1-r0/build/include,$$\{includedir},g'
47 -e 's,/OE/5.3.1-r0/build/lib,$$\{libdir},g'
48 "../../lib/pkgconfig/Qt5Core.pc"
49 >"$(INSTALL_ROOT)/usr/lib/pkgconfig/Qt5Core.pc"
50 change .prf files, create copy of WORKDIR, re-excecute only
51 do_configure task and compare generated Makefile, repeat until
52 replace in generated Makefile works ok, then refresh patch and
53 try complete rebuild for qtbase
54* if everything is ok, then try:
55 image $ grep -R "\-L/usr" .
56 image $ grep -R "\-I/usr" .
57 and it should return only few cases of
58 qmake.conf:QMAKE_LFLAGS_THREAD = -L/usr/lib/threads
59 for aix* platformas
60
61Change-Id: Ie1c94b15f2a4e736b65b4d0924d99eb2a7d92a6c
62Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
63Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
64---
65 mkspecs/features/qt_common.prf | 2 +-
66 mkspecs/features/qt_module.prf | 15 +++++++++++++++
67 2 files changed, 16 insertions(+), 1 deletion(-)
68
69diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
70index eb65e73..4db40d0 100644
71--- a/mkspecs/features/qt_common.prf
72+++ b/mkspecs/features/qt_common.prf
73@@ -33,7 +33,7 @@ contains(TEMPLATE, .*lib) {
74 lib_replace.replace =
75 } else {
76 lib_replace.match = $$rplbase/lib
77- lib_replace.replace = $$qt_libdir
78+ lib_replace.replace = "\$$\\{libdir}"
79 }
80 lib_replace.CONFIG = path
81 QMAKE_PRL_INSTALL_REPLACE += lib_replace
82diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
83index 2437efe..2e1f014 100644
84--- a/mkspecs/features/qt_module.prf
85+++ b/mkspecs/features/qt_module.prf
86@@ -192,10 +192,25 @@ unix|mingw {
87 QMAKE_PKGCONFIG_DESCRIPTION = $$replace(TARGET, ^Qt, "Qt ") module
88 QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace
89
90+ pkgconfig_include_replace.match = $$rplbase/include
91+ pkgconfig_include_replace.replace = "\$$\\{includedir}"
92+ pkgconfig_include_replace.CONFIG = path
93+ QMAKE_PKGCONFIG_INSTALL_REPLACE += pkgconfig_include_replace
94+
95 unix {
96 CONFIG += create_libtool explicitlib
97 QMAKE_LIBTOOL_LIBDIR = $$qt_libdir
98 QMAKE_LIBTOOL_INSTALL_REPLACE += lib_replace
99+ # add '=' as sysroot in .la files
100+ lafile_replace.match = "-L\$${libdir}"
101+ lafile_replace.replace = "-L=\$$\\{libdir}"
102+ lafile_replace.CONFIG = path
103+ QMAKE_LIBTOOL_INSTALL_REPLACE += lafile_replace
104+ # drop -L/usr/lib in .prl files
105+ prl_replace.match = "-L\$${libdir}"
106+ prl_replace.replace = ""
107+ prl_replace.CONFIG = path
108+ QMAKE_PRL_INSTALL_REPLACE += prl_replace
109 }
110 }
111
112--
1132.3.5
114
diff --git a/recipes-qt/qt5/qtbase/0005-Revert-eglfs-Print-the-chosen-config-in-debug-mode.patch b/recipes-qt/qt5/qtbase/0005-Revert-eglfs-Print-the-chosen-config-in-debug-mode.patch
new file mode 100644
index 00000000..9723beac
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0005-Revert-eglfs-Print-the-chosen-config-in-debug-mode.patch
@@ -0,0 +1,97 @@
1From f8a4e063b45b5b941738dd90ea7c74063bc1e49f Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Mon, 21 Apr 2014 19:22:04 +0200
4Subject: [PATCH 05/12] Revert "eglfs: Print the chosen config in debug mode"
5
6With this change the build is failing with:
7| In file included from /OE/build/oe-core/tmp-glibc/sysroots/qemux86-64/usr/include/EGL/eglplatform.h:118:0,
8| from /OE/build/oe-core/tmp-glibc/sysroots/qemux86-64/usr/include/EGL/egl.h:36,
9| from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformcontext_p.h:51,
10| from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformcontext.cpp:34:
11| ../../include/QtCore/../../../git/src/corelib/io/qtextstream.h:72:10: error: expected identifier before 'int'
12| enum Status {
13| ^
14| In file included from ../../include/QtCore/qtextstream.h:1:0,
15| from ../../include/QtCore/../../../git/src/corelib/io/qdebug.h:42,
16| from ../../include/QtCore/qdebug.h:1,
17| from ../../include/QtCore/QDebug:1,
18| from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformcontext.cpp:40:
19| ../../include/QtCore/../../../git/src/corelib/io/qtextstream.h:72:17: error: expected unqualified-id before '{' token
20| enum Status {
21| ^
22| Makefile:3896: recipe for target '.obj/qeglplatformcontext.o' failed
23| make[2]: *** [.obj/qeglplatformcontext.o] Error 1
24| make[2]: *** Waiting for unfinished jobs....
25| /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformintegration.cpp:196:5: error: 'Display' redeclared as different kind of symbol
26| Display
27| ^
28| In file included from /OE/build/oe-core/tmp-glibc/sysroots/qemux86-64/usr/include/EGL/eglplatform.h:118:0,
29| from /OE/build/oe-core/tmp-glibc/sysroots/qemux86-64/usr/include/EGL/egl.h:36,
30| from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformintegration_p.h:51,
31| from /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformintegration.cpp:55:
32| /OE/build/oe-core/tmp-glibc/sysroots/qemux86-64/usr/include/X11/Xlib.h:499:26: note: previous declaration 'typedef struct _XDisplay Display'
33| typedef struct _XDisplay Display;
34| ^
35| /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformintegration.cpp: In member function 'virtual void* QEGLPlatformIntegration::nativeResourceForScreen(const QByteArray&, QScreen*)':
36| /OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/qtbase/5.3.0+5.4.0-alpha1+gitAUTOINC+8456adf0ee-r0/git/src/platformsupport/eglconvenience/qeglplatformintegration.cpp:239:17: error: expected primary-expression before ':' token
37| case Display:
38| ^
39| Makefile:5486: recipe for target '.obj/qeglplatformintegration.o' failed
40
41This reverts commit dc685cf6331f5fb46285cf10d6464c2ecf41f73e.
42
43Will be partially resolved in newer revision with:
44https://codereview.qt-project.org/96220
45
46Change-Id: I7a6a926b7525d4f137824c71f2ec8cd089c21f13
47Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
48---
49 src/platformsupport/eglconvenience/qeglconvenience.cpp | 4 +++-
50 src/platformsupport/eglconvenience/qeglplatformcontext.cpp | 7 -------
51 2 files changed, 3 insertions(+), 8 deletions(-)
52
53diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp
54index c1a491c..7a0fc87 100644
55--- a/src/platformsupport/eglconvenience/qeglconvenience.cpp
56+++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp
57@@ -443,9 +443,11 @@ void q_printEglConfig(EGLDisplay display, EGLConfig config)
58 for (index = 0; attrs[index].attr != -1; ++index) {
59 EGLint value;
60 if (eglGetConfigAttrib(display, config, attrs[index].attr, &value)) {
61- qDebug("\t%s: %d", attrs[index].name, (int)value);
62+ qWarning("\t%s: %d\n", attrs[index].name, (int)value);
63 }
64 }
65+
66+ qWarning("\n");
67 }
68
69 #ifdef Q_OS_UNIX
70diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
71index 7cc3300..ccbd974a 100644
72--- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
73+++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
74@@ -37,7 +37,6 @@
75 #include <qpa/qplatformwindow.h>
76 #include <QOpenGLContext>
77 #include <QtPlatformHeaders/QEGLNativeContext>
78-#include <QDebug>
79
80 QT_BEGIN_NAMESPACE
81
82@@ -181,12 +180,6 @@ void QEGLPlatformContext::init(const QSurfaceFormat &format, QPlatformOpenGLCont
83 return;
84 }
85
86- static const bool printConfig = qgetenv("QT_QPA_EGLFS_DEBUG").toInt();
87- if (printConfig) {
88- qDebug() << "Created context for format" << format << "with config:";
89- q_printEglConfig(m_eglDisplay, m_eglConfig);
90- }
91-
92 updateFormatFromGL();
93 }
94
95--
962.3.5
97
diff --git a/recipes-qt/qt5/qtbase/0006-qeglplatformintegration-Undefine-CursorShape-from-X..patch b/recipes-qt/qt5/qtbase/0006-qeglplatformintegration-Undefine-CursorShape-from-X..patch
new file mode 100644
index 00000000..04fb3709
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0006-qeglplatformintegration-Undefine-CursorShape-from-X..patch
@@ -0,0 +1,30 @@
1From 6061c8457ea1f76745bd9918e61bda01ef96ce56 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Wed, 19 Mar 2014 18:32:28 +0100
4Subject: [PATCH 06/12] qeglplatformintegration: Undefine CursorShape from X.h
5
6Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
7---
8 src/platformsupport/eglconvenience/qeglplatformintegration_p.h | 6 ++++++
9 1 file changed, 6 insertions(+)
10
11diff --git a/src/platformsupport/eglconvenience/qeglplatformintegration_p.h b/src/platformsupport/eglconvenience/qeglplatformintegration_p.h
12index 2b5d5f5..a0aab03 100644
13--- a/src/platformsupport/eglconvenience/qeglplatformintegration_p.h
14+++ b/src/platformsupport/eglconvenience/qeglplatformintegration_p.h
15@@ -50,6 +50,12 @@
16 #include <qpa/qplatformnativeinterface.h>
17 #include <EGL/egl.h>
18
19+// Undefine CursorShape from X.h, which is causing breakage in Qt::CursorShape in platformsupport/eglconvenience/
20+// /usr/include/X11/X.h:#define CursorShape 0 /* largest size that can be displayed */
21+#ifdef CursorShape
22+#undef CursorShape
23+#endif
24+
25 QT_BEGIN_NAMESPACE
26
27 class QEGLPlatformScreen;
28--
292.3.5
30
diff --git a/recipes-qt/qt5/qtbase/0007-configure-bump-path-length-from-256-to-512-character.patch b/recipes-qt/qt5/qtbase/0007-configure-bump-path-length-from-256-to-512-character.patch
new file mode 100644
index 00000000..be75d72c
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0007-configure-bump-path-length-from-256-to-512-character.patch
@@ -0,0 +1,29 @@
1From a6b01490248be28c1db3abd5f710c5d7d9afee55 Mon Sep 17 00:00:00 2001
2From: Denys Dmytriyenko <denys@ti.com>
3Date: Mon, 11 Nov 2013 20:27:30 -0500
4Subject: [PATCH 07/12] configure: bump path length from 256 to 512 characters
5
6Increase the path length that gets hardcoded into generated config.cpp file
7from 256 to 512 characters, as nativesdk path can be quite long.
8
9Signed-off-by: Denys Dmytriyenko <denys@ti.com>
10---
11 configure | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/configure b/configure
15index ad5f4cd..c19ff6a 100755
16--- a/configure
17+++ b/configure
18@@ -3627,7 +3627,7 @@ static const char qt_configure_licensed_products_str [256 + 12] = "qt_lcnsprod=$
19 static const char qt_configure_installation [12+11] = "qt_instdate=`date +%Y-%m-%d`";
20
21 /* Installation Info */
22-static const char qt_configure_prefix_path_strs[][256 + 12] = {
23+static const char qt_configure_prefix_path_strs[][512 + 12] = {
24 #ifndef QT_BUILD_QMAKE
25 "qt_prfxpath=$QT_SYSROOT_PREFIX",
26 "qt_docspath=$QT_SYSROOT_DOCS",
27--
282.3.5
29
diff --git a/recipes-qt/qt5/qtbase/0008-eglfs-fix-egl-error-for-platforms-only-supporting-on.patch b/recipes-qt/qt5/qtbase/0008-eglfs-fix-egl-error-for-platforms-only-supporting-on.patch
new file mode 100644
index 00000000..e4d4327c
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0008-eglfs-fix-egl-error-for-platforms-only-supporting-on.patch
@@ -0,0 +1,72 @@
1From d1712999887b9809cce57b1e6c008c454330cd2e Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Wed, 5 Feb 2014 18:35:08 +0100
4Subject: [PATCH 08/12] eglfs: fix egl error for platforms only supporting one
5 window/surface
6MIME-Version: 1.0
7Content-Type: text/plain; charset=UTF-8
8Content-Transfer-Encoding: 8bit
9
10running qmlscene -platform eglfs <filename>.qml
11
12caused
13
14EGL Error : Could not create the egl surface: error = 0x3003
15
16Rebased version of [1-2]
17
18Upstream-Status: unknown
19
20[1] http://repository.timesys.com/buildsources/q/qt-everywhere-opensource/qt-everywhere-opensource-5.1.1/qt-everywhere-opensource-5.1.1-qeglfswindow.cpp.patch
21[2] https://github.com/prabindh/qt-configs/blob/master/qt5_1.0_Feb13/qeglfswindow.cpp.patch
22
23Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
24Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
25---
26 src/plugins/platforms/eglfs/qeglfswindow.cpp | 16 +++++++++++++++-
27 1 file changed, 15 insertions(+), 1 deletion(-)
28
29diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
30index 39a3ef9..2c05979 100644
31--- a/src/plugins/platforms/eglfs/qeglfswindow.cpp
32+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
33@@ -68,6 +68,15 @@ void QEglFSWindow::create()
34
35 m_flags = Created;
36
37+ static EGLSurface __singleWindowSurface;
38+ if(QEglFSHooks::hooks() && ! QEglFSHooks::hooks()->hasCapability(QPlatformIntegration::MultipleWindows) && (__singleWindowSurface)) {
39+ m_surface = __singleWindowSurface;
40+#ifdef QEGL_EXTRA_DEBUG
41+ qWarning("Surface recreate request, re-using %x\n", m_surface);
42+#endif
43+ return;
44+ }
45+
46 if (window()->type() == Qt::Desktop)
47 return;
48
49@@ -81,7 +90,7 @@ void QEglFSWindow::create()
50 return;
51 }
52
53-#if !defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK)
54+#if !defined(Q_OS_ANDROID) || defined(Q_OS_ANDROID_NO_SDK) || defined(EGL_API_FB)
55 // We can have either a single OpenGL window or multiple raster windows.
56 // Other combinations cannot work.
57 qFatal("EGLFS: OpenGL windows cannot be mixed with others.");
58@@ -101,6 +110,11 @@ void QEglFSWindow::create()
59
60 resetSurface();
61
62+ if(QEglFSHooks::hooks() && !QEglFSHooks::hooks()->hasCapability(QPlatformIntegration::MultipleWindows))
63+ {
64+ __singleWindowSurface = m_surface;
65+ }
66+
67 screen->setPrimarySurface(m_surface);
68
69 if (isRaster()) {
70--
712.3.5
72
diff --git a/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch b/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch
new file mode 100644
index 00000000..bebb3d95
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0009-QOpenGLPaintDevice-sub-area-support.patch
@@ -0,0 +1,157 @@
1From a34538ff13c520fa85df689255469a316f037d0d Mon Sep 17 00:00:00 2001
2From: Jani Hautakangas <jani.hautakangas@ixonos.com>
3Date: Thu, 16 May 2013 09:52:07 +0300
4Subject: [PATCH 09/12] QOpenGLPaintDevice sub-area support
5
6Allows creating QOpenGLPaintDevice targetting sub-area
7of binded framebuffer.
8
9Upstream-Status: Pending
10
11Change-Id: Ida2f079aa1ac0b87d36b54129e226399dbcdda80
12
13Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
14---
15 src/gui/opengl/qopenglpaintdevice.cpp | 11 +++++++++++
16 src/gui/opengl/qopenglpaintdevice.h | 2 ++
17 src/gui/opengl/qopenglpaintdevice_p.h | 1 +
18 src/gui/opengl/qopenglpaintengine.cpp | 9 +++++++--
19 src/gui/opengl/qopenglpaintengine_p.h | 1 +
20 src/gui/opengl/qopengltextureglyphcache.cpp | 2 +-
21 6 files changed, 23 insertions(+), 3 deletions(-)
22
23diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
24index a08d26f..cff3155 100644
25--- a/src/gui/opengl/qopenglpaintdevice.cpp
26+++ b/src/gui/opengl/qopenglpaintdevice.cpp
27@@ -135,6 +135,12 @@ QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)
28 {
29 }
30
31+QOpenGLPaintDevice::QOpenGLPaintDevice(int x, int y, int width, int height)
32+ : d_ptr(new QOpenGLPaintDevicePrivate(QSize(width, height)))
33+{
34+ d_ptr->offset = QPoint(x,y);
35+}
36+
37 /*!
38 \internal
39 */
40@@ -212,6 +218,11 @@ QOpenGLContext *QOpenGLPaintDevice::context() const
41 return d_ptr->ctx;
42 }
43
44+QPoint QOpenGLPaintDevice::offset() const
45+{
46+ return d_ptr->offset;
47+}
48+
49 /*!
50 Returns the pixel size of the paint device.
51
52diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h
53index 10cee84..a6683c5 100644
54--- a/src/gui/opengl/qopenglpaintdevice.h
55+++ b/src/gui/opengl/qopenglpaintdevice.h
56@@ -53,12 +53,14 @@ public:
57 QOpenGLPaintDevice();
58 explicit QOpenGLPaintDevice(const QSize &size);
59 QOpenGLPaintDevice(int width, int height);
60+ QOpenGLPaintDevice(int x, int y, int width, int height);
61 virtual ~QOpenGLPaintDevice();
62
63 int devType() const { return QInternal::OpenGL; }
64 QPaintEngine *paintEngine() const;
65
66 QOpenGLContext *context() const;
67+ QPoint offset() const;
68 QSize size() const;
69 void setSize(const QSize &size);
70 void setDevicePixelRatio(qreal devicePixelRatio);
71diff --git a/src/gui/opengl/qopenglpaintdevice_p.h b/src/gui/opengl/qopenglpaintdevice_p.h
72index 0b01129..211f2f3 100644
73--- a/src/gui/opengl/qopenglpaintdevice_p.h
74+++ b/src/gui/opengl/qopenglpaintdevice_p.h
75@@ -65,6 +65,7 @@ public:
76
77 public:
78 QSize size;
79+ QPoint offset;
80 QOpenGLContext *ctx;
81
82 qreal dpmx;
83diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp
84index 8eeaa31..e17520e 100644
85--- a/src/gui/opengl/qopenglpaintengine.cpp
86+++ b/src/gui/opengl/qopenglpaintengine.cpp
87@@ -2080,7 +2080,10 @@ bool QOpenGL2PaintEngineEx::begin(QPaintDevice *pdev)
88 for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i)
89 d->vertexAttributeArraysEnabledState[i] = false;
90
91+ const QPoint offset = d->device->offset();
92 const QSize sz = d->device->size();
93+ d->x = offset.x();
94+ d->y = offset.y();
95 d->width = sz.width();
96 d->height = sz.height();
97 d->mode = BrushDrawingMode;
98@@ -2167,7 +2170,7 @@ void QOpenGL2PaintEngineEx::ensureActive()
99 d->device->ensureActiveTarget();
100
101 d->transferMode(BrushDrawingMode);
102- d->funcs.glViewport(0, 0, d->width, d->height);
103+ d->funcs.glViewport(d->x, d->y, d->width, d->height);
104 d->needsSync = false;
105 d->shaderManager->setDirty();
106 d->syncGlState();
107@@ -2209,6 +2212,7 @@ void QOpenGL2PaintEngineExPrivate::updateClipScissorTest()
108 if (bounds == QRect(0, 0, width, height)) {
109 funcs.glDisable(GL_SCISSOR_TEST);
110 } else {
111+ bounds = QRect(bounds.x(), bounds.y(), bounds.width(), bounds.height());
112 funcs.glEnable(GL_SCISSOR_TEST);
113 setScissor(bounds);
114 }
115@@ -2217,12 +2221,13 @@ void QOpenGL2PaintEngineExPrivate::updateClipScissorTest()
116
117 void QOpenGL2PaintEngineExPrivate::setScissor(const QRect &rect)
118 {
119- const int left = rect.left();
120+ const int left = rect.left() + x;
121 const int width = rect.width();
122 int bottom = height - (rect.top() + rect.height());
123 if (device->paintFlipped()) {
124 bottom = rect.top();
125 }
126+ bottom += y;
127 const int height = rect.height();
128
129 funcs.glScissor(left, bottom, width, height);
130diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h
131index 9722ea3..07e3163 100644
132--- a/src/gui/opengl/qopenglpaintengine_p.h
133+++ b/src/gui/opengl/qopenglpaintengine_p.h
134@@ -264,6 +264,7 @@ public:
135 QOpenGL2PaintEngineEx* q;
136 QOpenGLEngineShaderManager* shaderManager;
137 QOpenGLPaintDevice* device;
138+ int x, y;
139 int width, height;
140 QOpenGLContext *ctx;
141 EngineMode mode;
142diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp
143index cd268cd..997bc35 100644
144--- a/src/gui/opengl/qopengltextureglyphcache.cpp
145+++ b/src/gui/opengl/qopengltextureglyphcache.cpp
146@@ -310,7 +310,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height)
147 funcs->glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)oldFbo);
148
149 if (pex != 0) {
150- funcs->glViewport(0, 0, pex->width, pex->height);
151+ funcs->glViewport(pex->x, pex->y, pex->width, pex->height);
152 pex->updateClipScissorTest();
153 } else {
154 if (m_vao.isCreated()) {
155--
1562.3.5
157
diff --git a/recipes-qt/qt5/qtbase/0010-Make-Qt5GuiConfigExtras.cmake-find-gl-es-include-dir.patch b/recipes-qt/qt5/qtbase/0010-Make-Qt5GuiConfigExtras.cmake-find-gl-es-include-dir.patch
new file mode 100644
index 00000000..f2eed114
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0010-Make-Qt5GuiConfigExtras.cmake-find-gl-es-include-dir.patch
@@ -0,0 +1,42 @@
1From 16a55457ce31d467cb331ab8e94b672757ef42b9 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Thu, 18 Dec 2014 13:41:09 +0100
4Subject: [PATCH 10/12] Make Qt5GuiConfigExtras.cmake find gl(es) include dir
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9In configure QMAKE_INCDIR_OPENGL is set with pkg-config. Without
10PKG_CONFIG_ALLOW_SYSTEM_CFLAGS set, pkg-config returns paths outside
11/usr/include only (in my case /usr/include/libdrm). With NO_DEFAULT_PATH set
12gl(es) include directories cannot be found. Cmake builds depending on
13Qt5Gui error out with
14
15| Failed to find "GLES2/gl2.h" in "/usr/include/libdrm"
16
17Upstream-Status: submitted [1]
18
19[1] https://bugreports.qt-project.org/browse/QTBUG-43445
20
21Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
22---
23 src/gui/Qt5GuiConfigExtras.cmake.in | 3 ---
24 1 file changed, 3 deletions(-)
25
26diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in
27index 9a846d4..07869ef 100644
28--- a/src/gui/Qt5GuiConfigExtras.cmake.in
29+++ b/src/gui/Qt5GuiConfigExtras.cmake.in
30@@ -57,9 +57,6 @@ set(Qt5Gui_OPENGL_LIBRARIES Qt5::Gui_GLESv2)
31 set(_GL_INCDIRS $$CMAKE_GL_INCDIRS)
32 find_path(_qt5gui_OPENGL_INCLUDE_DIR $$CMAKE_GL_HEADER_NAME
33 PATHS ${_GL_INCDIRS}
34-!!IF !mac
35- NO_DEFAULT_PATH
36-!!ENDIF
37 )
38 if (NOT _qt5gui_OPENGL_INCLUDE_DIR)
39 message(FATAL_ERROR \"Failed to find \\\"$$CMAKE_GL_HEADER_NAME\\\" in \\\"${_GL_INCDIRS}\\\".\")
40--
412.3.5
42
diff --git a/recipes-qt/qt5/qtbase/0011-Always-build-uic.patch b/recipes-qt/qt5/qtbase/0011-Always-build-uic.patch
new file mode 100644
index 00000000..da17878e
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0011-Always-build-uic.patch
@@ -0,0 +1,31 @@
1From 5a6ad20dd4fde6a0581be895d763aae43f1fc2b6 Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Sat, 16 Nov 2013 00:32:30 +0100
4Subject: [PATCH 11/13] Always build uic
5
6Even if we are not building gui or widgets. This tool is needed later
7as a native tool when compiling the target.
8
9Change-Id: I257668ac28c22b192e7ec7736e6c23fa3be6bab6
10Signed-off-by: Mikko Levonmaa <mikko.levonmaa@palm.com>
11Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
12---
13 src/src.pro | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/src/src.pro b/src/src.pro
17index 83f7587..9dbcf70 100644
18--- a/src/src.pro
19+++ b/src/src.pro
20@@ -163,7 +163,7 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent
21 }
22 }
23 }
24-SUBDIRS += src_plugins src_tools_qdoc
25+SUBDIRS += src_plugins src_tools_qdoc src_tools_uic
26
27 nacl: SUBDIRS -= src_network src_testlib
28
29--
302.3.5
31
diff --git a/recipes-qt/qt5/qtbase/0011-qmake-don-t-build-it-in-configure-but-allow-to-build.patch b/recipes-qt/qt5/qtbase/0011-qmake-don-t-build-it-in-configure-but-allow-to-build.patch
new file mode 100644
index 00000000..96198b1f
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0011-qmake-don-t-build-it-in-configure-but-allow-to-build.patch
@@ -0,0 +1,68 @@
1From 6c0cc990522454e0c9e52ba969c3a8c5937157b8 Mon Sep 17 00:00:00 2001
2From: Michael Krelin <hacker@klever.net>
3Date: Mon, 29 Oct 2012 20:07:49 -0700
4Subject: [PATCH 11/12] qmake: don't build it in configure, but allow to build
5 it separately
6
7* it is already built in qtbase-native, so we don't need it in configure
8* allow building a separate qmake for the target
9
10Upstream-Status: Inappropriate [configuration]
11 OE specific for native/target builds
12
13Signed-off-by: Yu Ke <ke.yu@intel.com>
14Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
15Signed-off-by: Mikko Levonmaa <mikko.levonmaa@gmail.com>
16Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
17 configure | 2 +-
18 qmake/qmake.pri | 3 ++-
19 qmake/qmake.pro | 2 ++
20 3 files changed, 5 insertions(+), 2 deletions(-)
21---
22 configure | 2 +-
23 qmake/qmake.pri | 3 ++-
24 qmake/qmake.pro | 1 +
25 3 files changed, 4 insertions(+), 2 deletions(-)
26
27diff --git a/configure b/configure
28index c19ff6a..7a34b11 100755
29--- a/configure
30+++ b/configure
31@@ -3729,7 +3729,7 @@ setBootstrapEvalVariable()
32
33
34 # build qmake
35-if true; then ###[ '!' -f "$outpath/bin/qmake" ];
36+if false; then ###[ '!' -f "$outpath/bin/qmake" ];
37 echo "Creating qmake..."
38
39 mkdir -p "$outpath/qmake" || exit
40diff --git a/qmake/qmake.pri b/qmake/qmake.pri
41index 4de41d6..69982b7 100644
42--- a/qmake/qmake.pri
43+++ b/qmake/qmake.pri
44@@ -82,7 +82,8 @@ bootstrap { #Qt code
45 qjsonparser.cpp \
46 qjsonarray.cpp \
47 qjsonobject.cpp \
48- qjsonvalue.cpp
49+ qjsonvalue.cpp \
50+ qdebug.cpp
51
52 HEADERS+= \
53 qbitarray.h \
54diff --git a/qmake/qmake.pro b/qmake/qmake.pro
55index 89d6ea5..0ff4a96 100644
56--- a/qmake/qmake.pro
57+++ b/qmake/qmake.pro
58@@ -8,6 +8,7 @@ CONFIG -= qt
59 DEFINES += \
60 QT_BUILD_QMAKE \
61 PROEVALUATOR_FULL
62+TARGET = qmake
63
64 VPATH += \
65 ../src/corelib/global \
66--
672.3.5
68
diff --git a/recipes-qt/qt5/qtbase/0012-Add-external-hostbindir-option-for-native-sdk.patch b/recipes-qt/qt5/qtbase/0012-Add-external-hostbindir-option-for-native-sdk.patch
new file mode 100644
index 00000000..4c044c0d
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0012-Add-external-hostbindir-option-for-native-sdk.patch
@@ -0,0 +1,108 @@
1From 6425d71d52c5587f323fe28af62530d5c82b02fd Mon Sep 17 00:00:00 2001
2From: Martin Jansa <Martin.Jansa@gmail.com>
3Date: Sat, 6 Apr 2013 13:15:07 +0200
4Subject: [PATCH 12/13] Add -external-hostbindir option for native(sdk)
5
6* when cross-compiling it's sometimes useful to use existing tools from machine
7 (or in OpenEmbedded built with separate native recipe) when building for target
8
9* this way we can skip bootstraping tools we already have
10
11* qt_functions: temporary remove isEmpty check
12* now we assume that every build will provide QT_EXTERNAL_HOST_BINS value
13* isEmpty works correctly only with qmake variables (e.g. $$FOO -
14 isEmpty(FOO)), but doesn't work with system properties like $$[FOO].
15
16* cmake: Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS to determine path to host binaries
17
18Upstream-Status: Pending
19 is a lot better for upstreaming (and it was already sort of approved by
20 Oswald) but in 5.2.0 I've noticed that he added something similar for
21 android builds
22
23Change-Id: I4f6e634bf0b2cb96065ee5c38b9cd8a224c3bd37
24Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
25Signed-off-by: Simon Busch <morphis@gravedo.de>
26Signed-off-by: Jonathan Liu <net147@gmail.com>
27Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
28---
29 qmake/property.cpp | 1 +
30 src/corelib/global/qlibraryinfo.cpp | 3 ++-
31 src/corelib/global/qlibraryinfo.h | 1 +
32 tools/configure/configureapp.cpp | 8 ++++++++
33 4 files changed, 12 insertions(+), 1 deletion(-)
34
35diff --git a/qmake/property.cpp b/qmake/property.cpp
36index 051e056..50da6ed 100644
37--- a/qmake/property.cpp
38+++ b/qmake/property.cpp
39@@ -67,6 +67,7 @@ static const struct {
40 { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true },
41 { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true },
42 { "QT_HOST_LIBS", QLibraryInfo::HostLibrariesPath, true },
43+ { "QT_EXTERNAL_HOST_BINS", QLibraryInfo::ExternalHostBinariesPath, true },
44 { "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true },
45 { "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true },
46 };
47diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
48index 91ca643..7a567fa 100644
49--- a/src/corelib/global/qlibraryinfo.cpp
50+++ b/src/corelib/global/qlibraryinfo.cpp
51@@ -348,7 +348,7 @@ QLibraryInfo::isDebugBuild()
52 */
53
54 static const struct {
55- char key[19], value[13];
56+ char key[21], value[13];
57 } qtConfEntries[] = {
58 { "Prefix", "." },
59 { "Documentation", "doc" }, // should be ${Data}/doc
60@@ -374,6 +374,7 @@ static const struct {
61 { "HostBinaries", "bin" },
62 { "HostLibraries", "lib" },
63 { "HostData", "." },
64+ { "ExternalHostBinaries", "" },
65 { "TargetSpec", "" },
66 { "HostSpec", "" },
67 #endif
68diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h
69index 543c4b3..a02e03a 100644
70--- a/src/corelib/global/qlibraryinfo.h
71+++ b/src/corelib/global/qlibraryinfo.h
72@@ -80,6 +80,7 @@ public:
73 HostBinariesPath,
74 HostLibrariesPath,
75 HostDataPath,
76+ ExternalHostBinariesPath,
77 TargetSpecPath,
78 HostSpecPath,
79 LastHostPath = HostSpecPath,
80diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
81index 6e9d4aa..0ca4daf 100644
82--- a/tools/configure/configureapp.cpp
83+++ b/tools/configure/configureapp.cpp
84@@ -1191,6 +1191,13 @@ void Configure::parseCmdLine()
85 dictionary[ "QT_EXT_PREFIX" ] = configCmdLine.at(i);
86 }
87
88+ else if (configCmdLine.at(i) == "-external-hostbindir") {
89+ ++i;
90+ if (i == argCount)
91+ break;
92+ dictionary[ "QT_EXTERNAL_HOST_BINS" ] = configCmdLine.at(i);
93+ }
94+
95 else if (configCmdLine.at(i) == "-make-tool") {
96 ++i;
97 if (i == argCount)
98@@ -4004,6 +4011,7 @@ void Configure::generateQConfigCpp()
99 << " \"qt_hbinpath=" << formatPath(dictionary["QT_HOST_BINS"]) << "\"," << endl
100 << " \"qt_hlibpath=" << formatPath(dictionary["QT_HOST_LIBS"]) << "\"," << endl
101 << " \"qt_hdatpath=" << formatPath(dictionary["QT_HOST_DATA"]) << "\"," << endl
102+ << " \"qt_ebinpath=" << formatPath(dictionary["QT_EXTERNAL_HOST_BINS"]) << "\"," << endl
103 << " \"qt_targspec=" << targSpec << "\"," << endl
104 << " \"qt_hostspec=" << hostSpec << "\"," << endl
105 << "#endif" << endl
106--
1072.3.5
108
diff --git a/recipes-qt/qt5/qtbase/0012-Set-paths-for-target-properly.patch b/recipes-qt/qt5/qtbase/0012-Set-paths-for-target-properly.patch
new file mode 100644
index 00000000..0a7eb15e
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0012-Set-paths-for-target-properly.patch
@@ -0,0 +1,72 @@
1From 84c23fc01b28087de35604ef971227b57fb77876 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
3Date: Thu, 22 Jan 2015 16:09:35 +0100
4Subject: [PATCH 12/12] Set paths for target properly
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9Upstream-Status: Inappropriate [OE specific]
10
11Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
12---
13 configure | 43 +++++++++++++++++++++----------------------
14 1 file changed, 21 insertions(+), 22 deletions(-)
15
16diff --git a/configure b/configure
17index 7a34b11..7bb4476 100755
18--- a/configure
19+++ b/configure
20@@ -3644,28 +3644,27 @@ static const char qt_configure_prefix_path_strs[][512 + 12] = {
21 "qt_xmplpath=$QT_SYSROOT_EXAMPLES",
22 "qt_tstspath=$QT_SYSROOT_TESTS",
23 #else
24- "qt_prfxpath=$QT_INSTALL_PREFIX",
25- "qt_docspath=$QT_INSTALL_DOCS",
26- "qt_hdrspath=$QT_INSTALL_HEADERS",
27- "qt_libspath=$QT_INSTALL_LIBS",
28- "qt_lbexpath=$QT_INSTALL_LIBEXECS",
29- "qt_binspath=$QT_INSTALL_BINS",
30- "qt_plugpath=$QT_INSTALL_PLUGINS",
31- "qt_impspath=$QT_INSTALL_IMPORTS",
32- "qt_qml2path=$QT_INSTALL_QML",
33- "qt_adatpath=$QT_INSTALL_ARCHDATA",
34- "qt_datapath=$QT_INSTALL_DATA",
35- "qt_trnspath=$QT_INSTALL_TRANSLATIONS",
36- "qt_xmplpath=$QT_INSTALL_EXAMPLES",
37- "qt_tstspath=$QT_INSTALL_TESTS",
38- "qt_ssrtpath=$CFG_SYSROOT",
39- "qt_hpfxpath=$QT_HOST_PREFIX",
40- "qt_hbinpath=$QT_HOST_BINS",
41- "qt_hlibpath=$QT_HOST_LIBS",
42- "qt_hdatpath=$QT_HOST_DATA",
43- "qt_ebinpath=$QT_EXTERNAL_HOST_BINS",
44- "qt_targspec=$shortxspec",
45- "qt_hostspec=$shortspec",
46+ "qt_prfxpath=$QT_SYSROOT_PREFIX",
47+ "qt_docspath=$QT_SYSROOT_DOCS",
48+ "qt_hdrspath=$QT_SYSROOT_HEADERS",
49+ "qt_libspath=$QT_SYSROOT_LIBS",
50+ "qt_lbexpath=$QT_SYSROOT_LIBEXECS",
51+ "qt_binspath=$QT_SYSROOT_BINS",
52+ "qt_plugpath=$QT_SYSROOT_PLUGINS",
53+ "qt_impspath=$QT_SYSROOT_IMPORTS",
54+ "qt_qml2path=$QT_SYSROOT_QML",
55+ "qt_adatpath=$QT_SYSROOT_ARCHDATA",
56+ "qt_datapath=$QT_SYSROOT_DATA",
57+ "qt_trnspath=$QT_SYSROOT_TRANSLATIONS",
58+ "qt_xmplpath=$QT_SYSROOT_EXAMPLES",
59+ "qt_tstspath=$QT_SYSROOT_TESTS",
60+ "qt_ssrtpath=",
61+ "qt_hpfxpath=$QT_SYSROOT_PREFIX",
62+ "qt_hbinpath=$QT_SYSROOT_BINS",
63+ "qt_hlibpath=$QT_SYSROOT_LIBS",
64+ "qt_hdatpath=$QT_SYSROOT_LIBS/qt5",
65+ "qt_targspec=linux-g++",
66+ "qt_hostspec=linux-g++",
67 #endif
68 };
69 static const char qt_configure_settings_path_str[256 + 12] = "qt_stngpath=$QT_INSTALL_SETTINGS";
70--
712.3.5
72
diff --git a/recipes-qt/qt5/qtbase/0013-configure-preserve-built-qmake-and-swap-with-native-.patch b/recipes-qt/qt5/qtbase/0013-configure-preserve-built-qmake-and-swap-with-native-.patch
new file mode 100644
index 00000000..0b271a35
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/0013-configure-preserve-built-qmake-and-swap-with-native-.patch
@@ -0,0 +1,30 @@
1From 6b980c8132800001b2f0c5c0e76f7cc7c60d14ee Mon Sep 17 00:00:00 2001
2From: Denys Dmytriyenko <denys@ti.com>
3Date: Mon, 11 Nov 2013 20:22:34 -0500
4Subject: [PATCH 13/13] configure: preserve built qmake and swap with native
5 one
6
7Let configure script build the real qmake, but right after it's built, swap
8it with a native qmake for further internal use, preserving the real one.
9
10Signed-off-by: Denys Dmytriyenko <denys@ti.com>
11---
12 configure | 2 ++
13 1 file changed, 2 insertions(+)
14
15diff --git a/configure b/configure
16index c19ff6a..2d920e3 100755
17--- a/configure
18+++ b/configure
19@@ -3879,6 +3879,8 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
20
21 (cd "$outpath/qmake"; "$MAKE") || exit 2
22 fi # Build qmake
23+mv "$outpath/bin/qmake" "$outpath/bin/qmake-real"
24+mv "$outpath/bin/qmake-native" "$outpath/bin/qmake"
25
26 echo "Running configuration tests..."
27
28--
292.3.5
30
diff --git a/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake b/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake
new file mode 100644
index 00000000..6f0042b2
--- /dev/null
+++ b/recipes-qt/qt5/qtbase/OEQt5Toolchain.cmake
@@ -0,0 +1 @@
set( OE_QMAKE_PATH_EXTERNAL_HOST_BINS $ENV{OE_QMAKE_PATH_HOST_BINS} )