diff options
Diffstat (limited to 'recipes-qt/qt5/qtbase')
17 files changed, 1322 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..0976c343 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0001-Add-linux-oe-g-platform.patch @@ -0,0 +1,304 @@ +From f4fd2da9b29db23638ad07bd35f093f793241526 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Mon, 15 Apr 2013 04:29:32 +0200 +Subject: [PATCH 01/14] Add linux-oe-g++ platform + +* This qmake.conf unlike other platforms reads most variables from + shell environment, because it's easier for qt recipes to export + *FLAGS or CC specific for given recipe + +* configure: add getQEvalMakeConf and getXQEvalMakeConf + Allow expansion of $(...) references from qmake.conf to generate + qmake environment from shell environment as exported by qmake5_base + +* OE_QMAKE_CXX in order to allow compiler version check to succeed + which allows WebKit to be enabled. + +* Other variables in order to let config.tests to use our -platform + settings + +* Add setBootstrapEvalVariable to bootstrap qmake with our environment + too, this allows us to use -platform linux-oe-g++ also for native + recipe + +* disable gdb_dwarf_index + * qmake is trying to call native gdb and we don't depend on gdb-native + (or even provide gdb-native) + * fixes errors like this: + /bin/sh: gdb: command not found + /bin/sh: line 0: test: -gt: unary operator expected + which are not fatal, but still misleading in do_configure output + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 54 ++++++++++++++++--- + mkspecs/linux-oe-g++/qmake.conf | 40 ++++++++++++++ + mkspecs/linux-oe-g++/qplatformdefs.h | 100 +++++++++++++++++++++++++++++++++++ + 3 files changed, 187 insertions(+), 7 deletions(-) + create mode 100644 mkspecs/linux-oe-g++/qmake.conf + create mode 100644 mkspecs/linux-oe-g++/qplatformdefs.h + +diff --git a/configure b/configure +index a330dd6..1b328ae 100755 +--- a/configure ++++ b/configure +@@ -324,6 +324,16 @@ getQMakeConf() + getSingleQMakeVariable "$1" "$specvals" + } + ++# OE qmake.conf is reading some variables from shell env ++# read them from qmake.conf, replace qmake () syntax with shell and eval ++getQEvalMakeConf() ++{ ++ VAL=`getQMakeConf "$1" | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'` ++ EVAL=`eval "echo ${VAL}"` ++# echo "Running getQEvalMakeConf: var='$1', val='`getQMakeConf \"$1\"`, val-sed='$VAL', eval='$EVAL'" >&2 ++ eval "echo ${VAL}" ++} ++ + getXQMakeConf() + { + if [ -z "$xspecvals" ]; then +@@ -333,6 +343,16 @@ getXQMakeConf() + getSingleQMakeVariable "$1" "$xspecvals" + } + ++# OE qmake.conf is reading some variables from shell env ++# read them from qmake.conf, replace qmake () syntax with shell and eval ++getXQEvalMakeConf() ++{ ++ VAL=`getXQMakeConf "$1" | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'` ++ EVAL=`eval "echo ${VAL}"` ++# echo "Running getXQEvalMakeConf: var='$1', val='`getXQMakeConf \"$1\"`, val-sed='$VAL', eval='$EVAL'" >&2 ++ eval "echo ${VAL}" ++} ++ + compilerSupportsFlag() + { + cat >conftest.cpp <<EOF +@@ -548,6 +568,18 @@ fi + # initalize variables + #------------------------------------------------------------------------------- + ++# Export all OE variables for qmake.conf from shell env to QMakeVars ++OE_VARIABLES="AR CC CFLAGS COMPILER CXX CXXFLAGS LDFLAGS LINK QT_CONFIG STRIP" ++for varname in $OE_VARIABLES; do ++ qmakevarname="${varname}" ++ cmd=`echo \ ++'if [ -n "\$OE_QMAKE_'${varname}'" ]; then ++ QMakeVar set OE_QMAKE_'${qmakevarname}' "\$OE_QMAKE_'${varname}'" ++# echo "Exporting OE_QMAKE_'${qmakevarname}' value=\"\$OE_QMAKE_'${varname}'\"" >&2 ++fi'` ++ eval "$cmd" ++done ++ + SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS" + for varname in $SYSTEM_VARIABLES; do + qmakevarname="${varname}" +@@ -3344,7 +3376,7 @@ if [ "$XPLATFORM_MAC" = "yes" ] && [ "$CFG_QGTKSTYLE" = "auto" ]; then + CFG_QGTKSTYLE=no + fi + +-QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX` ++QMAKE_CONF_COMPILER=`getXQEvalMakeConf QMAKE_CXX` + + TEST_COMPILER=$QMAKE_CONF_COMPILER + +@@ -3379,7 +3411,7 @@ if [ "$XPLATFORM_SYMBIAN_SBSV2" = "no" ]; then + exit 1 + fi + fi +-TEST_COMPILER_CXXFLAGS=`getXQMakeConf QMAKE_CXXFLAGS` ++TEST_COMPILER_CXXFLAGS=`getXQEvalMakeConf QMAKE_CXXFLAGS` + + GCC_MACHINE_DUMP= + case "$TEST_COMPILER" in *g++) GCC_MACHINE_DUMP=$($TEST_COMPILER -dumpmachine);; esac +@@ -3860,6 +3892,14 @@ setBootstrapVariable() + getQMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile" + } + ++# OE qmake.conf is reading some variables from shell env ++# read them from qmake.conf, replace qmake () syntax with shell and eval ++setBootstrapEvalVariable() ++{ ++ getQEvalMakeConf "$1" | echo ${2-$1} = `if [ -n "$3" ]; then sed "$3"; else cat; fi` >> "$mkfile" ++} ++ ++ + # build qmake + if true; then ###[ '!' -f "$outpath/bin/qmake" ]; + echo "Creating qmake..." +@@ -3898,11 +3938,11 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; + fi + + [ "$CFG_SILENT" = "yes" ] && CC_TRANSFORM='s,^,\@,' || CC_TRANSFORM= +- setBootstrapVariable QMAKE_CC CC "$CC_TRANSFORM" +- setBootstrapVariable QMAKE_CXX CXX "$CC_TRANSFORM" +- setBootstrapVariable QMAKE_CFLAGS +- setBootstrapVariable QMAKE_CXXFLAGS +- setBootstrapVariable QMAKE_LFLAGS ++ setBootstrapEvalVariable QMAKE_CC CC "$CC_TRANSFORM" ++ setBootstrapEvalVariable QMAKE_CXX CXX "$CC_TRANSFORM" ++ setBootstrapEvalVariable QMAKE_CFLAGS ++ setBootstrapEvalVariable QMAKE_CXXFLAGS ++ setBootstrapEvalVariable QMAKE_LFLAGS + + if [ "$CFG_RELEASE_QMAKE" = "yes" ]; then + setBootstrapVariable QMAKE_CFLAGS_RELEASE +diff --git a/mkspecs/linux-oe-g++/qmake.conf b/mkspecs/linux-oe-g++/qmake.conf +new file mode 100644 +index 0000000..ca26b10 +--- /dev/null ++++ b/mkspecs/linux-oe-g++/qmake.conf +@@ -0,0 +1,40 @@ ++# ++# qmake configuration for linux-g++ with modifications for building with OpenEmbedded ++# ++ ++MAKEFILE_GENERATOR = UNIX ++CONFIG += incremental ++QMAKE_INCREMENTAL_STYLE = sublib ++ ++include(../common/linux.conf) ++ ++# QMAKE_<TOOL> (moc, uic, rcc) are gone, overwrite only ar and strip ++QMAKE_AR = $(OE_QMAKE_AR) cqs ++QMAKE_STRIP = $(OE_QMAKE_STRIP) ++QMAKE_WAYLAND_SCANNER = $(OE_QMAKE_WAYLAND_SCANNER) ++ ++include(../common/gcc-base-unix.conf) ++ ++# *FLAGS from gcc-base.conf ++QMAKE_CFLAGS += $(OE_QMAKE_CFLAGS) ++QMAKE_CXXFLAGS += $(OE_QMAKE_CXXFLAGS) ++QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS) ++ ++include(../common/g++-unix.conf) ++ ++# tc settings from g++-base.conf ++QMAKE_COMPILER = $(OE_QMAKE_COMPILER) ++QMAKE_CC = $(OE_QMAKE_CC) ++QMAKE_CXX = $(OE_QMAKE_CXX) ++ ++QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS) ++ ++QMAKE_LINK = $(OE_QMAKE_LINK) ++QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK) ++QMAKE_LINK_C = $(OE_QMAKE_LINK) ++QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK) ++ ++# for the SDK ++isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG) ++ ++load(qt_config) +diff --git a/mkspecs/linux-oe-g++/qplatformdefs.h b/mkspecs/linux-oe-g++/qplatformdefs.h +new file mode 100644 +index 0000000..dd12003 +--- /dev/null ++++ b/mkspecs/linux-oe-g++/qplatformdefs.h +@@ -0,0 +1,100 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the qmake spec of the Qt Toolkit. ++** ++** $QT_BEGIN_LICENSE:LGPL$ ++** Commercial License Usage ++** Licensees holding valid commercial Qt licenses may use this file in ++** accordance with the commercial license agreement provided with the ++** Software or, alternatively, in accordance with the terms contained in ++** a written agreement between you and Digia. For licensing terms and ++** conditions see http://qt.digia.com/licensing. For further information ++** use the contact form at http://qt.digia.com/contact-us. ++** ++** GNU Lesser General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU Lesser ++** General Public License version 2.1 as published by the Free Software ++** Foundation and appearing in the file LICENSE.LGPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU Lesser General Public License version 2.1 requirements ++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ++** ++** In addition, as a special exception, Digia gives you certain additional ++** rights. These rights are described in the Digia Qt LGPL Exception ++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ++** ++** GNU General Public License Usage ++** Alternatively, this file may be used under the terms of the GNU ++** General Public License version 3.0 as published by the Free Software ++** Foundation and appearing in the file LICENSE.GPL included in the ++** packaging of this file. Please review the following information to ++** ensure the GNU General Public License version 3.0 requirements will be ++** met: http://www.gnu.org/copyleft/gpl.html. ++** ++** ++** $QT_END_LICENSE$ ++** ++****************************************************************************/ ++ ++#ifndef QPLATFORMDEFS_H ++#define QPLATFORMDEFS_H ++ ++// Get Qt defines/settings ++ ++#include "qglobal.h" ++ ++// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs ++ ++// 1) need to reset default environment if _BSD_SOURCE is defined ++// 2) need to specify POSIX thread interfaces explicitly in glibc 2.0 ++// 3) it seems older glibc need this to include the X/Open stuff ++#ifndef _GNU_SOURCE ++# define _GNU_SOURCE ++#endif ++ ++#include <unistd.h> ++ ++ ++// We are hot - unistd.h should have turned on the specific APIs we requested ++ ++#include <features.h> ++#include <pthread.h> ++#include <dirent.h> ++#include <fcntl.h> ++#include <grp.h> ++#include <pwd.h> ++#include <signal.h> ++ ++#include <sys/types.h> ++#include <sys/ioctl.h> ++#include <sys/ipc.h> ++#include <sys/time.h> ++#include <sys/shm.h> ++#include <sys/socket.h> ++#include <sys/stat.h> ++#include <sys/wait.h> ++#include <netinet/in.h> ++#ifndef QT_NO_IPV6IFNAME ++#include <net/if.h> ++#endif ++ ++#define QT_USE_XOPEN_LFS_EXTENSIONS ++#include "../common/posix/qplatformdefs.h" ++ ++#undef QT_SOCKLEN_T ++ ++#if defined(__GLIBC__) && (__GLIBC__ >= 2) ++#define QT_SOCKLEN_T socklen_t ++#else ++#define QT_SOCKLEN_T int ++#endif ++ ++#if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) ++#define QT_SNPRINTF ::snprintf ++#define QT_VSNPRINTF ::vsnprintf ++#endif ++ ++#endif // QPLATFORMDEFS_H +-- +1.8.5.2 + 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..afc25cc4 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch @@ -0,0 +1,36 @@ +From c6c1e780ed6a443a0c68c3200aeea9ced76f444c Mon Sep 17 00:00:00 2001 +From: Holger Freyther <zecke@selfish.org> +Date: Wed, 26 Sep 2012 17:22:30 +0200 +Subject: [PATCH 02/14] qlibraryinfo: allow to set qt.conf from the outside + using the environment + +Allow to set a qt.conf from the outside using the environment. This allows +to inject new prefixes and other paths into qmake. This is needed when using +the same qmake binary to build qt/x11 and qt/embedded + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/corelib/global/qlibraryinfo.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp +index 1c3b09f..c647a16 100644 +--- a/src/corelib/global/qlibraryinfo.cpp ++++ b/src/corelib/global/qlibraryinfo.cpp +@@ -149,7 +149,10 @@ QLibrarySettings::QLibrarySettings() + + QSettings *QLibraryInfoPrivate::findConfiguration() + { +- QString qtconfig = QStringLiteral(":/qt/etc/qt.conf"); ++ QByteArray config = getenv("QT_CONF_PATH"); ++ QString qtconfig = QFile::decodeName(config); ++ if(!QFile::exists(qtconfig)) ++ qtconfig = QStringLiteral(":/qt/etc/qt.conf"); + #ifdef QT_BOOTSTRAPPED + if(!QFile::exists(qtconfig)) + qtconfig = qt_libraryInfoFile(); +-- +1.8.5.2 + 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..3f7854fd --- /dev/null +++ b/recipes-qt/qt5/qtbase/0003-Add-external-hostbindir-option.patch @@ -0,0 +1,228 @@ +From 21c595fd0e386bea1a2e2b19323dc517bb2c7333 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Sat, 6 Apr 2013 13:15:07 +0200 +Subject: [PATCH 03/14] Add -external-hostbindir option + +* when cross-compiling it's sometimes useful to use existing tools from machine + (or in OpenEmbedded built with separate native recipe) when building for target + +* this way we can skip bootstraping tools we already have + +* qt_functions: temporary remove isEmpty check +* now we assume that every build will provide QT_EXTERNAL_HOST_BINS value +* isEmpty works correctly only with qmake variables (e.g. $$FOO - + isEmpty(FOO)), but doesn't work with system properties like $$[FOO]. + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 15 +++++++++++++++ + mkspecs/features/qt_functions.prf | 9 ++++++++- + mkspecs/features/qt_tool.prf | 3 +-- + qmake/property.cpp | 1 + + qtbase.pro | 12 +++++++++--- + src/corelib/global/qlibraryinfo.cpp | 3 ++- + src/corelib/global/qlibraryinfo.h | 1 + + tools/configure/configureapp.cpp | 8 ++++++++ + 8 files changed, 45 insertions(+), 7 deletions(-) + +diff --git a/configure b/configure +index 1b328ae..46f7230 100755 +--- a/configure ++++ b/configure +@@ -785,6 +785,7 @@ QT_HOST_BINS= + QT_HOST_LIBS= + QT_HOST_DATA= + QT_EXT_PREFIX= ++QT_EXTERNAL_HOST_BINS= + + #flags for SQL drivers + QT_CFLAGS_PSQL= +@@ -905,6 +906,7 @@ while [ "$#" -gt 0 ]; do + -testsdir| \ + -hostdatadir| \ + -hostbindir| \ ++ -external-hostbindir| \ + -hostlibdir| \ + -extprefix| \ + -sysroot| \ +@@ -1118,6 +1120,9 @@ while [ "$#" -gt 0 ]; do + extprefix) + QT_EXT_PREFIX="$VAL" + ;; ++ external-hostbindir) ++ QT_EXTERNAL_HOST_BINS="$VAL" ++ ;; + pkg-config) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_PKGCONFIG="$VAL" +@@ -2226,6 +2231,10 @@ Installation options: + -hostdatadir <dir> . Data used by qmake will be installed to <dir> + (default HOSTPREFIX) + ++ -external-hostbindir <dir> Use external host executables instead of building them ++ (not used by defaut) ++ ++ + Configure options: + + The defaults (*) are usually acceptable. A plus (+) denotes a default value +@@ -3133,6 +3142,11 @@ fi + # command line and environment validation + #------------------------------------------------------------------------------- + ++# default is empty, don't call makeabs if it is empty ++if [ ! -z "$QT_EXTERNAL_HOST_BINS" ]; then ++ QT_EXTERNAL_HOST_BINS=`"$relpath/config.tests/unix/makeabs" "$QT_EXTERNAL_HOST_BINS"` ++fi ++ + # update QT_CONFIG to show our current predefined configuration + CFG_QCONFIG_PATH=$relpath/src/corelib/global/qconfig-${CFG_QCONFIG}.h + case "$CFG_QCONFIG" in +@@ -3820,6 +3834,7 @@ static const char qt_configure_prefix_path_strs[][256 + 12] = { + "qt_hbinpath=$QT_HOST_BINS", + "qt_hlibpath=$QT_HOST_LIBS", + "qt_hdatpath=$QT_HOST_DATA", ++ "qt_ebinpath=$QT_EXTERNAL_HOST_BINS", + "qt_targspec=$shortxspec", + "qt_hostspec=$shortspec", + #endif +diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf +index 1dacfed..7229845 100644 +--- a/mkspecs/features/qt_functions.prf ++++ b/mkspecs/features/qt_functions.prf +@@ -193,7 +193,14 @@ defineTest(qtAddRpathLink) { + defineTest(qtPrepareTool) { + $$1 = $$eval(QT_TOOL.$${2}.binary) + isEmpty($$1) { +- $$1 = $$[QT_HOST_BINS]/$$2 ++ $$1 = $$[QT_EXTERNAL_HOST_BINS]/$$2 ++ # for some reason isEmpty does not work here, FIXME before submitting upstream ++ # DEBUG 1: mkspecs/features/qt_functions.prf:198: calling built-in isEmpty(/OE/oe-core/tmp-eglibc/sysroots/x86_64-linux/usr/bin/qt5) ++ # DEBUG 1: mkspecs/features/qt_functions.prf:198: test function returned true ++ # DEBUG 1: mkspecs/features/qt_functions.prf:198: taking 'then' branch ++ !exists($$[QT_EXTERNAL_HOST_BINS]/$$2) { ++ $$1 = $$[QT_HOST_BINS]/$$2 ++ } + exists($$eval($$1).pl) { + $$1 = perl -w $$eval($$1).pl + } else: contains(QMAKE_HOST.os, Windows) { +diff --git a/mkspecs/features/qt_tool.prf b/mkspecs/features/qt_tool.prf +index f0864f9..50bfac8 100644 +--- a/mkspecs/features/qt_tool.prf ++++ b/mkspecs/features/qt_tool.prf +@@ -15,8 +15,7 @@ CONFIG += console + + # If we are doing a prefix build, create a "module" pri which enables + # qtPrepareTool() to work with the non-installed build. +-# Non-bootstrapped tools always need this because of the environment setup. +-!build_pass:if(!host_build|!force_bootstrap|force_independent) { ++!build_pass:if(!host_build|!force_bootstrap|force_independent):!exists($$[QT_EXTERNAL_HOST_BINS]) { + isEmpty(MODULE):MODULE = $$TARGET + + !host_build|!force_bootstrap: MODULE_DEPENDS = $$replace(QT, -private$, _private) +diff --git a/qmake/property.cpp b/qmake/property.cpp +index e50485c..71291ad 100644 +--- a/qmake/property.cpp ++++ b/qmake/property.cpp +@@ -75,6 +75,7 @@ static const struct { + { "QT_HOST_DATA", QLibraryInfo::HostDataPath, true }, + { "QT_HOST_BINS", QLibraryInfo::HostBinariesPath, true }, + { "QT_HOST_LIBS", QLibraryInfo::HostLibrariesPath, true }, ++ { "QT_EXTERNAL_HOST_BINS", QLibraryInfo::ExternalHostBinariesPath, true }, + { "QMAKE_SPEC", QLibraryInfo::HostSpecPath, true }, + { "QMAKE_XSPEC", QLibraryInfo::TargetSpecPath, true }, + }; +diff --git a/qtbase.pro b/qtbase.pro +index 7576db7..d51af0e 100644 +--- a/qtbase.pro ++++ b/qtbase.pro +@@ -70,16 +70,22 @@ CONFIG -= qt + + #qmake + qmake.path = $$[QT_HOST_BINS] ++qmake.files = $$OUT_PWD/bin/qmake ++!isEmpty($$[QT_EXTERNAL_HOST_BINS]) { ++ qmake.files = $$[QT_EXTERNAL_HOST_BINS]/bin/qmake ++} + equals(QMAKE_HOST.os, Windows) { +- qmake.files = $$OUT_PWD/bin/qmake.exe +-} else { +- qmake.files = $$OUT_PWD/bin/qmake ++ qmake.files = $${qmake.files}.exe + } + INSTALLS += qmake + + #syncqt + syncqt.path = $$[QT_HOST_BINS] + syncqt.files = $$PWD/bin/syncqt.pl ++syncqt.files = $$PWD/bin/syncqt.pl ++!isEmpty($$[QT_EXTERNAL_HOST_BINS]) { ++ syncqt.files = $$[QT_EXTERNAL_HOST_BINS]/bin/syncqt.pl ++} + INSTALLS += syncqt + + # If we are doing a prefix build, create a "module" pri which enables +diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp +index c647a16..da82913 100644 +--- a/src/corelib/global/qlibraryinfo.cpp ++++ b/src/corelib/global/qlibraryinfo.cpp +@@ -281,7 +281,7 @@ QLibraryInfo::isDebugBuild() + */ + + static const struct { +- char key[19], value[13]; ++ char key[21], value[13]; + } qtConfEntries[] = { + { "Prefix", "." }, + { "Documentation", "doc" }, // should be ${Data}/doc +@@ -307,6 +307,7 @@ static const struct { + { "HostBinaries", "bin" }, + { "HostLibraries", "lib" }, + { "HostData", "." }, ++ { "ExternalHostBinaries", "" }, + { "TargetSpec", "" }, + { "HostSpec", "" }, + #endif +diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h +index 17864b5..a14bc0f 100644 +--- a/src/corelib/global/qlibraryinfo.h ++++ b/src/corelib/global/qlibraryinfo.h +@@ -84,6 +84,7 @@ public: + HostBinariesPath, + HostLibrariesPath, + HostDataPath, ++ ExternalHostBinariesPath, + TargetSpecPath, + HostSpecPath, + LastHostPath = HostSpecPath, +diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp +index e2fef2c..ab475c3 100644 +--- a/tools/configure/configureapp.cpp ++++ b/tools/configure/configureapp.cpp +@@ -1186,6 +1186,13 @@ void Configure::parseCmdLine() + dictionary[ "QT_EXT_PREFIX" ] = configCmdLine.at(i); + } + ++ else if (configCmdLine.at(i) == "-external-hostbindir") { ++ ++i; ++ if (i == argCount) ++ break; ++ dictionary[ "QT_EXTERNAL_HOST_BINS" ] = configCmdLine.at(i); ++ } ++ + else if (configCmdLine.at(i) == "-make-tool") { + ++i; + if (i == argCount) +@@ -3852,6 +3859,7 @@ void Configure::generateQConfigCpp() + << " \"qt_hbinpath=" << formatPath(dictionary["QT_HOST_BINS"]) << "\"," << endl + << " \"qt_hlibpath=" << formatPath(dictionary["QT_HOST_LIBS"]) << "\"," << endl + << " \"qt_hdatpath=" << formatPath(dictionary["QT_HOST_DATA"]) << "\"," << endl ++ << " \"qt_ebinpath=" << formatPath(dictionary["QT_EXTERNAL_HOST_BINS"]) << "\"," << endl + << " \"qt_targspec=" << targSpec << "\"," << endl + << " \"qt_hostspec=" << hostSpec << "\"," << endl + << "#endif" << endl +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0004-configureapp-Prefix-default-LIBDIRS-and-INCDIRS-with.patch b/recipes-qt/qt5/qtbase/0004-configureapp-Prefix-default-LIBDIRS-and-INCDIRS-with.patch new file mode 100644 index 00000000..71a45969 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0004-configureapp-Prefix-default-LIBDIRS-and-INCDIRS-with.patch @@ -0,0 +1,29 @@ +From 925a8c67fef4bfa56bdc3c1c7cd87e21defc3d94 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Sat, 27 Apr 2013 22:33:33 +0200 +Subject: [PATCH 04/14] configureapp: Prefix default LIBDIRS and INCDIRS with + SYSROOT + +Upstream-Status: Pending +--- + tools/configure/configureapp.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp +index ab475c3..68cd43d 100644 +--- a/tools/configure/configureapp.cpp ++++ b/tools/configure/configureapp.cpp +@@ -3213,8 +3213,8 @@ void Configure::generateQConfigPri() + configStream << " QT_ARCH = " << dictionary["QT_ARCH"] << endl; + if (dictionary.contains("XQMAKESPEC") && !dictionary["XQMAKESPEC"].startsWith("wince")) { + // FIXME: add detection +- configStream << " QMAKE_DEFAULT_LIBDIRS = /lib /usr/lib" << endl; +- configStream << " QMAKE_DEFAULT_INCDIRS = /usr/include /usr/local/include" << endl; ++ configStream << " QMAKE_DEFAULT_LIBDIRS = $$[QT_SYSROOT]/lib $$[QT_SYSROOT]/usr/lib" << endl; ++ configStream << " QMAKE_DEFAULT_INCDIRS = $$[QT_SYSROOT]/usr/include $$[QT_SYSROOT]/usr/local/include" << endl; + } + configStream << "}" << endl; + if (dictionary["QT_EDITION"].contains("OPENSOURCE")) +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0005-qt_module-Fix-pkgconfig-replacement.patch b/recipes-qt/qt5/qtbase/0005-qt_module-Fix-pkgconfig-replacement.patch new file mode 100644 index 00000000..f85fb33b --- /dev/null +++ b/recipes-qt/qt5/qtbase/0005-qt_module-Fix-pkgconfig-replacement.patch @@ -0,0 +1,117 @@ +From 33bbb10c66df59abfad9f4576462f63dfb500149 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Sat, 27 Apr 2013 23:15:37 +0200 +Subject: [PATCH 05/14] qt_module: Fix pkgconfig replacement +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +* in situation like this: + QT_SYSROOT:/OE/oe-core/tmp-eglibc/sysroots/qemuarm + QT_INSTALL_LIBS:/OE/oe-core/tmp-eglibc/sysroots/qemuarm/usr/lib + QT_INSTALL_LIBS/raw:/usr/lib + QT_INSTALL_LIBS/get:/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/lib + + I don't want the replacement like this: + sed + -e "s,/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/include,/usr/include/qt5,g" + -e "s,/OE/oe-core/tmp-eglibc/work/armv5te-oe-linux-gnueabi/qtbase/5.0.0-r0.0/build/lib,/usr/lib,g" + "../../lib/pkgconfig/Qt5Core.pc" + >"/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" + because that way I'll end with -L/usr/lib in .pc file which is + cross-compile unfriendly, keeping ${libdir}/${includedir} works better + in my case + +* qt_module: Fix paths in .prl files +* qmake does not prefix them with QT_SYSROOT when using them + so e.g. when building qtdeclarative we get -L/usr/lib to LINKAGE + variable, which is unsafe for cross-compilation +* writting QT_SYSROOT in .prl files is dangerous for sstate when + builds are in different directories, so we need + SSTATE_SCAN_FILES += "*.pri *.prl" + to make them relocateble + +* fix paths in packageconfig files + This reverts parts of: + enable path replacement in installed prl files on all platforms + Task-number: QTBUG-33794 + Change-Id: Id0d38715673b8a1c0c034e9c15783eb255c4315b + Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com> +--- + mkspecs/features/qt_module.prf | 43 ++++++++++++++++++++++++++++++------------ + 1 file changed, 31 insertions(+), 12 deletions(-) + +diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf +index 11509ee..2f95684 100644 +--- a/mkspecs/features/qt_module.prf ++++ b/mkspecs/features/qt_module.prf +@@ -135,30 +135,49 @@ load(qt_installs) + rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* + else: \ + rplbase = $$MODULE_BASE_OUTDIR +-include_replace.match = $$rplbase/include +-include_replace.replace = $$[QT_INSTALL_HEADERS/raw] +-include_replace.CONFIG = path +-lib_replace.match = $$rplbase/lib +-host_build: \ +- lib_replace.replace = $$[QT_HOST_LIBS] +-else: \ ++pkgconfig_include_replace.match = $$rplbase/include ++pkgconfig_include_replace.replace = "\$$\\{includedir}" ++pkgconfig_lib_replace.match = $$rplbase/lib ++pkgconfig_lib_replace.replace = "\$$\\{libdir}" ++!exists($$[QT_SYSROOT]) { ++ include_replace.match = $$rplbase/include ++ include_replace.replace = $$[QT_INSTALL_HEADERS/raw] ++ include_replace.CONFIG = path ++ lib_replace.match = $$rplbase/lib + lib_replace.replace = $$[QT_INSTALL_LIBS/raw] +-lib_replace.CONFIG = path ++ lib_replace.CONFIG = path ++ lafile_replace.match = $$rplbase ++ lafile_replace.replace = "$$[QT_INSTALL_PREFIX/raw]" ++} else { ++ # include_replace and lib_replace are duplicate, but we don't want to ++ # make QMAKE_PKGCONFIG_INSTALL_REPLACE, QMAKE_PRL_INSTALL_REPLACE conditional ++ include_replace.match = $$rplbase ++ include_replace.replace = $$[QT_SYSROOT]$$[QT_INSTALL_PREFIX/raw] ++ include_replace.CONFIG = path ++ lib_replace.match = $$rplbase ++ lib_replace.replace = $$[QT_SYSROOT]$$[QT_INSTALL_PREFIX/raw] ++ lib_replace.CONFIG = path ++ lafile_replace.match = $$rplbase ++ lafile_replace.replace = "=$$[QT_INSTALL_PREFIX/raw]" ++} + QMAKE_PRL_INSTALL_REPLACE += include_replace lib_replace + + unix|win32-g++* { + CONFIG += create_pc +- QMAKE_PKGCONFIG_LIBDIR = $$lib_replace.replace +- QMAKE_PKGCONFIG_INCDIR = $$include_replace.replace ++ host_build: \ ++ QMAKE_PKGCONFIG_LIBDIR = $$[QT_HOST_LIBS] ++ else: \ ++ QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS/raw] ++ QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS/raw] + QMAKE_PKGCONFIG_CFLAGS = -I${includedir}/$$MODULE_INCNAME + QMAKE_PKGCONFIG_DESTDIR = pkgconfig +- QMAKE_PKGCONFIG_INSTALL_REPLACE += include_replace lib_replace ++ QMAKE_PKGCONFIG_INSTALL_REPLACE += pkgconfig_include_replace pkgconfig_lib_replace + } + + unix { + CONFIG += create_libtool explicitlib + QMAKE_LIBTOOL_LIBDIR = $$lib_replace.replace +- QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace ++ QMAKE_LIBTOOL_INSTALL_REPLACE += include_replace lib_replace lafile_replace + } + + unix|win32-g++* { +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0006-configure-don-t-export-SYSTEM_VARIABLES-to-.qmake.va.patch b/recipes-qt/qt5/qtbase/0006-configure-don-t-export-SYSTEM_VARIABLES-to-.qmake.va.patch new file mode 100644 index 00000000..82e028d7 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0006-configure-don-t-export-SYSTEM_VARIABLES-to-.qmake.va.patch @@ -0,0 +1,43 @@ +From ce1afee66a6310f362644e71d17f8d1eb3f848da Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Wed, 8 May 2013 23:54:35 +0200 +Subject: [PATCH 06/14] configure: don't export SYSTEM_VARIABLES to .qmake.vars + +* linux-oe-g++ should handle this correctly and exporting LD as QMAKE_LINK is + causing issues as we need g++ to be used as linker + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 14 -------------- + 1 file changed, 14 deletions(-) + +diff --git a/configure b/configure +index 46f7230..96c56c8 100755 +--- a/configure ++++ b/configure +@@ -581,20 +581,6 @@ fi'` + done + + SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS" +-for varname in $SYSTEM_VARIABLES; do +- qmakevarname="${varname}" +- # use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS +- if [ "${varname}" = "LDFLAGS" ]; then +- qmakevarname="LFLAGS" +- elif [ "${varname}" = "LD" ]; then +- qmakevarname="LINK" +- fi +- cmd=`echo \ +-'if [ -n "\$'${varname}'" ]; then +- QMakeVar set QMAKE_'${qmakevarname}' "\$'${varname}'" +-fi'` +- eval "$cmd" +-done + # Use CC/CXX to run config.tests + mkdir -p "$outpath/config.tests" + rm -f "$outpath/config.tests/.qmake.cache" +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0007-configure.prf-Allow-to-add-extra-arguments-to-make.patch b/recipes-qt/qt5/qtbase/0007-configure.prf-Allow-to-add-extra-arguments-to-make.patch new file mode 100644 index 00000000..b2b5ef9c --- /dev/null +++ b/recipes-qt/qt5/qtbase/0007-configure.prf-Allow-to-add-extra-arguments-to-make.patch @@ -0,0 +1,37 @@ +From 7846422a1d4ca37583fbbd10d768e34ddf84d233 Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Thu, 9 May 2013 10:06:50 +0200 +Subject: [PATCH 07/14] configure.prf: Allow to add extra arguments to make + +* sometimes we would like to add -e or define some variable and respect it from both + Makefiles used in configure tests and also Makefiles to build the application + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + mkspecs/features/configure.prf | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/mkspecs/features/configure.prf b/mkspecs/features/configure.prf +index 39144e7..de48b07 100644 +--- a/mkspecs/features/configure.prf ++++ b/mkspecs/features/configure.prf +@@ -54,12 +54,12 @@ defineTest(qtCompileTest) { + qmake_configs = "\"CONFIG -= qt debug_and_release app_bundle lib_bundle\"" + + # Clean up after previous run +- exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE distclean") ++ exists($$test_out_dir/Makefile):qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS) distclean") + + mkpath($$test_out_dir)|error("Aborting.") + + qtRunLoggedCommand("$$test_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE)) $$qmake_configs $$shell_quote($$test_dir)") { +- qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE") { ++ qtRunLoggedCommand("$$test_cmd_base $$QMAKE_MAKE $$(QMAKE_MAKE_ARGS)") { + log("yes$$escape_expand(\\n)") + msg = "test $$1 succeeded" + write_file($$QMAKE_CONFIG_LOG, msg, append) +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0008-configure-make-pulseaudio-alsa-freetype-a-configurab.patch b/recipes-qt/qt5/qtbase/0008-configure-make-pulseaudio-alsa-freetype-a-configurab.patch new file mode 100644 index 00000000..eea0c343 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0008-configure-make-pulseaudio-alsa-freetype-a-configurab.patch @@ -0,0 +1,49 @@ +From 9bb1bbebd644c243413650defa08a99eb4678a87 Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Tue, 28 Feb 2012 15:10:24 +0000 +Subject: [PATCH 08/14] configure: make pulseaudio, alsa, freetype a + configurable option + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/configure b/configure +index 96c56c8..b3854aa 100755 +--- a/configure ++++ b/configure +@@ -1801,6 +1801,27 @@ while [ "$#" -gt 0 ]; do + UNKNOWN_OPT=yes + fi + ;; ++ pulseaudio) ++ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then ++ CFG_PULSEAUDIO="$VAL" ++ else ++ UNKNOWN_OPT=yes ++ fi ++ ;; ++ alsa) ++ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then ++ CFG_ALSA="$VAL" ++ else ++ UNKNOWN_OPT=yes ++ fi ++ ;; ++ freetype) ++ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "system" ]; then ++ CFG_LIBFREETYPE="$VAL" ++ else ++ UNKNOWN_OPT=yes ++ fi ++ ;; + gtkstyle) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_QGTKSTYLE="$VAL" +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0009-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-determ.patch b/recipes-qt/qt5/qtbase/0009-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-determ.patch new file mode 100644 index 00000000..b35597b7 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0009-cmake-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-determ.patch @@ -0,0 +1,85 @@ +From b70eabc4050a5e7621511403dcbf7a650b3ef9fc Mon Sep 17 00:00:00 2001 +From: Simon Busch <morphis@gravedo.de> +Date: Mon, 22 Jul 2013 21:09:41 +0000 +Subject: [PATCH 09/14] cmake: Use OE_QMAKE_PATH_EXTERNAL_HOST_BINS to + determine path to host binaries + +Upstream-Status: Inappropiate (configuration) + +Signed-off-by: Simon Busch <morphis@gravedo.de> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/corelib/Qt5CoreConfigExtras.cmake.in | 6 +++--- + src/dbus/Qt5DBusConfigExtras.cmake.in | 4 ++-- + src/widgets/Qt5WidgetsConfigExtras.cmake.in | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in +index 1e00c74..a99b5bf 100644 +--- a/src/corelib/Qt5CoreConfigExtras.cmake.in ++++ b/src/corelib/Qt5CoreConfigExtras.cmake.in +@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qmake) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qmake$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Core_check_file_exists(${imported_location}) + +@@ -20,7 +20,7 @@ if (NOT TARGET Qt5::moc) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/moc$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Core_check_file_exists(${imported_location}) + +@@ -37,7 +37,7 @@ if (NOT TARGET Qt5::rcc) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/rcc$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Core_check_file_exists(${imported_location}) + +diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in +index 1d94715..301af8f 100644 +--- a/src/dbus/Qt5DBusConfigExtras.cmake.in ++++ b/src/dbus/Qt5DBusConfigExtras.cmake.in +@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::qdbuscpp2xml) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_DBus_check_file_exists(${imported_location}) + +@@ -20,7 +20,7 @@ if (NOT TARGET Qt5::qdbusxml2cpp) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_DBus_check_file_exists(${imported_location}) + +diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in +index e5650ff..16ff007 100644 +--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in ++++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in +@@ -5,7 +5,7 @@ if (NOT TARGET Qt5::uic) + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) + set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") + !!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}/uic$$CMAKE_BIN_SUFFIX\") + !!ENDIF + _qt5_Widgets_check_file_exists(${imported_location}) + +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0010-Always-build-uic.patch b/recipes-qt/qt5/qtbase/0010-Always-build-uic.patch new file mode 100644 index 00000000..91370f17 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0010-Always-build-uic.patch @@ -0,0 +1,38 @@ +From 1ea3afc37eba9ea4b1bee3916abd1bcf6abf97ba Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Sat, 16 Nov 2013 00:32:30 +0100 +Subject: [PATCH 10/12] Always build uic + +Even if we are not building gui or widgets. This tool is needed later +as a native tool when compiling the target. + +Change-Id: I257668ac28c22b192e7ec7736e6c23fa3be6bab6 +Signed-off-by: Mikko Levonmaa <mikko.levonmaa@palm.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/src.pro | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/src.pro b/src/src.pro +index b7887a6..8801544 100644 +--- a/src/src.pro ++++ b/src/src.pro +@@ -145,7 +145,7 @@ contains(QT_CONFIG, concurrent):SUBDIRS += src_concurrent + } + } + } +-SUBDIRS += src_plugins src_tools_qdoc ++SUBDIRS += src_plugins src_tools_qdoc src_tools_uic + + nacl: SUBDIRS -= src_network src_testlib + +@@ -156,4 +156,4 @@ TR_EXCLUDE = \ + src_tools_bootstrap_dbus src_tools_qdbusxml2cpp src_tools_qdbuscpp2xml + + sub-tools.depends = $$TOOLS +-QMAKE_EXTRA_TARGETS = sub-tools +\ No newline at end of file ++QMAKE_EXTRA_TARGETS = sub-tools +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0010-qmake-is-already-built-in-qtbase-native.patch b/recipes-qt/qt5/qtbase/0010-qmake-is-already-built-in-qtbase-native.patch new file mode 100644 index 00000000..1b1d85e3 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0010-qmake-is-already-built-in-qtbase-native.patch @@ -0,0 +1,30 @@ +From 96a18197ac6d9960fd00654acffd6a81bafa0320 Mon Sep 17 00:00:00 2001 +From: Michael Krelin <hacker@klever.net> +Date: Mon, 29 Oct 2012 20:07:49 -0700 +Subject: [PATCH 10/14] qmake is already built in qtbase-native + +Ported from OE by: Yu Ke <ke.yu@intel.com> +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Mikko Levonmaa <mikko.levonmaa@gmail.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index b3854aa..15c89c7 100755 +--- a/configure ++++ b/configure +@@ -3923,7 +3923,7 @@ setBootstrapEvalVariable() + + + # build qmake +-if true; then ###[ '!' -f "$outpath/bin/qmake" ]; ++if false; then ###[ '!' -f "$outpath/bin/qmake" ]; + echo "Creating qmake..." + + mkdir -p "$outpath/qmake" || exit +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0011-Allow-building-a-separate-qmake-for-the-target.patch b/recipes-qt/qt5/qtbase/0011-Allow-building-a-separate-qmake-for-the-target.patch new file mode 100644 index 00000000..65b65aa7 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0011-Allow-building-a-separate-qmake-for-the-target.patch @@ -0,0 +1,30 @@ +From 69c6d0ccc6097da0479fddc905dd8aa69cb1d0e2 Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Mon, 29 Oct 2012 20:26:36 -0700 +Subject: [PATCH 11/14] Allow building a separate qmake for the target + +Upstream-Status: Inappropriate [config] + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Mikko Levonmaa <mikko.levonmaa@gmail.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + qmake/qmake.pro | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/qmake/qmake.pro b/qmake/qmake.pro +index 89d6ea5..7c605b9 100644 +--- a/qmake/qmake.pro ++++ b/qmake/qmake.pro +@@ -8,6 +8,8 @@ CONFIG -= qt + DEFINES += \ + QT_BUILD_QMAKE \ + PROEVALUATOR_FULL ++DESTDIR = ../bin/ ++TARGET = qmake + + VPATH += \ + ../src/corelib/global \ +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0011-configure-preserve-built-qmake-and-swap-with-native-.patch b/recipes-qt/qt5/qtbase/0011-configure-preserve-built-qmake-and-swap-with-native-.patch new file mode 100644 index 00000000..9335610d --- /dev/null +++ b/recipes-qt/qt5/qtbase/0011-configure-preserve-built-qmake-and-swap-with-native-.patch @@ -0,0 +1,30 @@ +From 6f42a9e1422f3aba3e2bddb8ef6d470841224ab1 Mon Sep 17 00:00:00 2001 +From: Denys Dmytriyenko <denys@ti.com> +Date: Mon, 11 Nov 2013 20:22:34 -0500 +Subject: [PATCH 11/12] configure: preserve built qmake and swap with native + one + +Let configure script build the real qmake, but right after it's built, swap +it with a native qmake for further internal use, preserving the real one. + +Signed-off-by: Denys Dmytriyenko <denys@ti.com> +--- + configure | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure b/configure +index b3854aa..20836a6 100755 +--- a/configure ++++ b/configure +@@ -4067,6 +4067,8 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; + + (cd "$outpath/qmake"; "$MAKE") || exit 2 + fi # Build qmake ++mv "$outpath/bin/qmake" "$outpath/bin/qmake-real" ++mv "$outpath/bin/qmake-native" "$outpath/bin/qmake" + + echo "Running configuration tests..." + +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0012-configure-bump-path-length-from-256-to-512-character.patch b/recipes-qt/qt5/qtbase/0012-configure-bump-path-length-from-256-to-512-character.patch new file mode 100644 index 00000000..d235797d --- /dev/null +++ b/recipes-qt/qt5/qtbase/0012-configure-bump-path-length-from-256-to-512-character.patch @@ -0,0 +1,29 @@ +From f9db024119ab11177629311101313cfee0fbcbc8 Mon Sep 17 00:00:00 2001 +From: Denys Dmytriyenko <denys@ti.com> +Date: Mon, 11 Nov 2013 20:27:30 -0500 +Subject: [PATCH 12/12] configure: bump path length from 256 to 512 characters + +Increase the path length that gets hardcoded into generated config.cpp file +from 256 to 512 characters, as nativesdk path can be quite long. + +Signed-off-by: Denys Dmytriyenko <denys@ti.com> +--- + configure | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure b/configure +index 20836a6..50661f4 100755 +--- a/configure ++++ b/configure +@@ -3805,7 +3805,7 @@ static const char qt_configure_licensed_products_str [256 + 12] = "qt_lcnsprod=$ + static const char qt_configure_installation [12+11] = "qt_instdate=`date +%Y-%m-%d`"; + + /* Installation Info */ +-static const char qt_configure_prefix_path_strs[][256 + 12] = { ++static const char qt_configure_prefix_path_strs[][512 + 12] = { + #ifndef QT_BUILD_QMAKE + "qt_prfxpath=$QT_SYSROOT_PREFIX", + "qt_docspath=$QT_SYSROOT_DOCS", +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0012-qtbase-allow-build-of-examples.patch b/recipes-qt/qt5/qtbase/0012-qtbase-allow-build-of-examples.patch new file mode 100644 index 00000000..591be8e5 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0012-qtbase-allow-build-of-examples.patch @@ -0,0 +1,48 @@ +From 962bbe70b1f87afa820bd4cee49fcccfb6190341 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric@eukrea.com> +Date: Sat, 25 May 2013 17:34:32 +0200 +Subject: [PATCH 12/14] qtbase: allow build of examples +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +this revert the following commit : + +commit 2b397f985e4ef6ae5c0571a928bb1320fb048c61 +Author: Oswald Buddenhagen <oswald.buddenhagen@digia.com> +Date: Fri Dec 21 19:36:12 2012 +0100 + + do not actually build examples in production builds + + -developer-build enables an actual build of examples, based on the + assumption that developers want to test it (it can be still disabled + with -nomake examples). regular users otoh want only the examples + sources installed. + + Change-Id: Ifc6a108099929175a3960480802b271a758fdd38 + Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> + +Signed-off-by: Eric Bénard <eric@eukrea.com> +--- + mkspecs/features/qt_example_installs.prf | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf +index 2db752c..ca1b0c7 100644 +--- a/mkspecs/features/qt_example_installs.prf ++++ b/mkspecs/features/qt_example_installs.prf +@@ -92,11 +92,4 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples) + allfiles -= doc + !isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles") + } +- +- !equals(TEMPLATE, subdirs):!compile_examples { +- TEMPLATE = aux +- CONFIG -= have_target qt staticlib dll +- SOURCES = +- INSTALLS -= target +- } + } +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0013-QOpenGLPaintDevice-sub-area-support.patch b/recipes-qt/qt5/qtbase/0013-QOpenGLPaintDevice-sub-area-support.patch new file mode 100644 index 00000000..9bef55af --- /dev/null +++ b/recipes-qt/qt5/qtbase/0013-QOpenGLPaintDevice-sub-area-support.patch @@ -0,0 +1,154 @@ +From 4a169ec0dffdb2dc501533a4bca3648ba3a220bf Mon Sep 17 00:00:00 2001 +From: Jani Hautakangas <jani.hautakangas@ixonos.com> +Date: Thu, 16 May 2013 09:52:07 +0300 +Subject: [PATCH 13/14] QOpenGLPaintDevice sub-area support + +Allows creating QOpenGLPaintDevice targetting sub-area +of binded framebuffer. + +Upstream-Status: Pending + +Change-Id: Ida2f079aa1ac0b87d36b54129e226399dbcdda80 + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/gui/opengl/qopenglpaintdevice.cpp | 12 ++++++++++++ + src/gui/opengl/qopenglpaintdevice.h | 2 ++ + src/gui/opengl/qopenglpaintengine.cpp | 10 +++++++--- + src/gui/opengl/qopenglpaintengine_p.h | 1 + + src/gui/opengl/qopengltextureglyphcache.cpp | 2 +- + 5 files changed, 23 insertions(+), 4 deletions(-) + +diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp +index fa392d1..5df1762 100644 +--- a/src/gui/opengl/qopenglpaintdevice.cpp ++++ b/src/gui/opengl/qopenglpaintdevice.cpp +@@ -111,6 +111,7 @@ class QOpenGLPaintDevicePrivate + public: + QOpenGLPaintDevicePrivate(const QSize &size); + ++ QPoint offset; + QSize size; + QOpenGLContext *ctx; + +@@ -159,6 +160,12 @@ QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height) + { + } + ++QOpenGLPaintDevice::QOpenGLPaintDevice(int x, int y, int width, int height) ++ : d_ptr(new QOpenGLPaintDevicePrivate(QSize(width, height))) ++{ ++ d_ptr->offset = QPoint(x,y); ++} ++ + /*! + Destroys the QOpenGLPaintDevice. + */ +@@ -228,6 +235,11 @@ QOpenGLContext *QOpenGLPaintDevice::context() const + return d_ptr->ctx; + } + ++QPoint QOpenGLPaintDevice::offset() const ++{ ++ return d_ptr->offset; ++} ++ + /*! + Returns the pixel size of the paint device. + +diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h +index c05571c..01eb1bc 100644 +--- a/src/gui/opengl/qopenglpaintdevice.h ++++ b/src/gui/opengl/qopenglpaintdevice.h +@@ -62,12 +62,14 @@ public: + QOpenGLPaintDevice(); + explicit QOpenGLPaintDevice(const QSize &size); + QOpenGLPaintDevice(int width, int height); ++ QOpenGLPaintDevice(int x, int y, int width, int height); + virtual ~QOpenGLPaintDevice(); + + int devType() const { return QInternal::OpenGL; } + QPaintEngine *paintEngine() const; + + QOpenGLContext *context() const; ++ QPoint offset() const; + QSize size() const; + void setSize(const QSize &size); + void setDevicePixelRatio(qreal devicePixelRatio); +diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp +index 0513551..f6aeb15 100644 +--- a/src/gui/opengl/qopenglpaintengine.cpp ++++ b/src/gui/opengl/qopenglpaintengine.cpp +@@ -1985,7 +1985,10 @@ bool QOpenGL2PaintEngineEx::begin(QPaintDevice *pdev) + for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i) + d->vertexAttributeArraysEnabledState[i] = false; + ++ const QPoint offset = d->device->offset(); + const QSize sz = d->device->size(); ++ d->x = offset.x(); ++ d->y = offset.y(); + d->width = sz.width(); + d->height = sz.height(); + d->mode = BrushDrawingMode; +@@ -2073,7 +2076,7 @@ void QOpenGL2PaintEngineEx::ensureActive() + d->device->ensureActiveTarget(); + + d->transferMode(BrushDrawingMode); +- glViewport(0, 0, d->width, d->height); ++ glViewport(d->x, d->y, d->width, d->height); + d->needsSync = false; + d->lastMaskTextureUsed = 0; + d->shaderManager->setDirty(); +@@ -2116,6 +2119,7 @@ void QOpenGL2PaintEngineExPrivate::updateClipScissorTest() + if (bounds == QRect(0, 0, width, height)) { + glDisable(GL_SCISSOR_TEST); + } else { ++ bounds = QRect(bounds.x(), bounds.y(), bounds.width(), bounds.height()); + glEnable(GL_SCISSOR_TEST); + setScissor(bounds); + } +@@ -2124,14 +2128,14 @@ void QOpenGL2PaintEngineExPrivate::updateClipScissorTest() + + void QOpenGL2PaintEngineExPrivate::setScissor(const QRect &rect) + { +- const int left = rect.left(); ++ const int left = rect.left() + x; + const int width = rect.width(); + int bottom = height - (rect.top() + rect.height()); + if (device->paintFlipped()) { + bottom = rect.top(); + } ++ bottom += y; + const int height = rect.height(); +- + glScissor(left, bottom, width, height); + } + +diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h +index d51f0e5..0d4b38d 100644 +--- a/src/gui/opengl/qopenglpaintengine_p.h ++++ b/src/gui/opengl/qopenglpaintengine_p.h +@@ -264,6 +264,7 @@ public: + QOpenGL2PaintEngineEx* q; + QOpenGLEngineShaderManager* shaderManager; + QOpenGLPaintDevice* device; ++ int x, y; + int width, height; + QOpenGLContext *ctx; + EngineMode mode; +diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp +index 3b62d1d..a5d1f7e 100644 +--- a/src/gui/opengl/qopengltextureglyphcache.cpp ++++ b/src/gui/opengl/qopengltextureglyphcache.cpp +@@ -273,7 +273,7 @@ void QOpenGLTextureGlyphCache::resizeTextureData(int width, int height) + funcs.glBindFramebuffer(GL_FRAMEBUFFER, (GLuint)oldFbo); + + if (pex != 0) { +- glViewport(0, 0, pex->width, pex->height); ++ glViewport(pex->x, pex->y, pex->width, pex->height); + pex->updateClipScissorTest(); + } else { + m_blitProgram->disableAttributeArray(int(QT_VERTEX_COORDS_ATTR)); +-- +1.8.5.2 + diff --git a/recipes-qt/qt5/qtbase/0014-enables-tslib-device-to-be-read-from-env-variable.patch b/recipes-qt/qt5/qtbase/0014-enables-tslib-device-to-be-read-from-env-variable.patch new file mode 100644 index 00000000..5b5d18f0 --- /dev/null +++ b/recipes-qt/qt5/qtbase/0014-enables-tslib-device-to-be-read-from-env-variable.patch @@ -0,0 +1,35 @@ +From 2af1da07715288bf7fc7308e2d11aef3171c9590 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= <eric@eukrea.com> +Date: Mon, 27 May 2013 18:32:37 +0200 +Subject: [PATCH 14/14] enables tslib device to be read from env variable +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +from : +https://github.com/prabindh/qt-configs/blob/master/qt5_1.0_Feb13/tslib.patch + +Signed-off-by: Eric Bénard <eric@eukrea.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/plugins/generic/tslib/qtslib.cpp | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/plugins/generic/tslib/qtslib.cpp b/src/plugins/generic/tslib/qtslib.cpp +index 6986fd5..2ed4a69 100644 +--- a/src/plugins/generic/tslib/qtslib.cpp ++++ b/src/plugins/generic/tslib/qtslib.cpp +@@ -64,7 +64,9 @@ QTsLibMouseHandler::QTsLibMouseHandler(const QString &key, + qDebug() << "QTsLibMouseHandler" << key << specification; + setObjectName(QLatin1String("TSLib Mouse Handler")); + +- QByteArray device = "/dev/input/event1"; ++ QByteArray device = qgetenv("TSLIB_TSDEVICE"); ++ if(device.isEmpty()) ++ device = "/dev/input/event1"; + if (specification.startsWith("/dev/")) + device = specification.toLocal8Bit(); + +-- +1.8.5.2 + |