summaryrefslogtreecommitdiffstats
path: root/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch
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/0001-Add-linux-oe-g-platform.patch
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/0001-Add-linux-oe-g-platform.patch')
-rw-r--r--recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch351
1 files changed, 351 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