diff options
Diffstat (limited to 'yocto-poky/meta/recipes-qt/qt4')
42 files changed, 3015 insertions, 0 deletions
diff --git a/yocto-poky/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc b/yocto-poky/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc new file mode 100644 index 000000000..077008bb8 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/nativesdk-qt4-tools.inc @@ -0,0 +1,125 @@ +SUMMARY = "SDK tools for Qt version 4.x" +DEPENDS = "nativesdk-zlib nativesdk-dbus qt4-native ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtual/nativesdk-libx11', '', d)}" +SECTION = "libs" +HOMEPAGE = "http://qt-project.org/" +LICENSE = "LGPLv2.1 | GPLv3" + +FILESEXTRAPATHS =. "${FILE_DIRNAME}/qt4-${PV}:" + +inherit nativesdk qmake2 + +SRC_URI = "http://download.qt-project.org/official_releases/qt/4.8/${PV}/qt-everywhere-opensource-src-${PV}.tar.gz \ + file://0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \ + file://0004-configure-qmake-is-already-built-in-qt4-tools-native.patch \ + file://0005-configure-set-LFLAGS-to-pick-up-zlib-from-staging.patch \ + file://0006-configure-Use-OE_QMAKE_-values-to-specify-Qt-utility.patch \ + file://0007-dbus-Remove-const-usage-that-causes-compile-failure-.patch \ + file://0008-qmake.pro-Allow-building-a-separate-qmake-for-the-ta.patch \ + file://g++.conf \ + file://linux.conf" + +S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}" + +LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \ + file://LICENSE.GPL3;md5=6e1694ee338db410417517884918d4d2 \ + file://LGPL_EXCEPTION.txt;md5=0145c4d1b6f96a661c2c139dfb268fb6" + +require qt4_arch.inc + +# FIXME: make it work with "${STAGING_BINDIR_NATIVE}/pkg-config --cflags dbus-1" +EXTRA_OECONF = "-prefix ${prefix} \ + -qt-libjpeg -system-zlib \ + -no-libjpeg -no-libpng -no-libmng -no-libtiff \ + -no-accessibility \ + -no-cups \ + -no-exceptions \ + -no-nas-sound \ + -no-nis -no-openssl \ + -verbose -release -fast -static \ + -platform ${TARGET_OS}-oe-g++ \ + -xplatform ${TARGET_OS}-oe-g++ \ + -arch ${QT_ARCH} \ + -embedded -no-freetype -no-glib -no-iconv \ + -qt3support \ + -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/include/dbus-1.0 \ + -I${STAGING_DIR_HOST}${SDKPATHNATIVE}/usr/lib/dbus-1.0/include" + +# yank default -e, otherwise we get the following error: +# moc_qbuffer.cpp: No such file or directory +EXTRA_OEMAKE = " " + +do_configure() { + # Avoid problems with Qt 4.8.0 configure setting QMAKE_LINK from LD (since we want the linker to be g++) + unset LD + + if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then + ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++ + fi + + cp ../g++.conf mkspecs/common + cp ../linux.conf mkspecs/common + + if [ -f mkspecs/common/g++-base.conf ] ; then + # don't use host g++ even during configure (4.8.0+) + sed -i -e "s#= g++#= ${CXX}#" mkspecs/common/g++-base.conf + sed -i -e "s#= gcc#= ${CC}#" mkspecs/common/g++-base.conf + fi + + # Use qmake from qt4-native for building + if [ ! -e bin/qmake ]; then + ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake + fi + set_arch + (echo o; echo yes) | CC="${CC}" CXX="${CXX}" ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}" +} + +TOBUILD = "\ + src/tools/bootstrap \ + src/tools/moc \ + src/corelib \ + src/sql \ + src/dbus \ + src/qt3support \ + src/xml \ + src/tools/uic \ + src/tools/rcc \ + src/network \ + src/gui \ + src/tools/uic3 \ + tools/linguist/lrelease \ + tools/linguist/lupdate \ + tools/qdbus \ +" + +do_compile() { + for i in ${TOBUILD}; do + cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}" + done + + # Build nativesdk qmake + export QMAKESPEC="${S}/mkspecs/${TARGET_OS}-oe-g++" + cd ${S}/qmake + ${OE_QMAKE_QMAKE} + oe_runmake CC="${CC}" CXX="${CXX}" + cd ${S} +} + +do_install() { + install -d ${D}${bindir} + install -m 0755 bin/qmake2 ${D}${bindir}/qmake2 + for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do + install -m 0755 bin/${i} ${D}${bindir}/${i}4 + done + + (cd ${D}${bindir}; \ + ln -s qmake2 qmake; \ + for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do \ + ln -s ${i}4 ${i}; \ + done) + + install -d ${D}${sysconfdir} + cat >${D}${sysconfdir}/qt.conf <<EOF +[Paths] +Prefix = ${prefix} +EOF +} diff --git a/yocto-poky/meta/recipes-qt/qt4/nativesdk-qt4-tools_4.8.7.bb b/yocto-poky/meta/recipes-qt/qt4/nativesdk-qt4-tools_4.8.7.bb new file mode 100644 index 000000000..90ba07c9e --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/nativesdk-qt4-tools_4.8.7.bb @@ -0,0 +1,6 @@ +require nativesdk-qt4-tools.inc + +SRC_URI += "file://0009-qmake-fix-source-file-references-in-qmake.pri.patch" + +SRC_URI[md5sum] = "d990ee66bf7ab0c785589776f35ba6ad" +SRC_URI[sha256sum] = "e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0" diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7.inc b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7.inc new file mode 100644 index 000000000..5257e760e --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7.inc @@ -0,0 +1,68 @@ +LICENSE = "LGPLv2.1 | GPLv3" +LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \ + file://LICENSE.GPL3;md5=6e1694ee338db410417517884918d4d2 \ + file://LGPL_EXCEPTION.txt;md5=0145c4d1b6f96a661c2c139dfb268fb6" + +FILESEXTRAPATHS =. "${FILE_DIRNAME}/qt4-${PV}:" + +SRC_URI = "http://download.qt-project.org/official_releases/qt/4.8/${PV}/qt-everywhere-opensource-src-${PV}.tar.gz \ + file://0003-webkit2-set-OUTPUT_DIR-value-if-empty.patch \ + file://0004-configure-qmake-is-already-built-in-qt4-tools-native.patch \ + file://0008-qmake.pro-Allow-building-a-separate-qmake-for-the-ta.patch \ + file://0009-qmake-fix-source-file-references-in-qmake.pri.patch \ + file://0010-configure-Hack-to-not-use-the-pg_config-of-the-host-.patch \ + file://0011-freetype-host-includes.patch \ + file://0012-Add-2bpp-support.patch \ + file://0013-configure-add-crossarch-option.patch \ + file://0014-translations-fix-phony-translation-linking-error.patch \ + file://0015-configure-add-nostrip-for-debug-packages.patch \ + file://0016-configure-eval-QMAKE_CXX.patch \ + file://0017-configure-ensure-we-identify-the-compiler-as-g-in-co.patch \ + file://0018-configure-make-pulseaudio-a-configurable-option.patch \ + file://0019-Fixes-for-gcc-4.7.0-particularly-on-qemux86.patch \ + file://0027-tools.pro-disable-qmeegographicssystemhelper.patch \ + file://0028-Don-t-crash-on-broken-GIF-images.patch \ + file://0030-aarch64_arm64_qatomic_support.patch \ + file://0031-aarch64_arm64_mkspecs.patch \ + file://0032-aarch64_add_header.patch \ + file://Fix-QWSLock-invalid-argument-logs.patch \ + file://add_check_for_aarch64_32.patch \ + file://g++.conf \ + file://linux.conf \ + " + +SRC_URI[md5sum] = "d990ee66bf7ab0c785589776f35ba6ad" +SRC_URI[sha256sum] = "e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0" + +S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}" + +# disable webkit for mips64 n32 temporarily that fails to compile, +# qt upstream defect: +# https://bugreports.qt-project.org/browse/QTBUG-39224 +QT_CONFIG_FLAGS_append_mips64n32 = " -no-webkit" + +# disable webkit for aarch64 temporarily that fails to compile +QT_CONFIG_FLAGS_append_aarch64 = " -no-webkit" + +FILES_${QT_BASE_NAME}-tools_append = " ${bindir}/qml ${bindir}/qmlplugindump" +FILES_${QT_BASE_NAME}-tools-dbg_append = " ${bindir}/.debug/qml ${bindir}/.debug/qmlplugindump" + +PACKAGES_append = " ${QT_BASE_NAME}-tests-dbg ${QT_BASE_NAME}-tests" +FILES_${QT_BASE_NAME}-tests-dbg = "${prefix}/tests/qt4/*/.debug" +FILES_${QT_BASE_NAME}-tests = "${prefix}/tests/qt4/*" + +do_configure_prepend() { + sed -i 's:qtPrepareTool(LRELEASE, lrelease):LRELEASE = ${OE_QMAKE_LRELEASE}:g' \ + ${S}/translations/translations.pro + + sed -i \ + -e /QMAKE_MOC\ /d \ + -e /QMAKE_UIC\ /d \ + -e /QMAKE_UIC3\ /d \ + -e /QMAKE_RCC\ /d \ + ${S}/configure + + # Avoid problems with Qt 4.8.0 configure setting QMAKE_LINK from LD (since we want the linker to be g++) + unset LD +} + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch new file mode 100644 index 000000000..d8b0a09d1 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch @@ -0,0 +1,43 @@ +From 55097d27e8b746b3d5ff437939caf1fa43c0d62b Mon Sep 17 00:00:00 2001 +From: Holger Freyther <zecke@selfish.org> +Date: Wed, 26 Sep 2012 17:22:30 +0200 +Subject: [PATCH 01/21] 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, 5 insertions(+) + +diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp +index 180dc39..4adad35 100644 +--- a/src/corelib/global/qlibraryinfo.cpp ++++ b/src/corelib/global/qlibraryinfo.cpp +@@ -54,6 +54,7 @@ + QT_BEGIN_NAMESPACE + extern QString qmake_libraryInfoFile(); + QT_END_NAMESPACE ++#include <stdlib.h> + #else + # include "qcoreapplication.h" + #endif +@@ -112,6 +113,10 @@ QSettings *QLibraryInfoPrivate::findConfiguration() + #ifdef BOOTSTRAPPING + if(!QFile::exists(qtconfig)) + qtconfig = qmake_libraryInfoFile(); ++ if (!QFile::exists(qtconfig)) { ++ QByteArray config = getenv("QT_CONF_PATH"); ++ qtconfig = QFile::decodeName(config); ++ } + #else + if (!QFile::exists(qtconfig) && QCoreApplication::instance()) { + #ifdef Q_OS_MAC +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0002-qkbdtty_qws-fix-build-with-old-kernel-headers.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0002-qkbdtty_qws-fix-build-with-old-kernel-headers.patch new file mode 100644 index 000000000..98fc88738 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0002-qkbdtty_qws-fix-build-with-old-kernel-headers.patch @@ -0,0 +1,50 @@ +From 5e6b1051afa3099a02a758b0596236759d70670e Mon Sep 17 00:00:00 2001 +From: Wenzong Fan <wenzong.fan@windriver.com> +Date: Wed, 26 Sep 2012 20:18:08 +0200 +Subject: [PATCH 02/21] qkbdtty_qws: fix build with old kernel headers + +This issue is that with C++ compiler process an old version of kernel +header file, coincidently that file has a variable named 'new': + +* 'embedded/qkbdtty_qws.cpp' include 'linux/vt.h'; +* '/usr/include/linux/vt.h' has below code on SLED-11.x: + + unsigned int new; + +On mostly hosts it has been changed to: new -> newev. + +Upstream-Status: Pending + +Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/gui/embedded/qkbdtty_qws.cpp | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/gui/embedded/qkbdtty_qws.cpp b/src/gui/embedded/qkbdtty_qws.cpp +index a46811b..762138f 100644 +--- a/src/gui/embedded/qkbdtty_qws.cpp ++++ b/src/gui/embedded/qkbdtty_qws.cpp +@@ -54,8 +54,20 @@ + + #if defined Q_OS_LINUX + # include <linux/kd.h> ++ ++/* Workaround kernel headers using "new" as variable name. The problem ++ is specific to SLED-11, other distros use "newev" rather than "new" */ ++#ifdef __cplusplus ++#warning "workaround kernel headers using new as variable name on SLED 11" ++#define new newev ++#endif ++ + # include <linux/vt.h> //TODO: move vt handling somewhere else (QLinuxFbScreen?) + ++#ifdef __cplusplus ++#undef new ++#endif ++ + # include "qscreen_qws.h" + # include "qwindowsystem_qws.h" + # include "qapplication.h" +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0003-webkit2-set-OUTPUT_DIR-value-if-empty.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0003-webkit2-set-OUTPUT_DIR-value-if-empty.patch new file mode 100644 index 000000000..ecaea51e0 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0003-webkit2-set-OUTPUT_DIR-value-if-empty.patch @@ -0,0 +1,34 @@ +From b6805e883c078f7647d9234aca4e3513ebd1c9bf Mon Sep 17 00:00:00 2001 +From: Martin Jansa <Martin.Jansa@gmail.com> +Date: Tue, 1 May 2012 07:48:15 +0200 +Subject: [PATCH 03/21] webkit2: set OUTPUT_DIR value if empty + +Without this do_configure was trying to create /include/WebCore/libdummy.prl in root of build host filesystem +now it's in proper place ${WORKDIR}/qt-everywhere-opensource-src-4.8.1/src/3rdparty/webkit/include/WebCore/libdummy.prl + +First reported here: +http://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg24436.html + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro b/src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro +index 006a88c..5e17193 100644 +--- a/src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro ++++ b/src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro +@@ -3,6 +3,8 @@ TARGET = dummy + + CONFIG -= debug_and_release + ++isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../.. ++ + CONFIG(standalone_package) { + isEmpty(WEBKIT2_GENERATED_SOURCES_DIR):WEBKIT2_GENERATED_SOURCES_DIR = $$PWD/generated + isEmpty(WC_GENERATED_SOURCES_DIR):WC_GENERATED_SOURCES_DIR = $$PWD/../WebCore/generated +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0004-configure-qmake-is-already-built-in-qt4-tools-native.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0004-configure-qmake-is-already-built-in-qt4-tools-native.patch new file mode 100644 index 000000000..1eb8a5843 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0004-configure-qmake-is-already-built-in-qt4-tools-native.patch @@ -0,0 +1,29 @@ +From af699c6e8cf9fb28d6f8b789bf33d53b47edaec7 Mon Sep 17 00:00:00 2001 +From: Michael Krelin <hacker@klever.net> +Date: Wed, 26 Sep 2012 20:24:20 +0200 +Subject: [PATCH 04/21] configure: qmake is already built in qt4-tools-native, + so disable it + +Upstream-Status: Inappropriate [configuration] + +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 e3d464b..cc04b27 100755 +--- a/configure ++++ b/configure +@@ -4899,7 +4899,7 @@ setBootstrapVariable() + } + + # build qmake +-if true; then ###[ '!' -f "$outpath/bin/qmake" ]; ++if false; then ###[ '!' -f "$outpath/bin/qmake" ]; + echo "Creating qmake. Please wait..." + + OLD_QCONFIG_H= +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0005-configure-set-LFLAGS-to-pick-up-zlib-from-staging.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0005-configure-set-LFLAGS-to-pick-up-zlib-from-staging.patch new file mode 100644 index 000000000..1a8f2b7f9 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0005-configure-set-LFLAGS-to-pick-up-zlib-from-staging.patch @@ -0,0 +1,28 @@ +From ac93237bc90ea7773c0ef5275962baba01d4a9c7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= <jeremy.laine@m4x.org> +Date: Wed, 26 Sep 2012 20:27:44 +0200 +Subject: [PATCH 05/21] configure: set LFLAGS to pick up zlib from staging + +Upstream-Status: Pending + +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 cc04b27..5a7c4ee 100755 +--- a/configure ++++ b/configure +@@ -690,7 +690,7 @@ fi + # initalize variables + #------------------------------------------------------------------------------- + +-SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS" ++SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS LFLAGS" + for varname in $SYSTEM_VARIABLES; do + qmakevarname="${varname}" + # use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0006-configure-Use-OE_QMAKE_-values-to-specify-Qt-utility.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0006-configure-Use-OE_QMAKE_-values-to-specify-Qt-utility.patch new file mode 100644 index 000000000..90ebf7509 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0006-configure-Use-OE_QMAKE_-values-to-specify-Qt-utility.patch @@ -0,0 +1,38 @@ +From 0bc0db83812b5900dc4e6ffa96bdeab46b6adcae Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Wed, 26 Sep 2012 20:29:09 +0200 +Subject: [PATCH 06/21] configure: Use OE_QMAKE_* values to specify Qt utility + paths + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git a/configure b/configure +index 5a7c4ee..db4d044 100755 +--- a/configure ++++ b/configure +@@ -8683,11 +8683,11 @@ QMAKE_ABSOLUTE_SOURCE_ROOT = \$\$QT_SOURCE_TREE + QMAKE_MOC_SRC = \$\$QT_BUILD_TREE/src/moc + + #local paths that cannot be queried from the QT_INSTALL_* properties while building QTDIR +-QMAKE_MOC = \$\$QT_BUILD_TREE/bin/moc +-QMAKE_UIC = \$\$QT_BUILD_TREE/bin/uic +-QMAKE_UIC3 = \$\$QT_BUILD_TREE/bin/uic3 +-QMAKE_RCC = \$\$QT_BUILD_TREE/bin/rcc +-QMAKE_QDBUSXML2CPP = \$\$QT_BUILD_TREE/bin/qdbusxml2cpp ++QMAKE_MOC = \${OE_QMAKE_MOC} ++QMAKE_UIC = \${OE_QMAKE_UIC} ++QMAKE_UIC3 = \${OE_QMAKE_UIC3} ++QMAKE_RCC = \${OE_QMAKE_RCC} ++QMAKE_QDBUSXML2CPP = \${OE_QMAKE_QDBUSXML2CPP} + QMAKE_INCDIR_QT = \$\$QT_BUILD_TREE/include + QMAKE_LIBDIR_QT = \$\$QT_BUILD_TREE/lib + +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0007-dbus-Remove-const-usage-that-causes-compile-failure-.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0007-dbus-Remove-const-usage-that-causes-compile-failure-.patch new file mode 100644 index 000000000..1d23c929f --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0007-dbus-Remove-const-usage-that-causes-compile-failure-.patch @@ -0,0 +1,34 @@ +From 2011bb8029480af1d1266f258e5a5f5cef7392d3 Mon Sep 17 00:00:00 2001 +From: Pavel Heimlich <tropikhajma@gmail.com> +Date: Wed, 26 Sep 2012 20:31:10 +0200 +Subject: [PATCH 07/21] dbus: Remove "const" usage that causes compile failure + building nativesdk-qt4-tools + +Patch has apparently been rejected upstream, not because it is invalid +but because the submitter did not submit a merge request for it, so the +validity of the patch upstream is uncertain. For further details see: +https://bugreports.qt-project.org/browse/QTBUG-17962 + +Upstream-Status: Denied [possible retry] + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/dbus/qdbusintegrator.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp +index 0f0b647..aa4cbab 100644 +--- a/src/dbus/qdbusintegrator.cpp ++++ b/src/dbus/qdbusintegrator.cpp +@@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE + static bool isDebugging; + #define qDBusDebug if (!::isDebugging); else qDebug + +-Q_GLOBAL_STATIC_WITH_ARGS(const QString, orgFreedesktopDBusString, (QLatin1String(DBUS_SERVICE_DBUS))) ++Q_GLOBAL_STATIC_WITH_ARGS(QString, orgFreedesktopDBusString, (QLatin1String(DBUS_SERVICE_DBUS))) + + static inline QString dbusServiceString() + { return *orgFreedesktopDBusString(); } +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0008-qmake.pro-Allow-building-a-separate-qmake-for-the-ta.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0008-qmake.pro-Allow-building-a-separate-qmake-for-the-ta.patch new file mode 100644 index 000000000..ec07f4140 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0008-qmake.pro-Allow-building-a-separate-qmake-for-the-ta.patch @@ -0,0 +1,29 @@ +From 64ce5d0e7c19436b928a2a0d9d192f56be3c9bb2 Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Wed, 26 Sep 2012 20:32:41 +0200 +Subject: [PATCH 08/21] qmake.pro: 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: Martin Jansa <Martin.Jansa@gmail.com> +--- + qmake/qmake.pro | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/qmake/qmake.pro b/qmake/qmake.pro +index 38e0fce..53b1ffb 100644 +--- a/qmake/qmake.pro ++++ b/qmake/qmake.pro +@@ -7,6 +7,7 @@ CONFIG += console bootstrap + CONFIG -= qt shared app_bundle uic + DEFINES += QT_BUILD_QMAKE QT_BOOTSTRAPPED + DESTDIR = ../bin/ ++TARGET = qmake2 + + OBJECTS_DIR = . + MOC_DIR = . +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0009-qmake-fix-source-file-references-in-qmake.pri.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0009-qmake-fix-source-file-references-in-qmake.pri.patch new file mode 100644 index 000000000..45b8c10fb --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0009-qmake-fix-source-file-references-in-qmake.pri.patch @@ -0,0 +1,52 @@ +From e129dc0d6cde69dd15d1836c4111e0526fc29161 Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Wed, 26 Sep 2012 20:33:49 +0200 +Subject: [PATCH 09/21] qmake: fix source file references in qmake.pri + +Fix duplicate entries in SOURCES and HEADERS, and fix the source file +list for the split of qlocale.cpp. + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + qmake/qmake.pri | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/qmake/qmake.pri b/qmake/qmake.pri +index 31f67f4..9081669 100644 +--- a/qmake/qmake.pri ++++ b/qmake/qmake.pri +@@ -22,8 +22,7 @@ SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \ + generators/symbian/initprojectdeploy_symbian.cpp \ + generators/integrity/gbuild.cpp \ + windows/registry.cpp \ +- symbian/epocroot.cpp \ +- generators/integrity/gbuild.cpp ++ symbian/epocroot.cpp + + HEADERS += project.h property.h generators/makefile.h \ + generators/unix/unixmake.h meta.h option.h cachekeys.h \ +@@ -40,8 +39,7 @@ HEADERS += project.h property.h generators/makefile.h \ + generators/symbian/initprojectdeploy_symbian.h \ + generators/integrity/gbuild.h \ + windows/registry_p.h \ +- symbian/epocroot_p.h \ +- generators/integrity/gbuild.h ++ symbian/epocroot_p.h + + contains(QT_EDITION, OpenSource) { + DEFINES += QMAKE_OPENSOURCE_EDITION +@@ -72,6 +70,8 @@ bootstrap { #Qt code + qlist.cpp \ + qlinkedlist.cpp \ + qlocale.cpp \ ++ qlocale_tools.cpp \ ++ qlocale_unix.cpp \ + qmalloc.cpp \ + qmap.cpp \ + qmetatype.cpp \ +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0010-configure-Hack-to-not-use-the-pg_config-of-the-host-.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0010-configure-Hack-to-not-use-the-pg_config-of-the-host-.patch new file mode 100644 index 000000000..ca6a0b8d8 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0010-configure-Hack-to-not-use-the-pg_config-of-the-host-.patch @@ -0,0 +1,46 @@ +From 4888791d1899f781af710dd8813887dea52fda59 Mon Sep 17 00:00:00 2001 +From: Holger Freyther <zecke@selfish.org> +Date: Wed, 26 Sep 2012 20:36:38 +0200 +Subject: [PATCH 10/21] configure: Hack to not use the pg_config of the host + system which will add /usr/include + +pg_config is a native binary so using that when cross compiling +will always fail. The commented out fix would do, but for OE +our -platform and -xplatform is the same so we are actually not +really cross compiling. Just comment out the test, we are passing +the location to the postgres headers and if they are okay we +will pad. + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> + +Update for qt 4.8.7. + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + configure | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index db4d044..35a8fe7 100755 +--- a/configure ++++ b/configure +@@ -5574,10 +5574,10 @@ + if [ "$CFG_SQL_psql" != "no" ]; then + [ -z "$CFG_PSQL_CONFIG" ] && CFG_PSQL_CONFIG=`"$WHICH" pg_config` + # Be careful not to use native pg_config when cross building. +- if [ "$XPLATFORM_MINGW" != "yes" ] && [ -x "$CFG_PSQL_CONFIG" ]; then +- QT_CFLAGS_PSQL=`$CFG_PSQL_CONFIG --includedir 2>/dev/null` +- QT_LFLAGS_PSQL=`$CFG_PSQL_CONFIG --libdir 2>/dev/null` +- fi ++# if [ "$XPLATFORM_MINGW" != "yes" ] && [ -x "$CFG_PSQL_CONFIG" ]; then ++# QT_CFLAGS_PSQL=`$CFG_PSQL_CONFIG --includedir 2>/dev/null` ++# QT_LFLAGS_PSQL=`$CFG_PSQL_CONFIG --libdir 2>/dev/null` ++# fi + [ -z "$QT_CFLAGS_PSQL" ] || QT_CFLAGS_PSQL="-I$QT_CFLAGS_PSQL" + [ -z "$QT_LFLAGS_PSQL" ] || QT_LFLAGS_PSQL="-L$QT_LFLAGS_PSQL" + # But, respect PSQL_LIBS if set +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0011-freetype-host-includes.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0011-freetype-host-includes.patch new file mode 100644 index 000000000..e0879c561 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0011-freetype-host-includes.patch @@ -0,0 +1,29 @@ +From 3fcffa79e6a5f0448cbfe2bb33fe1218f5dae61d Mon Sep 17 00:00:00 2001 +From: Michael Krelin <hacker@klever.net> +Date: Mon, 4 Jun 2007 14:48:50 +0200 +Subject: [PATCH 11/21] freetype host includes + +Host include path should not be used in cross compiling case. + +Ported from OE by: Yu Ke <ke.yu@intel.com> +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + config.tests/unix/freetype/freetype.pri | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/config.tests/unix/freetype/freetype.pri b/config.tests/unix/freetype/freetype.pri +index 7ef1cf9..b362fcd 100644 +--- a/config.tests/unix/freetype/freetype.pri ++++ b/config.tests/unix/freetype/freetype.pri +@@ -1,5 +1,5 @@ + !cross_compile { +- TRY_INCLUDEPATHS = /include /usr/include $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH ++ TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH + # LSB doesn't allow using headers from /include or /usr/include + linux-lsb-g++:TRY_INCLUDEPATHS = $$QMAKE_INCDIR $$QMAKE_INCDIR_X11 $$INCLUDEPATH + for(p, TRY_INCLUDEPATHS) { +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0012-Add-2bpp-support.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0012-Add-2bpp-support.patch new file mode 100644 index 000000000..8e411f342 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0012-Add-2bpp-support.patch @@ -0,0 +1,318 @@ +From 8744273fc452eb54bbeeb7d15823009ce926c6fa Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= <jeremy.laine@m4x.org> +Date: Wed, 26 Sep 2012 20:39:21 +0200 +Subject: [PATCH 12/21] Add 2bpp support + +Submitted upstream but rejected as being "out of scope": +https://bugreports.qt-project.org/browse/QTBUG-3468 + +Upstream-Status: Denied + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 5 +- + src/gui/embedded/qscreen_qws.cpp | 211 ++++++++++++++++++++++++++++++++ + src/gui/embedded/qscreenlinuxfb_qws.cpp | 4 +- + 3 files changed, 216 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index 35a8fe7..79c1c7b 100755 +--- a/configure ++++ b/configure +@@ -7063,6 +7063,7 @@ if [ "$CFG_QWS_DEPTHS" = "prompted" -a "$PROMPT_FOR_DEPTHS" = "yes" ]; then + echo "Choose pixel-depths to support:" + echo + echo " 1. 1bpp, black/white" ++ echo " 2. 2bpp, grayscale" + echo " 4. 4bpp, grayscale" + echo " 8. 8bpp, paletted" + echo " 12. 12bpp, rgb 4-4-4" +@@ -7081,11 +7082,11 @@ if [ "$CFG_QWS_DEPTHS" = "prompted" -a "$PROMPT_FOR_DEPTHS" = "yes" ]; then + fi + if [ -n "$CFG_QWS_DEPTHS" -a "$PLATFORM_QWS" = "yes" ]; then + if [ "$CFG_QWS_DEPTHS" = "all" ]; then +- CFG_QWS_DEPTHS="1 4 8 12 15 16 18 24 32 generic" ++ CFG_QWS_DEPTHS="1 2 4 8 12 15 16 18 24 32 generic" + fi + for D in `echo "$CFG_QWS_DEPTHS" | sed -e 's/,/ /g'`; do + case $D in +- 1|4|8|12|15|16|18|24|32) QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QWS_DEPTH_$D";; ++ 1|2|4|8|12|15|16|18|24|32) QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QWS_DEPTH_$D";; + generic) QCONFIG_FLAGS="$QCONFIG_FLAGS QT_QWS_DEPTH_GENERIC";; + esac + done +diff --git a/src/gui/embedded/qscreen_qws.cpp b/src/gui/embedded/qscreen_qws.cpp +index b307bf2..88950b3 100644 +--- a/src/gui/embedded/qscreen_qws.cpp ++++ b/src/gui/embedded/qscreen_qws.cpp +@@ -469,6 +469,58 @@ static void solidFill_gray4(QScreen *screen, const QColor &color, + } + #endif // QT_QWS_DEPTH_4 + ++#ifdef QT_QWS_DEPTH_2 ++static inline void qt_rectfill_gray2(quint8 *dest, quint8 value, ++ int x, int y, int width, int height, ++ int stride) ++{ ++ const int pixelsPerByte = 4; ++ const int alignWidth = qMin(width, (4 - (x & 3)) & 3); ++ const int doAlign = (alignWidth > 0 ? 1 : 0); ++ const int alignStart = pixelsPerByte - 1 - (x & 3); ++ const int alignStop = alignStart - (alignWidth - 1); ++ const quint8 alignMask = ((1 << (2 * alignWidth)) - 1) << (2 * alignStop); ++ const int tailWidth = (width - alignWidth) & 3; ++ const int doTail = (tailWidth > 0 ? 1 : 0); ++ const quint8 tailMask = (1 << (2 * (pixelsPerByte - tailWidth))) - 1; ++ const int width8 = (width - alignWidth) / pixelsPerByte; ++ ++ dest += y * stride + x / pixelsPerByte; ++ stride -= (doAlign + width8); ++ ++ for (int j = 0; j < height; ++j) { ++ if (doAlign) { ++ *dest = (*dest & ~alignMask) | (value & alignMask); ++ ++dest; ++ } ++ if (width8) { ++ qt_memfill<quint8>(dest, value, width8); ++ dest += width8; ++ } ++ if (doTail) ++ *dest = (*dest & tailMask) | (value & ~tailMask); ++ dest += stride; ++ } ++} ++ ++static void solidFill_gray2(QScreen *screen, const QColor &color, ++ const QRegion ®ion) ++{ ++ quint8 *dest = reinterpret_cast<quint8*>(screen->base()); ++ const quint8 c = qGray(color.rgba()) >> 6; ++ const quint8 c8 = (c << 6) | (c << 4) | (c << 2) | c; ++ ++ const int stride = screen->linestep(); ++ const QVector<QRect> rects = region.rects(); ++ ++ for (int i = 0; i < rects.size(); ++i) { ++ const QRect r = rects.at(i); ++ qt_rectfill_gray2(dest, c8, r.x(), r.y(), r.width(), r.height(), ++ stride); ++ } ++} ++#endif // QT_QWS_DEPTH_2 ++ + #ifdef QT_QWS_DEPTH_1 + static inline void qt_rectfill_mono(quint8 *dest, quint8 value, + int x, int y, int width, int height, +@@ -576,6 +628,11 @@ void qt_solidFill_setup(QScreen *screen, const QColor &color, + screen->d_ptr->solidFill = solidFill_gray4; + break; + #endif ++#ifdef QT_QWS_DEPTH_2 ++ case 2: ++ screen->d_ptr->solidFill = solidFill_gray2; ++ break; ++#endif + #ifdef QT_QWS_DEPTH_1 + case 1: + screen->d_ptr->solidFill = solidFill_mono; +@@ -1006,6 +1063,149 @@ static void blit_4(QScreen *screen, const QImage &image, + } + #endif // QT_QWS_DEPTH_4 + ++#ifdef QT_QWS_DEPTH_2 ++ ++struct qgray2 { quint8 dummy; } Q_PACKED; ++ ++template <typename SRC> ++static inline quint8 qt_convertToGray2(SRC color); ++ ++template <> ++inline quint8 qt_convertToGray2(quint32 color) ++{ ++ return qGray(color) >> 6; ++} ++ ++template <> ++inline quint8 qt_convertToGray2(quint16 color) ++{ ++ const int r = (color & 0xf800) >> 11; ++ const int g = (color & 0x07e0) >> 6; // only keep 5 bit ++ const int b = (color & 0x001f); ++ return (r * 11 + g * 16 + b * 5) >> 8; ++} ++ ++template <> ++inline quint8 qt_convertToGray2(qrgb444 color) ++{ ++ return qt_convertToGray2(quint32(color)); ++} ++ ++template <> ++inline quint8 qt_convertToGray2(qargb4444 color) ++{ ++ return qt_convertToGray2(quint32(color)); ++} ++ ++template <typename SRC> ++static inline void qt_rectconvert_gray2(qgray2 *dest2, const SRC *src, ++ int x, int y, int width, int height, ++ int dstStride, int srcStride) ++{ ++ const int pixelsPerByte = 4; ++ quint8 *dest8 = reinterpret_cast<quint8*>(dest2) ++ + y * dstStride + x / pixelsPerByte; ++ const int alignWidth = qMin(width, (4 - (x & 3)) & 3); ++ const int doAlign = (alignWidth > 0 ? 1 : 0); ++ const int alignStart = pixelsPerByte - 1 - (x & 3); ++ const int alignStop = alignStart - (alignWidth - 1); ++ const quint8 alignMask = ((1 << (2 * alignWidth)) - 1) << (2 * alignStop); ++ const int tailWidth = (width - alignWidth) & 3; ++ const int doTail = (tailWidth > 0 ? 1 : 0); ++ const quint8 tailMask = (1 << (2 * (pixelsPerByte - tailWidth))) - 1; ++ const int width8 = (width - alignWidth) / pixelsPerByte; ++ ++ srcStride = srcStride / sizeof(SRC) - (width8 * pixelsPerByte + alignWidth); ++ dstStride -= (width8 + doAlign); ++ ++ for (int j = 0; j < height; ++j) { ++ if (doAlign) { ++ quint8 d = *dest8 & ~alignMask; ++ for (int i = alignStart; i >= alignStop; --i) ++ d |= qt_convertToGray2<SRC>(*src++) << (2 * i); ++ *dest8++ = d; ++ } ++ for (int i = 0; i < width8; ++i) { ++ *dest8 = (qt_convertToGray2<SRC>(src[0]) << 6) ++ | (qt_convertToGray2<SRC>(src[1]) << 4) ++ | (qt_convertToGray2<SRC>(src[2]) << 2) ++ | (qt_convertToGray2<SRC>(src[3])); ++ src += 4; ++ ++dest8; ++ } ++ if (doTail) { ++ quint8 d = *dest8 & tailMask; ++ switch (tailWidth) { ++ case 3: d |= qt_convertToGray2<SRC>(src[2]) << 2; ++ case 2: d |= qt_convertToGray2<SRC>(src[1]) << 4; ++ case 1: d |= qt_convertToGray2<SRC>(src[0]) << 6; ++ } ++ *dest8 = d; ++ } ++ ++ dest8 += dstStride; ++ src += srcStride; ++ } ++} ++ ++template <> ++void qt_rectconvert(qgray2 *dest, const quint32 *src, ++ int x, int y, int width, int height, ++ int dstStride, int srcStride) ++{ ++ qt_rectconvert_gray2<quint32>(dest, src, x, y, width, height, ++ dstStride, srcStride); ++} ++ ++template <> ++void qt_rectconvert(qgray2 *dest, const quint16 *src, ++ int x, int y, int width, int height, ++ int dstStride, int srcStride) ++{ ++ qt_rectconvert_gray2<quint16>(dest, src, x, y, width, height, ++ dstStride, srcStride); ++} ++ ++template <> ++void qt_rectconvert(qgray2 *dest, const qrgb444 *src, ++ int x, int y, int width, int height, ++ int dstStride, int srcStride) ++{ ++ qt_rectconvert_gray2<qrgb444>(dest, src, x, y, width, height, ++ dstStride, srcStride); ++} ++ ++template <> ++void qt_rectconvert(qgray2 *dest, const qargb4444 *src, ++ int x, int y, int width, int height, ++ int dstStride, int srcStride) ++{ ++ qt_rectconvert_gray2<qargb4444>(dest, src, x, y, width, height, ++ dstStride, srcStride); ++} ++ ++static void blit_2(QScreen *screen, const QImage &image, ++ const QPoint &topLeft, const QRegion ®ion) ++{ ++ switch (image.format()) { ++ case QImage::Format_ARGB32_Premultiplied: ++ blit_template<qgray2, quint32>(screen, image, topLeft, region); ++ return; ++ case QImage::Format_RGB16: ++ blit_template<qgray2, quint16>(screen, image, topLeft, region); ++ return; ++ case QImage::Format_RGB444: ++ blit_template<qgray2, qrgb444>(screen, image, topLeft, region); ++ return; ++ case QImage::Format_ARGB4444_Premultiplied: ++ blit_template<qgray2, qargb4444>(screen, image, topLeft, region); ++ return; ++ default: ++ qCritical("blit_2(): Image format %d not supported!", image.format()); ++ } ++} ++#endif // QT_QWS_DEPTH_2 ++ + #ifdef QT_QWS_DEPTH_1 + + struct qmono { quint8 dummy; } Q_PACKED; +@@ -1259,6 +1459,11 @@ void qt_blit_setup(QScreen *screen, const QImage &image, + screen->d_ptr->blit = blit_4; + break; + #endif ++#ifdef QT_QWS_DEPTH_2 ++ case 2: ++ screen->d_ptr->blit = blit_2; ++ break; ++#endif + #ifdef QT_QWS_DEPTH_1 + case 1: + screen->d_ptr->blit = blit_1; +@@ -2146,6 +2351,8 @@ int QScreen::alloc(unsigned int r,unsigned int g,unsigned int b) + } + } else if (d == 4) { + ret = qGray(r, g, b) >> 4; ++ } else if (d == 2) { ++ ret = qGray(r, g, b) >> 6; + } else if (d == 1) { + ret = qGray(r, g, b) >= 128; + } else { +@@ -2216,6 +2423,10 @@ bool QScreen::supportsDepth(int d) const + } else if(d==1) { + return true; + #endif ++#ifdef QT_QWS_DEPTH_2 ++ } else if(d==2) { ++ return true; ++#endif + #ifdef QT_QWS_DEPTH_4 + } else if(d==4) { + return true; +diff --git a/src/gui/embedded/qscreenlinuxfb_qws.cpp b/src/gui/embedded/qscreenlinuxfb_qws.cpp +index 6f3caad..14159ee 100644 +--- a/src/gui/embedded/qscreenlinuxfb_qws.cpp ++++ b/src/gui/embedded/qscreenlinuxfb_qws.cpp +@@ -466,8 +466,8 @@ bool QLinuxFbScreen::connect(const QString &displaySpec) + setupOffScreen(); + + // Now read in palette +- if((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4)) { +- screencols= (vinfo.bits_per_pixel==8) ? 256 : 16; ++ if((vinfo.bits_per_pixel==8) || (vinfo.bits_per_pixel==4) || (vinfo.bits_per_pixel==2)) { ++ screencols= 1 << vinfo.bits_per_pixel; + int loopc; + ::fb_cmap startcmap; + startcmap.start=0; +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0013-configure-add-crossarch-option.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0013-configure-add-crossarch-option.patch new file mode 100644 index 000000000..762cdaf97 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0013-configure-add-crossarch-option.patch @@ -0,0 +1,51 @@ +From 549342fa380ed2a9ad41be3d04ee2f0585f6a465 Mon Sep 17 00:00:00 2001 +From: Michael Lauer <mickey@vanille-media.de> +Date: Wed, 26 Sep 2012 20:41:32 +0200 +Subject: [PATCH 13/21] configure: add "-crossarch" option + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> + +Update for qt 4.8.7 + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + configure | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/configure b/configure +index 4eb4a3d..a4dacec 100755 +--- a/configure ++++ b/configure +@@ -1160,7 +1160,7 @@ while [ "$#" -gt 0 ]; do + shift + VAL=$1 + ;; +- -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-device-option|-buildkey|-sdk|-arch|-host-arch|-mysql_config|-psql_config|-sysroot) ++ -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-device-option|-buildkey|-sdk|-arch|-host-arch|-mysql_config|-psql_config|-sysroot|-crossarch) + VAR=`echo $1 | sed "s,^-\(.*\),\1,"` + shift + VAL="$1" +@@ -1719,6 +1719,9 @@ while [ "$#" -gt 0 ]; do + DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"` + DeviceVar set $DEV_VAR $DEV_VAL + ;; ++ crossarch) ++ CROSSARCH="$VAL" ++ ;; + debug-and-release) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_DEBUG_RELEASE="$VAL" +@@ -3333,6 +3336,8 @@ arm*) + ;; + esac + ++CFG_ARCH="$CROSSARCH" ++ + if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then + if [ "$OPT_VERBOSE" = "yes" ]; then + echo " '$CFG_ARCH' is supported" +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0014-translations-fix-phony-translation-linking-error.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0014-translations-fix-phony-translation-linking-error.patch new file mode 100644 index 000000000..66724a8ec --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0014-translations-fix-phony-translation-linking-error.patch @@ -0,0 +1,41 @@ +From 21af8f6d21b28a53041affb11b58d6316023fa92 Mon Sep 17 00:00:00 2001 +From: Otavio Salvador <otavio@ossystems.com.br> +Date: Wed, 26 Sep 2012 20:45:10 +0200 +Subject: [PATCH 14/21] translations: fix phony translation linking error + + | .../usr/lib/crt1.o: In function `_start': + | .../../sysdeps/i386/elf/start.S:115: undefined reference to `main' + | collect2: ld returned 1 exit status + +Upstream-Status: Pending + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + translations/translations.pro | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/translations/translations.pro b/translations/translations.pro +index dc99beb..0d98829 100644 +--- a/translations/translations.pro ++++ b/translations/translations.pro +@@ -101,7 +101,7 @@ updateqm.name = LRELEASE ${QMAKE_FILE_IN} + updateqm.CONFIG += no_link + QMAKE_EXTRA_COMPILERS += updateqm + +-isEmpty(vcproj) { ++!isEmpty(vcproj) { + QMAKE_LINK = @: IGNORE THIS LINE + OBJECTS_DIR = + win32:CONFIG -= embed_manifest_exe +@@ -111,7 +111,7 @@ isEmpty(vcproj) { + phony_src.input = PHONY_DEPS + phony_src.output = phony.c + phony_src.variable_out = GENERATED_SOURCES +- phony_src.commands = echo int main() { return 0; } > phony.c ++ phony_src.commands = echo \"int main() { return 0; }\" > phony.c + phony_src.name = CREATE phony.c + phony_src.CONFIG += combine + QMAKE_EXTRA_COMPILERS += phony_src +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0015-configure-add-nostrip-for-debug-packages.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0015-configure-add-nostrip-for-debug-packages.patch new file mode 100644 index 000000000..b5db49128 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0015-configure-add-nostrip-for-debug-packages.patch @@ -0,0 +1,32 @@ +From 9250fed086a4a8a645a972764a9bf34e4566ec2e Mon Sep 17 00:00:00 2001 +From: Fathi Boudra <fabo@debian.org> +Date: Wed, 26 Sep 2012 20:46:14 +0200 +Subject: [PATCH 15/21] configure: add nostrip for debug packages + +Qt is built in release mode and strip files by default. +Set CONFIG+=nostrip to avoid the stripping and +let dh_strip do it to generate debug packages. + +Upstream-Status: Inappropriate [Configuration] + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/configure b/configure +index 7983c3d..d02824b 100755 +--- a/configure ++++ b/configure +@@ -710,6 +710,8 @@ mkdir -p "$outpath/config.tests" + rm -f "$outpath/config.tests/.qmake.cache" + cp "$QMAKE_VARS_FILE" "$outpath/config.tests/.qmake.cache" + ++QMakeVar add CONFIG nostrip ++ + QMakeVar add styles "cde mac motif plastique cleanlooks windows" + QMakeVar add decorations "default windows styled" + QMakeVar add mouse-drivers "pc" +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0016-configure-eval-QMAKE_CXX.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0016-configure-eval-QMAKE_CXX.patch new file mode 100644 index 000000000..9c3de47b4 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0016-configure-eval-QMAKE_CXX.patch @@ -0,0 +1,37 @@ +From 8403634a71f067eec514b6d2193cf41e281dff8e Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Wed, 26 Sep 2012 20:47:08 +0200 +Subject: [PATCH 16/21] configure: eval QMAKE_CXX + +Allow expansion of $(...) references in QMAKE_CXX (currently its value +is $(OE_QMAKE_CXX)) in order to allow compiler version check to succeed +which allows WebKit to be enabled. + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> + +Conflicts: + configure +--- + configure | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configure b/configure +index d02824b..891d6e7 100755 +--- a/configure ++++ b/configure +@@ -3409,7 +3409,8 @@ else + CFG_FRAMEWORK=no + fi + +-QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX` ++QMAKE_CONF_COMPILER=`getXQMakeConf QMAKE_CXX | sed -n 's/$[(]\([0-9a-zA-Z_]*\)[)]/$\1/pg'` ++QMAKE_CONF_COMPILER=`eval "echo $QMAKE_CONF_COMPILER"` + TEST_COMPILER="$CXX" + + [ -z "$TEST_COMPILER" ] && TEST_COMPILER=$QMAKE_CONF_COMPILER +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0017-configure-ensure-we-identify-the-compiler-as-g-in-co.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0017-configure-ensure-we-identify-the-compiler-as-g-in-co.patch new file mode 100644 index 000000000..947196666 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0017-configure-ensure-we-identify-the-compiler-as-g-in-co.patch @@ -0,0 +1,46 @@ +From d2bb701b551402f0befddd0e906423596bdc0df7 Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Wed, 26 Sep 2012 20:48:37 +0200 +Subject: [PATCH 17/21] configure: ensure we identify the compiler as g++ in + configure + +Our PLATFORM in OE is ${TARGET_OS}-oe-g++, and previously the configure +script was interpreting from this that the compiler was "oe-g++" and +thus +g++ specific checks were not being run since this string did not match; +among other things this resulted in a compiler version check in the +QtWebKit build code not working, and hence the following error at build +time: + +./wtf/NullPtr.h:48:1: error: identifier 'nullptr' will become a keyword +in C++0x [-Werror=c++0x-compat] + +The easiest thing since our PLATFORM is entirely artificial is to just +force COMPILER to "g++" in the configure script if it is detected as +"oe-g++". + +Upstream-Status: Inappropriate [configuration] + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/configure b/configure +index 891d6e7..7031898 100755 +--- a/configure ++++ b/configure +@@ -7592,6 +7592,9 @@ elif [ "$XPLATFORM" != "$PLATFORM" ]; then + else + COMPILER=`echo $PLATFORM | cut -f 2- -d-` + fi ++case $COMPILER in ++ *oe-g++) COMPILER="g++" ;; ++esac + if [ "$CFG_EXCEPTIONS" = "unspecified" -a "$PLATFORM_QWS" = "yes" ]; then + CFG_EXCEPTIONS=no + fi +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0018-configure-make-pulseaudio-a-configurable-option.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0018-configure-make-pulseaudio-a-configurable-option.patch new file mode 100644 index 000000000..19cdd4c57 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0018-configure-make-pulseaudio-a-configurable-option.patch @@ -0,0 +1,46 @@ +From d6dc1a7d6594d7e395347732a3e553fc82ccab3d 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 18/21] configure: make pulseaudio a configurable option + +Allows disabling pulseaudio support within phonon at configure time. +(This is the Qt 4.8.0 version.) + +Upstream-Status: Pending + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/configure b/configure +index 7031898..a4a42f1 100755 +--- a/configure ++++ b/configure +@@ -1139,7 +1139,7 @@ while [ "$#" -gt 0 ]; do + VAL=no + ;; + #Qt style yes options +- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-harfbuzz|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60|-usedeffiles|-icu) ++ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-egl|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-pulseaudio|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-harfbuzz|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-s60|-usedeffiles|-icu) + VAR=`echo $1 | sed "s,^-\(.*\),\1,"` + VAL=yes + ;; +@@ -2120,6 +2120,13 @@ while [ "$#" -gt 0 ]; do + UNKNOWN_OPT=yes + fi + ;; ++ pulseaudio) ++ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then ++ CFG_PULSEAUDIO="$VAL" ++ else ++ UNKNOWN_OPT=yes ++ fi ++ ;; + gtkstyle) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_QGTKSTYLE="$VAL" +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0019-Fixes-for-gcc-4.7.0-particularly-on-qemux86.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0019-Fixes-for-gcc-4.7.0-particularly-on-qemux86.patch new file mode 100644 index 000000000..a83d2470a --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0019-Fixes-for-gcc-4.7.0-particularly-on-qemux86.patch @@ -0,0 +1,63 @@ +From 1f1da2f24d3028b250dbc2e98e2b7e37862b3771 Mon Sep 17 00:00:00 2001 +From: Richard Purdie <richard.purdie@linuxfoundation.org> +Date: Wed, 26 Sep 2012 20:54:38 +0200 +Subject: [PATCH 19/21] Fixes for gcc 4.7.0, particularly on qemux86 + +Origin: upstream, http://trac.webkit.org/changeset/93631 +Origin: upstream, http://trac.webkit.org/changeset/113848 + +Bug: https://bugs.webkit.org/show_bug.cgi?id=62168 +Bug: https://bugs.webkit.org/show_bug.cgi?id=83584 + +RP 2012/04/30 + +Upstream-Status: Backport + +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + src/3rdparty/webkit/Source/WebCore/dom/Element.cpp | 2 +- + src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp | 2 +- + .../webkit/Source/WebCore/platform/graphics/TiledBackingStoreClient.h | 1 + + 3 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp +index 32e47ca..b8e7389 100644 +--- a/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp ++++ b/src/3rdparty/webkit/Source/WebCore/dom/Element.cpp +@@ -1080,7 +1080,7 @@ void Element::recalcStyle(StyleChange change) + { + // Ref currentStyle in case it would otherwise be deleted when setRenderStyle() is called. + RefPtr<RenderStyle> currentStyle(renderStyle()); +- bool hasParentStyle = parentNodeForRenderingAndStyle() ? parentNodeForRenderingAndStyle()->renderStyle() : false; ++ bool hasParentStyle = parentNodeForRenderingAndStyle() ? static_cast<bool>(parentNodeForRenderingAndStyle()->renderStyle()) : false; + bool hasDirectAdjacentRules = currentStyle && currentStyle->childrenAffectedByDirectAdjacentRules(); + bool hasIndirectAdjacentRules = currentStyle && currentStyle->childrenAffectedByForwardPositionalRules(); + +diff --git a/src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp b/src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp +index d66075e..ab8f111 100644 +--- a/src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp ++++ b/src/3rdparty/webkit/Source/WebCore/html/HTMLImageElement.cpp +@@ -74,7 +74,7 @@ PassRefPtr<HTMLImageElement> HTMLImageElement::createForJSConstructor(Document* + RefPtr<HTMLImageElement> image = adoptRef(new HTMLImageElement(imgTag, document)); + if (optionalWidth) + image->setWidth(*optionalWidth); +- if (optionalHeight > 0) ++ if (optionalHeight) + image->setHeight(*optionalHeight); + return image.release(); + } +diff --git a/src/3rdparty/webkit/Source/WebCore/platform/graphics/TiledBackingStoreClient.h b/src/3rdparty/webkit/Source/WebCore/platform/graphics/TiledBackingStoreClient.h +index 6087ec3..6d748f6 100644 +--- a/src/3rdparty/webkit/Source/WebCore/platform/graphics/TiledBackingStoreClient.h ++++ b/src/3rdparty/webkit/Source/WebCore/platform/graphics/TiledBackingStoreClient.h +@@ -25,6 +25,7 @@ namespace WebCore { + #if ENABLE(TILED_BACKING_STORE) + class TiledBackingStoreClient { + public: ++ virtual ~TiledBackingStoreClient() { } + virtual void tiledBackingStorePaintBegin() = 0; + virtual void tiledBackingStorePaint(GraphicsContext*, const IntRect&) = 0; + virtual void tiledBackingStorePaintEnd(const Vector<IntRect>& paintedArea) = 0; +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0021-configure-make-qt4-native-work-with-long-building-pa.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0021-configure-make-qt4-native-work-with-long-building-pa.patch new file mode 100644 index 000000000..dbc90227a --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0021-configure-make-qt4-native-work-with-long-building-pa.patch @@ -0,0 +1,95 @@ +From 6742ac7ea6fd1e9c82ecb5305f84e721242f857d Mon Sep 17 00:00:00 2001 +From: Chen Qi <Qi.Chen@windriver.com> +Date: Wed, 5 Dec 2012 07:48:15 +0200 +Subject: [PATCH 21/21] configure: make qt4-native work with long building + path. + +Upstream-Status: Submitted + +Reference: https://bugreports.qt-project.org/browse/QTBUG-28292 + +Signed-off-by: Chen Qi <Qi.Chen@windriver.com> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> +--- + configure | 52 ++++++++++++++++++++++++++-------------------------- + 1 file changed, 26 insertions(+), 26 deletions(-) + +diff --git a/configure b/configure +index a4a42f1..2358563 100755 +--- a/configure ++++ b/configure +@@ -4779,8 +4779,8 @@ DEMOS_PATH_STR=`"$relpath/config.tests/unix/padstring" 268 "qt_demopath=$QT_INST + TODAY=`date +%Y-%m-%d` + cat > "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF + /* License Info */ +-static const char qt_configure_licensee_str [256 + 12] = "$LICENSE_USER_STR"; +-static const char qt_configure_licensed_products_str [256 + 12] = "$LICENSE_PRODUCTS_STR"; ++static const char qt_configure_licensee_str [512 + 12] = "$LICENSE_USER_STR"; ++static const char qt_configure_licensed_products_str [512 + 12] = "$LICENSE_PRODUCTS_STR"; + + /* Installation date */ + static const char qt_configure_installation [12+11] = "qt_instdate=$TODAY"; +@@ -4805,36 +4805,36 @@ if [ ! -z "$QT_HOST_PREFIX" ]; then + + #if defined(QT_BOOTSTRAPPED) || defined(QT_BUILD_QMAKE) + /* Installation Info */ +-static const char qt_configure_prefix_path_str [256 + 12] = "$HOSTPREFIX_PATH_STR"; +-static const char qt_configure_documentation_path_str[256 + 12] = "$HOSTDOCUMENTATION_PATH_STR"; +-static const char qt_configure_headers_path_str [256 + 12] = "$HOSTHEADERS_PATH_STR"; +-static const char qt_configure_libraries_path_str [256 + 12] = "$HOSTLIBRARIES_PATH_STR"; +-static const char qt_configure_binaries_path_str [256 + 12] = "$HOSTBINARIES_PATH_STR"; +-static const char qt_configure_plugins_path_str [256 + 12] = "$HOSTPLUGINS_PATH_STR"; +-static const char qt_configure_imports_path_str [256 + 12] = "$HOSTIMPORTS_PATH_STR"; +-static const char qt_configure_data_path_str [256 + 12] = "$HOSTDATA_PATH_STR"; +-static const char qt_configure_translations_path_str [256 + 12] = "$HOSTTRANSLATIONS_PATH_STR"; +-static const char qt_configure_settings_path_str [256 + 12] = "$HOSTSETTINGS_PATH_STR"; +-static const char qt_configure_examples_path_str [256 + 12] = "$HOSTEXAMPLES_PATH_STR"; +-static const char qt_configure_demos_path_str [256 + 12] = "$HOSTDEMOS_PATH_STR"; ++static const char qt_configure_prefix_path_str [512 + 12] = "$HOSTPREFIX_PATH_STR"; ++static const char qt_configure_documentation_path_str[512 + 12] = "$HOSTDOCUMENTATION_PATH_STR"; ++static const char qt_configure_headers_path_str [512 + 12] = "$HOSTHEADERS_PATH_STR"; ++static const char qt_configure_libraries_path_str [512 + 12] = "$HOSTLIBRARIES_PATH_STR"; ++static const char qt_configure_binaries_path_str [512 + 12] = "$HOSTBINARIES_PATH_STR"; ++static const char qt_configure_plugins_path_str [512 + 12] = "$HOSTPLUGINS_PATH_STR"; ++static const char qt_configure_imports_path_str [512 + 12] = "$HOSTIMPORTS_PATH_STR"; ++static const char qt_configure_data_path_str [512 + 12] = "$HOSTDATA_PATH_STR"; ++static const char qt_configure_translations_path_str [512 + 12] = "$HOSTTRANSLATIONS_PATH_STR"; ++static const char qt_configure_settings_path_str [512 + 12] = "$HOSTSETTINGS_PATH_STR"; ++static const char qt_configure_examples_path_str [512 + 12] = "$HOSTEXAMPLES_PATH_STR"; ++static const char qt_configure_demos_path_str [512 + 12] = "$HOSTDEMOS_PATH_STR"; + #else // QT_BOOTSTRAPPED + EOF + fi + + cat >> "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF + /* Installation Info */ +-static const char qt_configure_prefix_path_str [256 + 12] = "$PREFIX_PATH_STR"; +-static const char qt_configure_documentation_path_str[256 + 12] = "$DOCUMENTATION_PATH_STR"; +-static const char qt_configure_headers_path_str [256 + 12] = "$HEADERS_PATH_STR"; +-static const char qt_configure_libraries_path_str [256 + 12] = "$LIBRARIES_PATH_STR"; +-static const char qt_configure_binaries_path_str [256 + 12] = "$BINARIES_PATH_STR"; +-static const char qt_configure_plugins_path_str [256 + 12] = "$PLUGINS_PATH_STR"; +-static const char qt_configure_imports_path_str [256 + 12] = "$IMPORTS_PATH_STR"; +-static const char qt_configure_data_path_str [256 + 12] = "$DATA_PATH_STR"; +-static const char qt_configure_translations_path_str [256 + 12] = "$TRANSLATIONS_PATH_STR"; +-static const char qt_configure_settings_path_str [256 + 12] = "$SETTINGS_PATH_STR"; +-static const char qt_configure_examples_path_str [256 + 12] = "$EXAMPLES_PATH_STR"; +-static const char qt_configure_demos_path_str [256 + 12] = "$DEMOS_PATH_STR"; ++static const char qt_configure_prefix_path_str [512 + 12] = "$PREFIX_PATH_STR"; ++static const char qt_configure_documentation_path_str[512 + 12] = "$DOCUMENTATION_PATH_STR"; ++static const char qt_configure_headers_path_str [512 + 12] = "$HEADERS_PATH_STR"; ++static const char qt_configure_libraries_path_str [512 + 12] = "$LIBRARIES_PATH_STR"; ++static const char qt_configure_binaries_path_str [512 + 12] = "$BINARIES_PATH_STR"; ++static const char qt_configure_plugins_path_str [512 + 12] = "$PLUGINS_PATH_STR"; ++static const char qt_configure_imports_path_str [512 + 12] = "$IMPORTS_PATH_STR"; ++static const char qt_configure_data_path_str [512 + 12] = "$DATA_PATH_STR"; ++static const char qt_configure_translations_path_str [512 + 12] = "$TRANSLATIONS_PATH_STR"; ++static const char qt_configure_settings_path_str [512 + 12] = "$SETTINGS_PATH_STR"; ++static const char qt_configure_examples_path_str [512 + 12] = "$EXAMPLES_PATH_STR"; ++static const char qt_configure_demos_path_str [512 + 12] = "$DEMOS_PATH_STR"; + EOF + + if [ ! -z "$QT_HOST_PREFIX" ]; then +-- +1.8.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0027-tools.pro-disable-qmeegographicssystemhelper.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0027-tools.pro-disable-qmeegographicssystemhelper.patch new file mode 100644 index 000000000..6e30aeed0 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0027-tools.pro-disable-qmeegographicssystemhelper.patch @@ -0,0 +1,28 @@ +From 0460e2a5f13aaf0081c3c9fec89280046842ddbb Mon Sep 17 00:00:00 2001 +From: Paul Eggleton <paul.eggleton@linux.intel.com> +Date: Wed, 3 Jul 2013 17:48:30 +0100 +Subject: [PATCH] tools.pro: disable qmeegographicssystemhelper + +We don't want this enabled just because we have EGL and OpenGL ES 2.0 +enabled. + +Upstream-Status: Inappropriate [config] + +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> +--- + tools/tools.pro | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/tools.pro b/tools/tools.pro +index 0e27053..2d3f36d 100644 +--- a/tools/tools.pro ++++ b/tools/tools.pro +@@ -49,4 +49,4 @@ QTDIR_build:REQUIRES = "contains(QT_CONFIG, full-config)" + + !win32:!embedded:!mac:!symbian:CONFIG += x11 + +-x11:contains(QT_CONFIG, opengles2):contains(QT_CONFIG, egl):SUBDIRS += qmeegographicssystemhelper ++#x11:contains(QT_CONFIG, opengles2):contains(QT_CONFIG, egl):SUBDIRS += qmeegographicssystemhelper +-- +1.8.1.2 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0028-Don-t-crash-on-broken-GIF-images.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0028-Don-t-crash-on-broken-GIF-images.patch new file mode 100644 index 000000000..906e2fdfc --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0028-Don-t-crash-on-broken-GIF-images.patch @@ -0,0 +1,47 @@ +From f1b76c126c476c155af8c404b97c42cd1a709333 Mon Sep 17 00:00:00 2001 +From: Lars Knoll <lars.knoll@digia.com> +Date: Thu, 24 Apr 2014 15:33:27 +0200 +Subject: [PATCH] Don't crash on broken GIF images + +Broken GIF images could set invalid width and height +values inside the image, leading to Qt creating a null +QImage for it. In that case we need to abort decoding +the image and return an error. + +Initial patch by Rich Moore. + +Backport of Id82a4036f478bd6e49c402d6598f57e7e5bb5e1e from Qt 5 + +Task-number: QTBUG-38367 +Change-Id: I0680740018aaa8356d267b7af3f01fac3697312a +Security-advisory: CVE-2014-0190 +Reviewed-by: Richard J. Moore <rich@kde.org> + +Upstream-Status: Backport +Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> + +--- + src/gui/image/qgifhandler.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/gui/image/qgifhandler.cpp b/src/gui/image/qgifhandler.cpp +index 3324f04..5199dd3 100644 +--- a/src/gui/image/qgifhandler.cpp ++++ b/src/gui/image/qgifhandler.cpp +@@ -359,6 +359,13 @@ int QGIFFormat::decode(QImage *image, const uchar *buffer, int length, + memset(bits, 0, image->byteCount()); + } + ++ // Check if the previous attempt to create the image failed. If it ++ // did then the image is broken and we should give up. ++ if (image->isNull()) { ++ state = Error; ++ return -1; ++ } ++ + disposePrevious(image); + disposed = false; + +-- +1.9.3 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0030-aarch64_arm64_qatomic_support.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0030-aarch64_arm64_qatomic_support.patch new file mode 100644 index 000000000..ba4c2a6b4 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0030-aarch64_arm64_qatomic_support.patch @@ -0,0 +1,491 @@ +From 294010b562c9846bb2bc4ee9c63ff78adc7c1f4f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lisandro=20Dami=C3=A1n=20Nicanor=20P=C3=A9rez=20Meyer?= + <perezmeyer@gmail.com> +Date: Sat, 15 Mar 2014 15:40:49 -0300 +Subject: [PATCH] Add qatomic support for AArch64 (aka arm64). + +Patch by Mark Salter <msalter@redhat.com> +licensed under BSD: + +<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=735488#195> + +This patch is known to not be the most correct way +to implement them, as it seems to be possible to do it in a faster way, +but should work non the less until we can provide something better. + +Change-Id: Ib392b27dc54691fd4c2ea9896240ad71fb8128cc + + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +--- + src/corelib/arch/aarch64/arch.pri | 4 + + src/corelib/arch/aarch64/qatomic_aarch64.cpp | 70 ++++++ + src/corelib/arch/arch.pri | 4 +- + src/corelib/arch/qatomic_aarch64.h | 335 +++++++++++++++++++++++++++ + src/corelib/arch/qatomic_arch.h | 2 + + 5 files changed, 414 insertions(+), 1 deletion(-) + create mode 100644 src/corelib/arch/aarch64/arch.pri + create mode 100644 src/corelib/arch/aarch64/qatomic_aarch64.cpp + create mode 100644 src/corelib/arch/qatomic_aarch64.h + +diff --git a/src/corelib/arch/aarch64/arch.pri b/src/corelib/arch/aarch64/arch.pri +new file mode 100644 +index 0000000..63523d9 +--- /dev/null ++++ b/src/corelib/arch/aarch64/arch.pri +@@ -0,0 +1,4 @@ ++# ++# AArch64 architecture ++# ++SOURCES += $$QT_ARCH_CPP/qatomic_aarch64.cpp +diff --git a/src/corelib/arch/aarch64/qatomic_aarch64.cpp b/src/corelib/arch/aarch64/qatomic_aarch64.cpp +new file mode 100644 +index 0000000..fc851b9 +--- /dev/null ++++ b/src/corelib/arch/aarch64/qatomic_aarch64.cpp +@@ -0,0 +1,70 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012, 2013 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the QtCore module 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$ ++** ++****************************************************************************/ ++ ++#include <QtCore/qglobal.h> ++ ++#include <unistd.h> ++#ifdef _POSIX_PRIORITY_SCHEDULING ++# include <sched.h> ++#endif ++#include <time.h> ++ ++QT_BEGIN_NAMESPACE ++ ++QT_USE_NAMESPACE ++ ++Q_CORE_EXPORT void qt_atomic_yield(int *count) ++{ ++#ifdef _POSIX_PRIORITY_SCHEDULING ++ if ((*count)++ < 50) { ++ sched_yield(); ++ } else ++#endif ++ { ++ struct timespec tm; ++ tm.tv_sec = 0; ++ tm.tv_nsec = 2000001; ++ nanosleep(&tm, NULL); ++ *count = 0; ++ } ++} ++ ++QT_END_NAMESPACE +diff --git a/src/corelib/arch/arch.pri b/src/corelib/arch/arch.pri +index cd23e5e..f50fca7 100644 +--- a/src/corelib/arch/arch.pri ++++ b/src/corelib/arch/arch.pri +@@ -31,7 +31,9 @@ integrity:HEADERS += arch/qatomic_integrity.h + arch/qatomic_s390.h \ + arch/qatomic_x86_64.h \ + arch/qatomic_sh.h \ +- arch/qatomic_sh4a.h ++ arch/qatomic_sh4a.h \ ++ arch/qatomic_aarch64.h \ ++ + + QT_ARCH_CPP = $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH + DEPENDPATH += $$QT_ARCH_CPP +diff --git a/src/corelib/arch/qatomic_aarch64.h b/src/corelib/arch/qatomic_aarch64.h +new file mode 100644 +index 0000000..de61ca8 +--- /dev/null ++++ b/src/corelib/arch/qatomic_aarch64.h +@@ -0,0 +1,335 @@ ++/**************************************************************************** ++** ++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ++** Contact: http://www.qt-project.org/legal ++** ++** This file is part of the QtCore module 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 QATOMIC_AARCH64_H ++#define QATOMIC_AARCH64_H ++ ++QT_BEGIN_HEADER ++ ++QT_BEGIN_NAMESPACE ++ ++#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isReferenceCountingNative() ++{ return true; } ++inline bool QBasicAtomicInt::isReferenceCountingWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isTestAndSetNative() ++{ return true; } ++inline bool QBasicAtomicInt::isTestAndSetWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isFetchAndStoreNative() ++{ return true; } ++inline bool QBasicAtomicInt::isFetchAndStoreWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE ++ ++inline bool QBasicAtomicInt::isFetchAndAddNative() ++{ return true; } ++inline bool QBasicAtomicInt::isFetchAndAddWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative() ++{ return true; } ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative() ++{ return true; } ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree() ++{ return false; } ++ ++#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative() ++{ return true; } ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree() ++{ return false; } ++ ++#ifndef Q_DATA_MEMORY_BARRIER ++# define Q_DATA_MEMORY_BARRIER asm volatile("dmb sy\n":::"memory") ++#endif ++#ifndef Q_COMPILER_MEMORY_BARRIER ++# define Q_COMPILER_MEMORY_BARRIER asm volatile("":::"memory") ++#endif ++ ++inline bool QBasicAtomicInt::ref() ++{ ++ int newValue; ++ ++ Q_COMPILER_MEMORY_BARRIER; ++ newValue = __atomic_add_fetch(&_q_value, 1, __ATOMIC_ACQ_REL); ++ Q_COMPILER_MEMORY_BARRIER; ++ ++ return newValue != 0; ++} ++ ++inline bool QBasicAtomicInt::deref() ++{ ++ int newValue; ++ ++ Q_COMPILER_MEMORY_BARRIER; ++ newValue = __atomic_sub_fetch(&_q_value, 1, __ATOMIC_ACQ_REL); ++ Q_COMPILER_MEMORY_BARRIER; ++ ++ return newValue != 0; ++} ++ ++inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue) ++{ ++ bool val; ++ ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue, ++ false, __ATOMIC_RELAXED, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue) ++{ ++ int val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd) ++{ ++ int val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue) ++{ ++ bool val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue, ++ false, __ATOMIC_RELAXED, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue) ++{ ++ T *val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd) ++{ ++ T *val; ++ Q_COMPILER_MEMORY_BARRIER; ++ val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED); ++ Q_COMPILER_MEMORY_BARRIER; ++ return val; ++} ++ ++inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue) ++{ ++ bool returnValue = testAndSetRelaxed(expectedValue, newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return testAndSetRelaxed(expectedValue, newValue); ++} ++ ++inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ bool returnValue = testAndSetRelaxed(expectedValue, newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue) ++{ ++ int returnValue = fetchAndStoreRelaxed(newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndStoreRelaxed(newValue); ++} ++ ++inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ int returnValue = fetchAndStoreRelaxed(newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd) ++{ ++ int returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndAddRelaxed(valueToAdd); ++} ++ ++inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ int returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue) ++{ ++ bool returnValue = testAndSetRelaxed(expectedValue, newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return testAndSetRelaxed(expectedValue, newValue); ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ bool returnValue = testAndSetAcquire(expectedValue, newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue) ++{ ++ T *returnValue = fetchAndStoreRelaxed(newValue); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndStoreRelaxed(newValue); ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ T *returnValue = fetchAndStoreRelaxed(newValue); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd) ++{ ++ T *returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_DATA_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ return fetchAndAddRelaxed(valueToAdd); ++} ++ ++template <typename T> ++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd) ++{ ++ Q_DATA_MEMORY_BARRIER; ++ T *returnValue = fetchAndAddRelaxed(valueToAdd); ++ Q_COMPILER_MEMORY_BARRIER; ++ return returnValue; ++} ++ ++#undef Q_DATA_MEMORY_BARRIER ++#undef Q_COMPILER_MEMORY_BARRIER ++ ++QT_END_NAMESPACE ++ ++QT_END_HEADER ++ ++#endif // QATOMIC_AARCH64_H +diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h +index 141726c..3e96926 100644 +--- a/src/corelib/arch/qatomic_arch.h ++++ b/src/corelib/arch/qatomic_arch.h +@@ -94,6 +94,8 @@ QT_BEGIN_HEADER + # include "QtCore/qatomic_sh4a.h" + #elif defined(QT_ARCH_NACL) + # include "QtCore/qatomic_generic.h" ++#elif defined(QT_ARCH_AARCH64) ++# include "QtCore/qatomic_aarch64.h" + #else + # error "Qt has not been ported to this architecture" + #endif +-- +2.1.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0031-aarch64_arm64_mkspecs.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0031-aarch64_arm64_mkspecs.patch new file mode 100644 index 000000000..a01e7ada9 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0031-aarch64_arm64_mkspecs.patch @@ -0,0 +1,124 @@ +From 7090fc80ff630712a90de92403190f647dd38a39 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lisandro=20Dami=C3=A1n=20Nicanor=20P=C3=A9rez=20Meyer?= + <perezmeyer@gmail.com> +Date: Sat, 15 Mar 2014 15:35:00 -0300 +Subject: [PATCH] mkspecs for AArch64 (aka arm64). + +Patch by Marcin Juszkiewicz <marcin@juszkiewicz.com.pl> +licensed under either Public Domain or BSD: + +<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=735488#179> + +Change-Id: I21f17953234cfb176bac023e52ecdc927fc5c1a9 + + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> + +--- + configure | 3 +++ + mkspecs/linux-g++-aarch64/qmake.conf | 27 ++++++++++++++++++++ + mkspecs/linux-g++-aarch64/qplatformdefs.h | 42 +++++++++++++++++++++++++++++++ + 3 files changed, 72 insertions(+) + create mode 100644 mkspecs/linux-g++-aarch64/qmake.conf + create mode 100644 mkspecs/linux-g++-aarch64/qplatformdefs.h + +diff --git a/configure b/configure +index a9ba7c8..e57d053 100755 +--- a/configure ++++ b/configure +@@ -2808,6 +2808,9 @@ if [ "$CFG_EMBEDDED" != "no" ]; then + *86_64) + PLATFORM=qws/linux-x86_64-g++ + ;; ++ aarch64) ++ PLATFORM=linux-aarch64-g++ ++ ;; + *) + PLATFORM=qws/linux-generic-g++ + ;; +diff --git a/mkspecs/linux-g++-aarch64/qmake.conf b/mkspecs/linux-g++-aarch64/qmake.conf +new file mode 100644 +index 0000000..ebc0a92 +--- /dev/null ++++ b/mkspecs/linux-g++-aarch64/qmake.conf +@@ -0,0 +1,27 @@ ++# ++# qmake configuration for linux-g++ ++# ++# Written for GNU/Linux platforms that have both lib and lib64 directories, ++# like the AMD Opteron. ++# ++ ++MAKEFILE_GENERATOR = UNIX ++TARGET_PLATFORM = unix ++TEMPLATE = app ++CONFIG += qt warn_on release incremental link_prl gdb_dwarf_index ++QT += core gui ++QMAKE_INCREMENTAL_STYLE = sublib ++ ++QMAKE_CFLAGS = ++QMAKE_LFLAGS = ++ ++QMAKE_CFLAGS_RELEASE += -O2 ++ ++include(../common/linux.conf) ++include(../common/gcc-base-unix.conf) ++include(../common/g++-unix.conf) ++ ++QMAKE_LIBDIR_X11 = /usr/X11R6/lib64 ++QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib64 ++ ++load(qt_config) +diff --git a/mkspecs/linux-g++-aarch64/qplatformdefs.h b/mkspecs/linux-g++-aarch64/qplatformdefs.h +new file mode 100644 +index 0000000..562128b +--- /dev/null ++++ b/mkspecs/linux-g++-aarch64/qplatformdefs.h +@@ -0,0 +1,42 @@ ++/**************************************************************************** ++** ++** 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$ ++** ++****************************************************************************/ ++ ++#include "../linux-g++/qplatformdefs.h" +-- +2.1.0 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0032-aarch64_add_header.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0032-aarch64_add_header.patch new file mode 100644 index 000000000..178f784e1 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0032-aarch64_add_header.patch @@ -0,0 +1,18 @@ +Add missing header for aarch64. And install ../corelib/arch/qatomic_aarch64.h. + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- +diff -Nru qt-everywhere-opensource-src-4.8.6.orig/include/QtCore/qatomic_aarch64.h qt-everywhere-opensource-src-4.8.6/include/QtCore/qatomic_aarch64.h +--- qt-everywhere-opensource-src-4.8.6.orig/include/QtCore/qatomic_aarch64.h 1970-01-01 08:30:00.000000000 +0830 ++++ qt-everywhere-opensource-src-4.8.6/include/QtCore/qatomic_aarch64.h 2014-09-09 17:18:03.768352551 +0800 +@@ -0,0 +1 @@ ++#include "../../src/corelib/arch/qatomic_aarch64.h" +--- qt-everywhere-opensource-src-4.8.6/include/QtCore/headers.pri.orig 2014-09-09 18:05:37.100430311 +0800 ++++ qt-everywhere-opensource-src-4.8.6/include/QtCore/headers.pri 2014-09-09 18:05:59.112430911 +0800 +@@ -1,3 +1,3 @@ +-SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h ../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h ../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h ../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h ../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h ../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h ../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h ../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h ../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h ../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimation.h ../corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h ../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h ../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h ../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h ../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h ../../include/QtCore/QtCore ++SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h ../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h ../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h ../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h ../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h ../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h ../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h ../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h ../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h ../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimation.h ../corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h ../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_aarch64.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h ../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h ../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h ../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h ../../include/QtCore/QtCore + SYNCQT.HEADER_CLASSES = ../../include/QtCore/QAbstractEventDispatcher ../../include/QtCore/QModelIndex ../../include/QtCore/QPersistentModelIndex ../../include/QtCore/QModelIndexList ../../include/QtCore/QAbstractItemModel ../../include/QtCore/QAbstractTableModel ../../include/QtCore/QAbstractListModel ../../include/QtCore/QBasicTimer ../../include/QtCore/QCoreApplication ../../include/QtCore/QtCleanUpFunction ../../include/QtCore/QEvent ../../include/QtCore/QTimerEvent ../../include/QtCore/QChildEvent ../../include/QtCore/QCustomEvent ../../include/QtCore/QDynamicPropertyChangeEvent ../../include/QtCore/QEventLoop ../../include/QtCore/QMetaMethod ../../include/QtCore/QMetaEnum ../../include/QtCore/QMetaProperty ../../include/QtCore/QMetaClassInfo ../../include/QtCore/QMetaType ../../include/QtCore/QMetaTypeId ../../include/QtCore/QMetaTypeId2 ../../include/QtCore/QMimeData ../../include/QtCore/QObjectList ../../include/QtCore/QObjectData ../../include/QtCore/QObject ../../include/QtCore/QObjectUserData ../../include/QtCore/QObjectCleanupHandler ../../include/QtCore/QGenericArgument ../../include/QtCore/QGenericReturnArgument ../../include/QtCore/QArgument ../../include/QtCore/QReturnArgument ../../include/QtCore/QMetaObject ../../include/QtCore/QMetaObjectAccessor ../../include/QtCore/QMetaObjectExtraData ../../include/QtCore/QPointer ../../include/QtCore/QSharedMemory ../../include/QtCore/QSignalMapper ../../include/QtCore/QSocketNotifier ../../include/QtCore/QSystemSemaphore ../../include/QtCore/QTimer ../../include/QtCore/QTranslator ../../include/QtCore/QVariant ../../include/QtCore/QVariantList ../../include/QtCore/QVariantMap ../../include/QtCore/QVariantHash ../../include/QtCore/QVariantComparisonHelper ../../include/QtCore/QAbstractAnimation ../../include/QtCore/QAnimationDriver ../../include/QtCore/QAnimationGroup ../../include/QtCore/QParallelAnimationGroup ../../include/QtCore/QPauseAnimation ../../include/QtCore/QPropertyAnimation ../../include/QtCore/QSequentialAnimationGroup ../../include/QtCore/QVariantAnimation ../../include/QtCore/QtAlgorithms ../../include/QtCore/QBitArray ../../include/QtCore/QBitRef ../../include/QtCore/QByteArray ../../include/QtCore/QByteRef ../../include/QtCore/QByteArrayMatcher ../../include/QtCore/QCache ../../include/QtCore/QLatin1Char ../../include/QtCore/QChar ../../include/QtCore/QtContainerFwd ../../include/QtCore/QContiguousCacheData ../../include/QtCore/QContiguousCacheTypedData ../../include/QtCore/QContiguousCache ../../include/QtCore/QCryptographicHash ../../include/QtCore/QDate ../../include/QtCore/QTime ../../include/QtCore/QDateTime ../../include/QtCore/QEasingCurve ../../include/QtCore/QElapsedTimer ../../include/QtCore/QHashData ../../include/QtCore/QHashDummyValue ../../include/QtCore/QHashDummyNode ../../include/QtCore/QHashNode ../../include/QtCore/QHash ../../include/QtCore/QMultiHash ../../include/QtCore/QHashIterator ../../include/QtCore/QMutableHashIterator ../../include/QtCore/QLine ../../include/QtCore/QLineF ../../include/QtCore/QLinkedListData ../../include/QtCore/QLinkedListNode ../../include/QtCore/QLinkedList ../../include/QtCore/QLinkedListIterator ../../include/QtCore/QMutableLinkedListIterator ../../include/QtCore/QListData ../../include/QtCore/QList ../../include/QtCore/QListIterator ../../include/QtCore/QMutableListIterator ../../include/QtCore/QSystemLocale ../../include/QtCore/QLocale ../../include/QtCore/QBBSystemLocaleData ../../include/QtCore/QMapData ../../include/QtCore/QMapNode ../../include/QtCore/QMapPayloadNode ../../include/QtCore/QMap ../../include/QtCore/QMultiMap ../../include/QtCore/QMapIterator ../../include/QtCore/QMutableMapIterator ../../include/QtCore/QMargins ../../include/QtCore/QPair ../../include/QtCore/QPoint ../../include/QtCore/QPointF ../../include/QtCore/QQueue ../../include/QtCore/QRect ../../include/QtCore/QRectF ../../include/QtCore/QRegExp ../../include/QtCore/QScopedPointerDeleter ../../include/QtCore/QScopedPointerArrayDeleter ../../include/QtCore/QScopedPointerPodDeleter ../../include/QtCore/QScopedPointer ../../include/QtCore/QScopedArrayPointer ../../include/QtCore/QScopedValueRollback ../../include/QtCore/QSet ../../include/QtCore/QSetIterator ../../include/QtCore/QMutableSetIterator ../../include/QtCore/QSharedData ../../include/QtCore/QSharedDataPointer ../../include/QtCore/QExplicitlySharedDataPointer ../../include/QtCore/QSharedPointer ../../include/QtCore/QWeakPointer ../../include/QtCore/QSize ../../include/QtCore/QSizeF ../../include/QtCore/QStack ../../include/QtCore/QStdWString ../../include/QtCore/QString ../../include/QtCore/QLatin1String ../../include/QtCore/QCharRef ../../include/QtCore/QConstString ../../include/QtCore/QStringRef ../../include/QtCore/QLatin1Literal ../../include/QtCore/QAbstractConcatenable ../../include/QtCore/QConcatenable ../../include/QtCore/QStringBuilder ../../include/QtCore/QStringListIterator ../../include/QtCore/QMutableStringListIterator ../../include/QtCore/QStringList ../../include/QtCore/QStringMatcher ../../include/QtCore/QTextBoundaryFinder ../../include/QtCore/QTimeLine ../../include/QtCore/QVarLengthArray ../../include/QtCore/QVectorData ../../include/QtCore/QVectorTypedData ../../include/QtCore/QVector ../../include/QtCore/QVectorIterator ../../include/QtCore/QMutableVectorIterator ../../include/QtCore/QFactoryInterface ../../include/QtCore/QLibrary ../../include/QtCore/QtPlugin ../../include/QtCore/QtPluginInstanceFunction ../../include/QtCore/QPluginLoader ../../include/QtCore/QUuid ../../include/QtCore/QXmlStreamStringRef ../../include/QtCore/QXmlStreamAttribute ../../include/QtCore/QXmlStreamAttributes ../../include/QtCore/QXmlStreamNamespaceDeclaration ../../include/QtCore/QXmlStreamNamespaceDeclarations ../../include/QtCore/QXmlStreamNotationDeclaration ../../include/QtCore/QXmlStreamNotationDeclarations ../../include/QtCore/QXmlStreamEntityDeclaration ../../include/QtCore/QXmlStreamEntityDeclarations ../../include/QtCore/QXmlStreamEntityResolver ../../include/QtCore/QXmlStreamReader ../../include/QtCore/QXmlStreamWriter ../../include/QtCore/QAtomicInt ../../include/QtCore/QAtomicPointer ../../include/QtCore/QBasicAtomicInt ../../include/QtCore/QBasicAtomicPointer ../../include/QtCore/QMutex ../../include/QtCore/QMutexLocker ../../include/QtCore/QMutexData ../../include/QtCore/QReadWriteLock ../../include/QtCore/QReadLocker ../../include/QtCore/QWriteLocker ../../include/QtCore/QSemaphore ../../include/QtCore/QThread ../../include/QtCore/QThreadStorageData ../../include/QtCore/QThreadStorage ../../include/QtCore/QWaitCondition ../../include/QtCore/QAbstractState ../../include/QtCore/QAbstractTransition ../../include/QtCore/QEventTransition ../../include/QtCore/QFinalState ../../include/QtCore/QHistoryState ../../include/QtCore/QSignalTransition ../../include/QtCore/QState ../../include/QtCore/QStateMachine ../../include/QtCore/QFuture ../../include/QtCore/QFutureIterator ../../include/QtCore/QMutableFutureIterator ../../include/QtCore/QFutureInterfaceBase ../../include/QtCore/QFutureInterface ../../include/QtCore/QFutureSynchronizer ../../include/QtCore/QFutureWatcherBase ../../include/QtCore/QFutureWatcher ../../include/QtCore/QRunnable ../../include/QtCore/QtConcurrentFilter ../../include/QtCore/QtConcurrentMap ../../include/QtCore/QtConcurrentRun ../../include/QtCore/QThreadPool ../../include/QtCore/QAbstractFileEngine ../../include/QtCore/QAbstractFileEngineHandler ../../include/QtCore/QAbstractFileEngineIterator ../../include/QtCore/QBuffer ../../include/QtCore/QDataStream ../../include/QtCore/QtDebug ../../include/QtCore/QDebug ../../include/QtCore/QNoDebug ../../include/QtCore/QDir ../../include/QtCore/QDirIterator ../../include/QtCore/QFile ../../include/QtCore/QFileInfo ../../include/QtCore/QFileInfoList ../../include/QtCore/QFileInfoListIterator ../../include/QtCore/QFileSystemWatcher ../../include/QtCore/QFSFileEngine ../../include/QtCore/QIODevice ../../include/QtCore/Q_PID ../../include/QtCore/QProcessEnvironment ../../include/QtCore/QProcess ../../include/QtCore/QResource ../../include/QtCore/QSettings ../../include/QtCore/QTemporaryFile ../../include/QtCore/QTextStream ../../include/QtCore/QTextStreamFunction ../../include/QtCore/QTextStreamManipulator ../../include/QtCore/QTS ../../include/QtCore/QTextIStream ../../include/QtCore/QTextOStream ../../include/QtCore/QUrl ../../include/QtCore/QtEndian ../../include/QtCore/QtGlobal ../../include/QtCore/QIntegerForSize ../../include/QtCore/QNoImplicitBoolCast ../../include/QtCore/Q_INT8 ../../include/QtCore/Q_UINT8 ../../include/QtCore/Q_INT16 ../../include/QtCore/Q_UINT16 ../../include/QtCore/Q_INT32 ../../include/QtCore/Q_UINT32 ../../include/QtCore/Q_INT64 ../../include/QtCore/Q_UINT64 ../../include/QtCore/Q_LLONG ../../include/QtCore/Q_ULLONG ../../include/QtCore/Q_LONG ../../include/QtCore/Q_ULONG ../../include/QtCore/QSysInfo ../../include/QtCore/QtMsgHandler ../../include/QtCore/QGlobalStatic ../../include/QtCore/QGlobalStaticDeleter ../../include/QtCore/QBool ../../include/QtCore/QTypeInfo ../../include/QtCore/QFlag ../../include/QtCore/QIncompatibleFlag ../../include/QtCore/QFlags ../../include/QtCore/QForeachContainer ../../include/QtCore/QForeachContainerBase ../../include/QtCore/QLibraryInfo ../../include/QtCore/Qt ../../include/QtCore/QInternal ../../include/QtCore/QCOORD ../../include/QtCore/QtConfig ../../include/QtCore/QTextCodec ../../include/QtCore/QTextEncoder ../../include/QtCore/QTextDecoder ../../include/QtCore/QTextCodecFactoryInterface ../../include/QtCore/QTextCodecPlugin + SYNCQT.PRIVATE_HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher_p.h ../corelib/kernel/qabstractitemmodel_p.h ../corelib/kernel/qcore_mac_p.h ../corelib/kernel/qcore_symbian_p.h ../corelib/kernel/qcore_unix_p.h ../corelib/kernel/qcoreapplication_p.h ../corelib/kernel/qcorecmdlineargs_p.h ../corelib/kernel/qcoreglobaldata_p.h ../corelib/kernel/qcrashhandler_p.h ../corelib/kernel/qeventdispatcher_blackberry_p.h ../corelib/kernel/qeventdispatcher_glib_p.h ../corelib/kernel/qeventdispatcher_symbian_p.h ../corelib/kernel/qeventdispatcher_unix_p.h ../corelib/kernel/qeventdispatcher_win_p.h ../corelib/kernel/qfunctions_p.h ../corelib/kernel/qmetaobject_p.h ../corelib/kernel/qobject_p.h ../corelib/kernel/qsharedmemory_p.h ../corelib/kernel/qsystemerror_p.h ../corelib/kernel/qsystemsemaphore_p.h ../corelib/kernel/qtranslator_p.h ../corelib/kernel/qvariant_p.h ../corelib/kernel/qwineventnotifier_p.h ../corelib/animation/qabstractanimation_p.h ../corelib/animation/qanimationgroup_p.h ../corelib/animation/qparallelanimationgroup_p.h ../corelib/animation/qpropertyanimation_p.h ../corelib/animation/qsequentialanimationgroup_p.h ../corelib/animation/qvariantanimation_p.h ../corelib/tools/qbytedata_p.h ../corelib/tools/qdatetime_p.h ../corelib/tools/qharfbuzz_p.h ../corelib/tools/qlocale_data_p.h ../corelib/tools/qlocale_p.h ../corelib/tools/qlocale_tools_p.h ../corelib/tools/qpodlist_p.h ../corelib/tools/qringbuffer_p.h ../corelib/tools/qscopedpointer_p.h ../corelib/tools/qsimd_p.h ../corelib/tools/qtools_p.h ../corelib/tools/qunicodetables_p.h ../corelib/plugin/qelfparser_p.h ../corelib/plugin/qfactoryloader_p.h ../corelib/plugin/qlibrary_p.h ../corelib/plugin/qsystemlibrary_p.h ../corelib/xml/qxmlstream_p.h ../corelib/xml/qxmlutils_p.h ../corelib/thread/qmutex_p.h ../corelib/thread/qmutexpool_p.h ../corelib/thread/qorderedmutexlocker_p.h ../corelib/thread/qreadwritelock_p.h ../corelib/thread/qthread_p.h ../corelib/statemachine/qabstractstate_p.h ../corelib/statemachine/qabstracttransition_p.h ../corelib/statemachine/qeventtransition_p.h ../corelib/statemachine/qhistorystate_p.h ../corelib/statemachine/qsignaleventgenerator_p.h ../corelib/statemachine/qsignaltransition_p.h ../corelib/statemachine/qstate_p.h ../corelib/statemachine/qstatemachine_p.h ../corelib/concurrent/qfutureinterface_p.h ../corelib/concurrent/qfuturewatcher_p.h ../corelib/concurrent/qthreadpool_p.h ../corelib/io/qabstractfileengine_p.h ../corelib/io/qdatastream_p.h ../corelib/io/qdataurl_p.h ../corelib/io/qdir_p.h ../corelib/io/qfile_p.h ../corelib/io/qfileinfo_p.h ../corelib/io/qfilesystemengine_p.h ../corelib/io/qfilesystementry_p.h ../corelib/io/qfilesystemiterator_p.h ../corelib/io/qfilesystemmetadata_p.h ../corelib/io/qfilesystemwatcher_dnotify_p.h ../corelib/io/qfilesystemwatcher_fsevents_p.h ../corelib/io/qfilesystemwatcher_inotify_p.h ../corelib/io/qfilesystemwatcher_kqueue_p.h ../corelib/io/qfilesystemwatcher_p.h ../corelib/io/qfilesystemwatcher_symbian_p.h ../corelib/io/qfilesystemwatcher_win_p.h ../corelib/io/qfsfileengine_iterator_p.h ../corelib/io/qfsfileengine_p.h ../corelib/io/qiodevice_p.h ../corelib/io/qnoncontiguousbytedevice_p.h ../corelib/io/qprocess_p.h ../corelib/io/qresource_iterator_p.h ../corelib/io/qresource_p.h ../corelib/io/qsettings_p.h ../corelib/io/qtldurl_p.h ../corelib/io/qurltlds_p.h ../corelib/io/qwindowspipewriter_p.h ../corelib/global/qnumeric_p.h ../corelib/global/qt_pch.h ../corelib/codecs/qfontlaocodec_p.h ../corelib/codecs/qiconvcodec_p.h ../corelib/codecs/qisciicodec_p.h ../corelib/codecs/qlatincodec_p.h ../corelib/codecs/qsimplecodec_p.h ../corelib/codecs/qtextcodec_p.h ../corelib/codecs/qtsciicodec_p.h ../corelib/codecs/qutfcodec_p.h diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0033-configure-support-c-0x-standard-for-directfd.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0033-configure-support-c-0x-standard-for-directfd.patch new file mode 100644 index 000000000..f3face575 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/0033-configure-support-c-0x-standard-for-directfd.patch @@ -0,0 +1,40 @@ +configure: support c++0x standard for directfd + +While directfd upgrade to 1.7.6, it always includes directfb++ utils +when C++ is used and set c++0x as c++ standard. +(In git://git.directfb.org/git/directfb/core/DirectFB.git +commit b444bcae3197be9faf883460dcc239ef757d5922, and commit +522beeb76f2a8d2dee30d928d2a5955bd06cf25c) + +The directfd in qt4 is c++, and there was a build failure: +... +| qdirectfbwindowsurface.cpp:336:69: error: in C++98 'rect' must be +initialized by constructor, not by '{...}' +| const DFBRectangle rect = { r.x(), r.y(), r.width(), r.height() }; +... + +The g++ used c++98 as default c++ standard, we should +explicitly set c++0x for directfd in qt4. + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> +--- + configure | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configure b/configure +index 5724bd6..ecc2f8b 100755 +--- a/configure ++++ b/configure +@@ -6656,6 +6656,7 @@ if [ "$PLATFORM_QWS" = "yes" ]; then + if [ "${screen}" = "directfb" ] && [ "${CFG_CONFIGURE_EXIT_ON_ERROR}" = "yes" ]; then + if test -n "$PKG_CONFIG" && "$PKG_CONFIG" --exists directfb 2>/dev/null; then + QT_CFLAGS_DIRECTFB=`$PKG_CONFIG --cflags directfb 2>/dev/null` ++ QT_CFLAGS_DIRECTFB="$QT_CFLAGS_DIRECTFB -std=c++0x" + QT_LIBS_DIRECTFB=`$PKG_CONFIG --libs directfb 2>/dev/null` + elif directfb-config --version >/dev/null 2>&1; then + QT_CFLAGS_DIRECTFB=`directfb-config --cflags 2>/dev/null` +-- +1.9.1 + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/Fix-QWSLock-invalid-argument-logs.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/Fix-QWSLock-invalid-argument-logs.patch new file mode 100644 index 000000000..1f5f00f71 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/Fix-QWSLock-invalid-argument-logs.patch @@ -0,0 +1,98 @@ +From 52c34001bad85c3032618070b1d6b2a3c6880715 Mon Sep 17 00:00:00 2001 +From: Neil Jerram <n...@ossau.homelinux.net> +Date: Thu, 8 Nov 2012 08:18:32 +0000 +Subject: [PATCH] Fix QWSLock "invalid argument" logs + +There was no known actual problem associated with these logs, but they +were spamming the log, so I thought it worth trying to understand and +fix them. + +The confusion is that there are two different ways of creating QWSLock +objects. "QWSLock()" creates an object that creates a new set of +semaphores, whereas "QWSLock(id)" creates an object that aliases the +existing set of semaphores with ID id. What seems to happen is that +each application creates a semaphore set scoped to that +application (QWSDisplay::Data::clientLock in qapplication_qws.cpp), +then this semaphore set is passed by complex means to +places (QWSClientPrivate and QWSMemorySurface) that use the semaphores +for a short period and then delete their QWSLock objects. + +The problem was that the QWSLock destructor always destroyed the +semaphore set, even when that QWSLock hadn't create the semaphores +itself, hence making the semaphores invalid for other QWSLock objects +still referencing the same set. + +Clearly a QWSLock object shouldn't destroy the semaphore set if it +didn't create it itself, and that is confirmed by the fact that one of +the implementations inside QWSLock already implements this logic, with +the 'owned' flag. The fix is to implement this for the #ifndef +QT_POSIX_IPC case - which is what is used in QtMoko - just as is +already implemented for the #ifdef QT_POSIX_IPC case. + +Original patch can be found here: + http://www.mail-archive.com/community@lists.openmoko.org/msg65512.html + +Upstream-Status: Submitted + +Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> + (Removed the commented-out debug statements from the original patch.) + +--- + +diff --git a/src/gui/embedded/qwslock.cpp b/src/gui/embedded/qwslock.cpp +index 9914a24..1055785 100644 +--- a/src/gui/embedded/qwslock.cpp ++++ b/src/gui/embedded/qwslock.cpp +@@ -83,9 +83,12 @@ QWSLock::QWSLock(int id) : semId(id) + QWSSignalHandler::instance()->addWSLock(this); + #endif + ++ owned = false; ++ + #ifndef QT_POSIX_IPC + if (semId == -1) { + semId = semget(IPC_PRIVATE, 3, IPC_CREAT | 0666); ++ owned = true; + if (semId == -1) { + perror("QWSLock::QWSLock"); + qFatal("Unable to create semaphore"); +@@ -100,7 +104,6 @@ QWSLock::QWSLock(int id) : semId(id) + } + #else + sems[0] = sems[1] = sems[2] = SEM_FAILED; +- owned = false; + + if (semId == -1) { + // ### generate really unique IDs +@@ -134,9 +137,11 @@ QWSLock::~QWSLock() + + if (semId != -1) { + #ifndef QT_POSIX_IPC +- qt_semun semval; +- semval.val = 0; +- semctl(semId, 0, IPC_RMID, semval); ++ if (owned) { ++ qt_semun semval; ++ semval.val = 0; ++ semctl(semId, 0, IPC_RMID, semval); ++ } + semId = -1; + #else + // emulate the SEM_UNDO behavior for the BackingStore lock +diff --git a/src/gui/embedded/qwslock_p.h b/src/gui/embedded/qwslock_p.h +index d324e4f..d867d20 100644 +--- a/src/gui/embedded/qwslock_p.h ++++ b/src/gui/embedded/qwslock_p.h +@@ -86,8 +86,8 @@ private: + int lockCount[2]; + #ifdef QT_POSIX_IPC + sem_t *sems[3]; +- bool owned; + #endif ++ bool owned; + }; + + QT_END_NAMESPACE + +-- +1.7.10.4 diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/add_check_for_aarch64_32.patch b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/add_check_for_aarch64_32.patch new file mode 100644 index 000000000..ad5103dd0 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/add_check_for_aarch64_32.patch @@ -0,0 +1,55 @@ +Author: Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com> +Date: Sun Apr 12 19:27:10 2015 +0530 + +[PATCH] add checking for AArch64 ilp32 + +Cross-compiling qt4-embedded and qt4-x11-free applications for AArch64 ilp32 +(both big and little endian) fails with below error, + +(snip) +In file included from ../3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.h:31:0, + from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.h:32, + from ../3rdparty/javascriptcore/JavaScriptCore/interpreter/CallFrame.h:26, + from ../3rdparty/javascriptcore/JavaScriptCore/runtime/ClassInfo.h:26, + from ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSObject.h:27, + from ../3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.h:30, + from ../3rdparty/javascriptcore/JavaScriptCore/API/JSCallbackConstructor.cpp:27: +../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h: In instantiation of 'TO QTWTF::bitwise_cast(FROM) [w +../3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h:52:49: required from here +../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h:63:1: error: size of array is negative +../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h: In instantiation of 'TO QTWTF::bitwise_cast(FROM) [w +../3rdparty/javascriptcore/JavaScriptCore/runtime/JSImmediate.h:57:47: required from here +../3rdparty/javascriptcore/JavaScriptCore/wtf/StdLibExtras.h:63:1: error: size of array is negative +make[1]: *** [obj/release/JSCallbackConstructor.o] Error 1 +-- CUT -- + +the error is because of JSVALUE64 is being defined while compiling programs +for AArch64 ilp32. This makes equal condition checking of intptr_t and double +datatypes as false, and results in -1 (negative) as array size in bitwise_cast +function. + +Upstream-Status: Pending + +Signed-off-by: Krishnanjanappa, Jagadeesh <jagadeesh.krishnanjanappa@caviumnetworks.com> + +--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2014-04-11 00:07:12.000000000 +0530 ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Platform.h 2015-04-10 22:19:51.066279426 +0530 +@@ -214,6 +214,9 @@ + #define WTF_CPU_AARCH64 1 + #if defined(__AARCH64EB__) + #define WTF_CPU_BIG_ENDIAN 1 ++#if !defined(__LP64__) ++#define WTF_CPU_AARCH64_32 1 ++#endif + #endif + #endif + +@@ -903,7 +906,7 @@ + #endif + + #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64) +-#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || CPU(AARCH64) ++#if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS) || OS(SOLARIS) || OS(HPUX))) || (CPU(IA64) && !CPU(IA64_32)) || CPU(ALPHA) || CPU(AIX64) || CPU(SPARC64) || CPU(MIPS64) || (CPU(AARCH64) && !CPU(AARCH64_32)) + #define WTF_USE_JSVALUE64 1 + #elif CPU(ARM) || CPU(PPC64) + #define WTF_USE_JSVALUE32 1 diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/g++.conf b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/g++.conf new file mode 100644 index 000000000..be78c249e --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/g++.conf @@ -0,0 +1,40 @@ +# +# qmake configuration for common gcc +# + +QMAKE_COMPILER = gcc + +QMAKE_CC = $(OE_QMAKE_CC) +QMAKE_CFLAGS += $(OE_QMAKE_CFLAGS) +QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $(OE_QMAKE_CFLAGS) +QMAKE_CFLAGS_PRECOMPILE += -x c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CFLAGS_USE_PRECOMPILE += -include ${QMAKE_PCH_OUTPUT_BASE} + +QMAKE_CXX = $(OE_QMAKE_CXX) +QMAKE_CXXFLAGS += $(OE_QMAKE_CXXFLAGS) +QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +QMAKE_CXXFLAGS_PRECOMPILE += -x c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT} +QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE + +QMAKE_LINK = $(OE_QMAKE_LINK) +QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK) +QMAKE_LINK_C = $(OE_QMAKE_LINK) +QMAKE_LINK_C_SHLIB = $(OE_QMAKE_LINK) +QMAKE_LFLAGS += $(OE_QMAKE_LDFLAGS) +QMAKE_LFLAGS_NOUNDEF += -Wl,--no-undefined +QMAKE_LFLAGS_RPATH = -Wl,-rpath-link, + +QMAKE_PCH_OUTPUT_EXT = .gch + +# -Bsymbolic-functions (ld) support +QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions +QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list, + +# do not depend on gdb +CONFIG -= gdb_dwarf_index + +# some linking helper... +CONFIG += rpath_libdirs + +# for the SDK +isEmpty(QMAKE_QT_CONFIG):QMAKE_QT_CONFIG = $(OE_QMAKE_QT_CONFIG) diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/linux.conf b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/linux.conf new file mode 100644 index 000000000..86703813c --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/linux.conf @@ -0,0 +1,66 @@ +# +# qmake configuration for common linux +# + +QMAKE_CFLAGS_THREAD += -D_REENTRANT +QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD + +QMAKE_INCDIR = +QMAKE_LIBDIR = +QMAKE_INCDIR_X11 = +QMAKE_LIBDIR_X11 = +QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT) +QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT) +QMAKE_INCDIR_OPENGL = +QMAKE_LIBDIR_OPENGL = +QMAKE_INCDIR_OPENGL_ES1 = $$QMAKE_INCDIR_OPENGL +QMAKE_LIBDIR_OPENGL_ES1 = $$QMAKE_LIBDIR_OPENGL +QMAKE_INCDIR_OPENGL_ES2 = $$QMAKE_INCDIR_OPENGL +QMAKE_LIBDIR_OPENGL_ES2 = $$QMAKE_LIBDIR_OPENGL +QMAKE_INCDIR_EGL = +QMAKE_LIBDIR_EGL = +QMAKE_INCDIR_OPENVG = +QMAKE_LIBDIR_OPENVG = + + +QMAKE_LIBS = +QMAKE_LIBS_DYNLOAD = -ldl +QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11) +QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM) +QMAKE_LIBS_NIS = -lnsl +QMAKE_LIBS_EGL = -lEGL +QMAKE_LIBS_OPENGL = -lGL +QMAKE_LIBS_OPENGL_QT = -lGL +QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM +QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 +QMAKE_LIBS_OPENVG = -lOpenVG +QMAKE_LIBS_THREAD = -lpthread + +QMAKE_MOC = $(OE_QMAKE_MOC) +QMAKE_UIC = $(OE_QMAKE_UIC) +QMAKE_UIC3 = $(OE_QMAKE_UIC3) +QMAKE_RCC = $(OE_QMAKE_RCC) +QMAKE_QDBUSCPP2XML = $(OE_QMAKE_QDBUSCPP2XML) +QMAKE_QDBUSXML2CPP = $(OE_QMAKE_QDBUSXML2CPP) + +QMAKE_AR = $(OE_QMAKE_AR) cqs +QMAKE_OBJCOPY = objcopy +QMAKE_RANLIB = + +QMAKE_TAR = tar -cf +QMAKE_GZIP = gzip -9f + +QMAKE_COPY = cp -f +QMAKE_COPY_FILE = $(COPY) +QMAKE_COPY_DIR = $(COPY) -r +QMAKE_MOVE = mv -f +QMAKE_DEL_FILE = rm -f +QMAKE_DEL_DIR = rmdir +QMAKE_STRIP = $(OE_QMAKE_STRIP) +QMAKE_STRIPFLAGS_LIB += --strip-unneeded +QMAKE_CHK_DIR_EXISTS = test -d +QMAKE_MKDIR = mkdir -p +QMAKE_INSTALL_FILE = install -m 644 -p +QMAKE_INSTALL_PROGRAM = install -m 755 -p + +include(unix.conf) diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/qte.sh b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/qte.sh new file mode 100644 index 000000000..21d6ecbd6 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-4.8.7/qte.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -e /dev/input/touchscreen0 ] +then + QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0 + export QWS_MOUSE_PROTO +fi diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-embedded.inc b/yocto-poky/meta/recipes-qt/qt4/qt4-embedded.inc new file mode 100644 index 000000000..a76906579 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-embedded.inc @@ -0,0 +1,74 @@ +SUMMARY = "Cross-platform UI toolkit and application framework (framebuffer version)" +DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is the embedded (framebuffer) version." +SECTION = "libs" +HOMEPAGE = "http://qt-project.org/" +DEPENDS += "directfb tslib" + +QT4EDEPENDS = "" +QT_BASE_LIB ?= "libqt-embedded" + +# Set necessary variables in the profile +SRC_URI += "file://qte.sh \ + file://0033-configure-support-c-0x-standard-for-directfd.patch \ +" + +QT_EMBEDDED_FLAGS ?= " \ + -embedded $QT_ARCH \ + -qtlibinfix ${QT_LIBINFIX} \ +" +QT_EMBEDDED_EXTRA_FLAGS ?= " \ + -plugin-gfx-transformed -plugin-gfx-qvfb -plugin-gfx-vnc -plugin-gfx-directfb \ + -plugin-mouse-tslib -qt-mouse-pc -qt-mouse-qvfb -qt-mouse-linuxinput \ + -qt-kbd-tty -qt-kbd-linuxinput \ +" +QT_EMBEDDED_KEYPAD_FLAGS ?= " \ + -DQT_KEYPAD_NAVIGATION \ +" + +QT_CONFIG_FLAGS += "${QT_EMBEDDED_FLAGS} ${QT_EMBEDDED_EXTRA_FLAGS} ${QT_EMBEDDED_KEYPAD_FLAGS}" + +require qt4.inc + +do_install_append() { + install -d ${D}/${libdir}/fonts + touch ${D}/${libdir}/fonts/fontdir + + install -d ${D}${sysconfdir}/profile.d/ + install -m 0755 ${WORKDIR}/qte.sh ${D}${sysconfdir}/profile.d/ +} + +# We put the qte profile into it's own package as we don't want to install all qt stuff +# with depending on the global package qt4-embedded +PACKAGES += " ${PN}-conf" +FILES_${PN}-conf += " ${sysconfdir}/profile.d/qte.sh" +RRECOMMENDS_${PN} += " ${PN}-conf" + +OTHER_PACKAGES += "\ + ${QT_BASE_NAME}-fonts \ + ${QT_BASE_NAME}-fonts-ttf-vera \ + ${QT_BASE_NAME}-fonts-ttf-dejavu \ + ${QT_BASE_NAME}-fonts-pfa \ + ${QT_BASE_NAME}-fonts-pfb \ + ${QT_BASE_NAME}-fonts-qpf" + +RRECOMMENDS_${QT_BASE_NAME}-fonts = " \ + ${QT_BASE_NAME}-fonts-ttf-vera \ + ${QT_BASE_NAME}-fonts-ttf-dejavu \ + ${QT_BASE_NAME}-fonts-pfa \ + ${QT_BASE_NAME}-fonts-pfb \ + ${QT_BASE_NAME}-fonts-qpf" +RRECOMMENDS_${QT_BASE_NAME}-demos += " \ + ${QT_BASE_NAME}-fonts" + +ALLOW_EMPTY_${QT_BASE_NAME}-fonts = "1" +PACKAGES_DYNAMIC += "^${QT_BASE_NAME}-fonts-.*" + +FILES_${QT_BASE_NAME}-fonts-ttf-vera = "${libdir}/fonts/Vera*.ttf" +FILES_${QT_BASE_NAME}-fonts-ttf-dejavu = "${libdir}/fonts/DejaVu*.ttf" +FILES_${QT_BASE_NAME}-fonts-pfa = "${libdir}/fonts/*.pfa" +FILES_${QT_BASE_NAME}-fonts-pfb = "${libdir}/fonts/*.pfb" +FILES_${QT_BASE_NAME}-fonts-qpf = "${libdir}/fonts/*.qpf*" +FILES_${QT_BASE_NAME}-fonts = "${libdir}/fonts/README ${libdir}/fonts/fontdir" + +inherit qt4e + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-embedded_4.8.7.bb b/yocto-poky/meta/recipes-qt/qt4/qt4-embedded_4.8.7.bb new file mode 100644 index 000000000..1435d857c --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-embedded_4.8.7.bb @@ -0,0 +1,9 @@ +require qt4-${PV}.inc +require qt4-embedded.inc + +QT_CONFIG_FLAGS_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " -no-neon" ,d)}" + +QT_CONFIG_FLAGS += " \ + -exceptions \ +" + diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-native.inc b/yocto-poky/meta/recipes-qt/qt4/qt4-native.inc new file mode 100644 index 000000000..2a41f8ab2 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-native.inc @@ -0,0 +1,112 @@ +SUMMARY = "Qt version 4 tools and support files for the build host" +DEPENDS = "zlib-native dbus-native" +SECTION = "libs" +HOMEPAGE = "http://qt-project.org/" +PROVIDES = "qt4-tools-native" + +LICENSE = "LGPLv2.1 | GPLv3" +LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \ + file://LICENSE.GPL3;md5=6e1694ee338db410417517884918d4d2 \ + file://LGPL_EXCEPTION.txt;md5=0145c4d1b6f96a661c2c139dfb268fb6" + +inherit native + +SRC_URI = "http://download.qt-project.org/official_releases/qt/4.8/${PV}/qt-everywhere-opensource-src-${PV}.tar.gz \ + file://0001-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch \ + file://0002-qkbdtty_qws-fix-build-with-old-kernel-headers.patch \ + file://0003-webkit2-set-OUTPUT_DIR-value-if-empty.patch \ + file://0021-configure-make-qt4-native-work-with-long-building-pa.patch \ + file://g++.conf \ + file://linux.conf \ + " +S = "${WORKDIR}/qt-everywhere-opensource-src-${PV}" + +EXTRA_OECONF = "-prefix ${prefix} \ + -bindir ${bindir} \ + -libdir ${libdir} \ + -datadir ${datadir}/qt4 \ + -sysconfdir ${sysconfdir}/qt4 \ + -docdir ${docdir}/qt4 \ + -headerdir ${includedir}/qt4 \ + -plugindir ${libdir}/qt4/plugins \ + -importdir ${libdir}/qt4/imports \ + -translationdir ${datadir}/qt4/translations \ + -examplesdir ${bindir}/qt4/examples \ + -demosdir ${bindir}/qt4/demos \ + -L ${STAGING_LIBDIR_NATIVE} \ + -I ${STAGING_INCDIR_NATIVE} \ + -qt-libjpeg -system-zlib \ + -no-libjpeg -no-libpng -no-libmng -no-libtiff \ + -no-accessibility \ + -no-cups \ + -no-nas-sound \ + -no-nis -no-openssl \ + -verbose -release \ + -embedded -no-freetype -no-glib -no-iconv \ + -exceptions -xmlpatterns \ + -qt3support \ + -no-fast -silent -no-rpath" + +# yank default -e, otherwise we get the following error: +# moc_qbuffer.cpp: No such file or directory +EXTRA_OEMAKE = " " + +do_configure() { + # Avoid problems with Qt 4.8.0 configure setting QMAKE_LINK from LD (since we want the linker to be g++) + unset LD + + (echo o; echo yes) | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}" +} + +TOBUILD = "\ + src/tools/moc \ + src/corelib \ + src/sql \ + src/xml \ + src/network \ + src/tools/uic \ + src/tools/rcc \ + src/xmlpatterns \ + src/dbus \ + src/gui \ + src/testlib \ + src/qt3support \ + src/tools/uic3 \ + tools/linguist/lconvert \ + tools/linguist/lrelease \ + tools/linguist/lupdate \ + tools/qdbus/qdbuscpp2xml \ + tools/qdbus/qdbusxml2cpp \ + tools/xmlpatterns \ +" + +do_compile() { + for i in ${TOBUILD}; do + cd ${S}/$i && oe_runmake CC="${CC}" CXX="${CXX}" + done +} + +do_install() { + install -d ${D}${bindir}/ + install -m 0755 bin/qmake ${D}${bindir}/qmake2 + for i in moc uic uic3 rcc lconvert lrelease lupdate qdbuscpp2xml qdbusxml2cpp xmlpatterns; do + install -m 0755 bin/${i} ${D}${bindir}/${i}4 + done + + install -d ${D}${datadir}/qt4/ + cp -PfR mkspecs ${D}${datadir}/qt4/ + ln -sf linux-g++ ${D}${datadir}/qt4/mkspecs/${BUILD_OS}-oe-g++ + if [ -f ${D}${datadir}/qt4/mkspecs/common/g++-unix.conf ] ; then + # mkspecs were refactored for 4.8.0 + cp -f ${WORKDIR}/g++.conf ${D}${datadir}/qt4/mkspecs/common/g++-unix.conf + else + cp -f ${WORKDIR}/g++.conf ${D}${datadir}/qt4/mkspecs/common/g++.conf + fi + cp -f ${WORKDIR}/linux.conf ${D}${datadir}/qt4/mkspecs/common/ + + install -m 0644 tools/porting/src/q3porting.xml ${D}${datadir}/qt4/ + + for i in ${TOBUILD}; do + cd ${S}/$i && oe_runmake install INSTALL_ROOT=${D} + done +} diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-native_4.8.7.bb b/yocto-poky/meta/recipes-qt/qt4/qt4-native_4.8.7.bb new file mode 100644 index 000000000..494d66319 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-native_4.8.7.bb @@ -0,0 +1,6 @@ +require qt4-native.inc + +TOBUILD := "src/tools/bootstrap ${TOBUILD}" + +SRC_URI[md5sum] = "d990ee66bf7ab0c785589776f35ba6ad" +SRC_URI[sha256sum] = "e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0" diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-x11-free.inc b/yocto-poky/meta/recipes-qt/qt4/qt4-x11-free.inc new file mode 100644 index 000000000..f6a173739 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-x11-free.inc @@ -0,0 +1,38 @@ +require qt4.inc + +SUMMARY = "Cross-platform UI toolkit and application framework (X11 version)" +DESCRIPTION = "Qt is a versatile cross-platform application framework -- this is the X11 version." +HOMEPAGE = "http://qt-project.org/" +SECTION = "x11/libs" +DEPENDS += "virtual/libx11 fontconfig libxft libxext libxrender libxrandr libxcursor" +DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'virtual/libgl', '', d)}" +PROVIDES += "qt4-x11" +QT4DEPENDS = "" + +QT_GLFLAGS ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '-opengl', '-no-opengl', d)} " +QT_GLFLAGS_qemux86 = "-opengl" +QT_GLFLAGS_qemuppc = "-opengl" +QT_X11_FLAGS ?= "-no-xinerama -no-xkb -no-gtkstyle" +QT_CONFIG_FLAGS += "${QT_X11_FLAGS}" +QT_BASE_LIB ?= "libqt" + +# required by kdelibs4 +QT_KDE_FLAGS ?= "-accessibility -sm" +QT_DISTRO_FLAGS ?= "${QT_KDE_FLAGS}" + +inherit qt4x11 + +do_install_append() { + # fix pkgconfig, libtool and prl files + sed -i -e 's#I/usr/include#Iincludedir}#g' \ + -e 's#Iin#I${in#g' \ + ${D}${libdir}/*.la ${D}${libdir}/*.prl ${D}${libdir}/pkgconfig/*.pc + + # QT abuses $includedir to point to its headers, which breaks pkgconfig sysroot, so + # manually fix it up here: + for pc in ${D}${libdir}/pkgconfig/*.pc ; do + sed -i -e "s:prefix}include/${QT_BASE_NAME}/$(basename $pc .pc):prefix}/include:" \ + -e "s,Cflags: ,Cflags: -IP{includedir}/${QT_BASE_NAME}/$(basename $pc .pc) ," \ + -e 's:IP{:I${:g' $pc + done +} diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4-x11-free_4.8.7.bb b/yocto-poky/meta/recipes-qt/qt4/qt4-x11-free_4.8.7.bb new file mode 100644 index 000000000..5cb5e6817 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4-x11-free_4.8.7.bb @@ -0,0 +1,9 @@ +require qt4-x11-free.inc +require qt4-${PV}.inc + +QT_CONFIG_FLAGS_append_arm = "${@bb.utils.contains("TUNE_FEATURES", "neon", "", " -no-neon" ,d)}" + +QT_CONFIG_FLAGS += " \ + -no-embedded \ + -xrandr \ + -x11" diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4.inc b/yocto-poky/meta/recipes-qt/qt4/qt4.inc new file mode 100644 index 000000000..2058e54d3 --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4.inc @@ -0,0 +1,391 @@ +inherit qmake_base + +DEPENDS += "qt4-tools-native freetype jpeg libpng zlib dbus openssl glib-2.0 sqlite3 tiff icu" +DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)}" + +require qt4_arch.inc + +QT_DISTRO_FLAGS ?= "-no-accessibility -no-sm" +QT_DISTRO_FLAGS_linuxstdbase = "-sm" + +QT_SQL_DRIVER_FLAGS ?= "-no-sql-ibase -no-sql-mysql -no-sql-psql -no-sql-odbc -no-sql-sqlite2 -plugin-sql-sqlite -system-sqlite" + +QT_GLFLAGS ?= "" + + +QT_QT3SUPPORT ?= "-qt3support" +QT_XML ?= "-xmlpatterns" +QT_WEBKIT ?= "-webkit" +QT_PHONON ?= "-no-phonon" +QT_DBUS ?= "-qdbus" +QT_MULTIMEDIA ?= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', '-pulseaudio', '-no-pulseaudio', d)}" + +QT_CONFIG_FLAGS += "-release -no-cups -reduce-relocations \ + -shared -no-nas-sound -no-nis \ + -system-libjpeg -system-libpng -system-libtiff -system-zlib \ + -no-pch -stl -glib -icu \ + -no-rpath -silent \ + -D USE_QTMULTIMEDIA=1 \ + ${QT_DBUS} \ + ${QT_QT3SUPPORT} \ + ${QT_WEBKIT} \ + ${QT_PHONON} \ + ${QT_XML} \ + ${QT_MULTIMEDIA} \ + ${QT_SQL_DRIVER_FLAGS} \ + ${QT_DISTRO_FLAGS} \ + ${QT_GLFLAGS}" + +EXTRA_OEMAKE = "-e" + +EXTRA_ENV = 'QMAKE="${STAGING_BINDIR_NATIVE}/qmake2 -after \ + INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \ + QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \ + AR="${TARGET_PREFIX}ar cqs" \ + MOC="${STAGING_BINDIR_NATIVE}/moc4" UIC="${STAGING_BINDIR_NATIVE}/uic4" MAKE="make -e"' + +export QT_CONF_PATH="${WORKDIR}/qt.conf" + +# Library packages +QT_LIB_NAMES = "Qt3Support QtAssistantClient QtCLucene QtCore QtDBus QtDesigner QtDesignerComponents QtGui QtHelp QtNetwork QtOpenGL QtScript QtScriptTools QtSql QtSvg QtTest QtUiTools QtWebKit QtXml QtXmlPatterns phonon QtMultimedia QtOpenVG QtMediaServices QtDeclarative" + +QT_EXTRA_LIBS = "pvrQWSWSEGL" + +python __anonymous () { + lib_packages = [] + dev_packages = [] + dbg_packages = [] + staticdev_packages = [] + for name in d.getVar("QT_LIB_NAMES", True).split(): + pkg = d.getVar("QT_BASE_LIB", True) + name.lower().replace("qt", "").replace("_", "-") + "4" + # NOTE: the headers for QtAssistantClient are different + incname = name.replace("QtAssistantClient", "QtAssistant") + d.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s${QT_LIBINFIX}.so.*" % locals()) + d.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s${QT_LIBINFIX}.prl + ${libdir}/lib%(name)s${QT_LIBINFIX}.la + ${libdir}/lib%(name)s${QT_LIBINFIX}.so + ${includedir}/${QT_DIR_NAME}/%(incname)s + ${libdir}/pkgconfig/%(name)s${QT_LIBINFIX}.pc""" % locals()) + d.setVar("FILES_%s-staticdev" % pkg, "${libdir}/lib%(name)s${QT_LIBINFIX}.a" % locals()) + d.setVar("FILES_%s-dbg" % pkg, "${libdir}/.debug/lib%(name)s${QT_LIBINFIX}.so*" % locals()) + d.setVar("RRECOMMENDS_%s-dbg" % pkg, "${PN}-dbg") + lib_packages.append(pkg) + dev_packages.append("%s-dev" % pkg) + dbg_packages.append("%s-dbg" % pkg) + staticdev_packages.append("%s-staticdev" % pkg) + for name in d.getVar("OTHER_PACKAGES", True).split(): + dbg_packages.append("%s-dbg" % name) + staticdev_packages.append("%s-staticdev" % name) + + for name in d.getVar("QT_EXTRA_LIBS", True).split(): + pkg = d.getVar("QT_BASE_LIB", True) + name.lower().replace("qt", "").replace("_", "-") + "4" + d.setVar("FILES_%s" % pkg, "${libdir}/lib%(name)s.so.*" % locals()) + d.setVar("FILES_%s-staticdev" % pkg, "${libdir}/lib%(name)s.a" % locals()) + d.setVar("FILES_%s-dev" % pkg, """${libdir}/lib%(name)s.prl + ${libdir}/lib%(name)s.la + ${libdir}/lib%(name)s.so + ${includedir}/${QT_DIR_NAME}/%(incname)s + ${libdir}/pkgconfig/%(name)s.pc""" % locals()) + d.setVar("FILES_%s-dbg" % pkg, "${libdir}/.debug/lib%(name)s.so*" % locals()) + d.setVar("RRECOMMENDS_%s-dbg" % pkg, "${PN}-dbg") + lib_packages.append(pkg) + dev_packages.append("%s-dev" % pkg) + dbg_packages.append("%s-dbg" % pkg) + staticdev_packages.append("%s-staticdev" % pkg) + + d.setVar("LIB_PACKAGES", " ".join(lib_packages)) + d.setVar("DEV_PACKAGES", " ".join(dev_packages)) + d.setVar("DBG_PACKAGES", " ".join(dbg_packages)) + d.setVar("STATICDEV_PACKAGES", " ".join(staticdev_packages)) +} + +OTHER_PACKAGES = "\ + ${QT_BASE_NAME}-tools \ + ${QT_BASE_NAME}-assistant \ + ${QT_BASE_NAME}-common \ + ${QT_BASE_NAME}-dbus \ + ${QT_BASE_NAME}-demos \ + ${QT_BASE_NAME}-designer \ + ${QT_BASE_NAME}-examples \ + ${QT_BASE_NAME}-linguist \ + ${QT_BASE_NAME}-makeqpf \ + ${QT_BASE_NAME}-mkspecs \ + ${QT_BASE_NAME}-pixeltool \ + ${QT_BASE_NAME}-qmlviewer \ + ${QT_BASE_NAME}-xmlpatterns \ + ${QT_BASE_NAME}-qt3to4 \ + ${QT_BASE_NAME}-qml-plugins" + +#We prepend so ${QT_BASE_NAME}-demos-doc comes before ${PN}-doc,so the packaging of FILES_ get done before. +PACKAGES =+ "${QT_BASE_NAME}-demos-doc" +PACKAGES += " \ + ${LIB_PACKAGES} \ + ${DEV_PACKAGES} \ + ${DBG_PACKAGES} \ + ${STATICDEV_PACKAGES} \ + ${OTHER_PACKAGES}" + +PACKAGES_DYNAMIC += "^${QT_BASE_NAME}-plugin-.* ^${QT_BASE_NAME}-translation-.* ^${QT_BASE_NAME}-phrasebook-.*" + +ALLOW_EMPTY_${PN} = "1" +FILES_${PN} = "" +FILES_${PN}-dev = "${includedir}/${QT_DIR_NAME}/Qt/*" +FILES_${PN}-dbg = "/usr/src/debug/" +FILES_${QT_BASE_NAME}-demos-doc = "${docdir}/${QT_DIR_NAME}/qch/qt.qch" +RRECOMMENDS_${PN} = "${LIB_PACKAGES} ${OTHER_PACKAGES}" +RRECOMMENDS_${PN}-dev = "${DEV_PACKAGES}" +RRECOMMENDS_${PN}-dbg = "${DBG_PACKAGES}" +RRECOMMENDS_${QT_BASE_LIB}core4_append_libc-glibc = " glibc-gconv-utf-16" +RRECOMMENDS_${QT_BASE_NAME}-demos += " \ + ${QT_BASE_NAME}-examples \ + ${QT_BASE_NAME}-plugin-sqldriver-sqlite \ + ${QT_BASE_NAME}-plugin-imageformat-jpeg \ + ${QT_BASE_NAME}-qml-plugins \ + ${QT_BASE_NAME}-assistant \ + ${QT_BASE_NAME}-demos-doc" +RRECOMMENDS_${QT_BASE_NAME}-examples += " \ + ${QT_BASE_NAME}-plugin-sqldriver-sqlite \ + ${QT_BASE_NAME}-plugin-imageformat-jpeg \ + ${QT_BASE_NAME}-qml-plugins" +RRECOMMENDS_${QT_BASE_NAME}-qmlviewer += " \ + ${QT_BASE_NAME}-qml-plugins" +RRECOMMENDS_${QT_BASE_NAME}-doc += " \ + ${QT_BASE_NAME}-demos-doc" + +RPROVIDES_${QT_BASE_NAME}-tools += "qmake2" +RREPLACES_${QT_BASE_NAME}-tools += "qmake2" + +FILES_${QT_BASE_NAME}-tools = "${bindir}/qttracereplay ${bindir}/qdoc* ${bindir}/qmake ${bindir}/moc ${bindir}/uic* ${bindir}/rcc" +FILES_${QT_BASE_NAME}-tools-dbg = "${bindir}/.debug/qttracereplay ${bindir}/.debug/qdoc* ${bindir}/.debug/qmake ${bindir}/.debug/uic* ${bindir}/.debug/moc ${bindir}/.debug/rcc" +FILES_${QT_BASE_NAME}-assistant = "${bindir}/*assistant* ${bindir}/qcollectiongenerator ${bindir}/qhelpconverter ${bindir}/qhelpgenerator" +FILES_${QT_BASE_NAME}-assistant-dbg = "${bindir}/.debug/*assistant* ${bindir}/.debug/qcollectiongenerator ${bindir}/.debug/qhelpconverter ${bindir}/.debug/qhelpgenerator" +FILES_${QT_BASE_NAME}-common = "${bindir}/qtconfig" +FILES_${QT_BASE_NAME}-common-dbg = "${bindir}/.debug/qtconfig" +FILES_${QT_BASE_NAME}-dbus = "${bindir}/qdbus ${bindir}/qdbusxml2cpp ${bindir}/qdbuscpp2xml ${bindir}/qdbusviewer" +FILES_${QT_BASE_NAME}-dbus-dbg = "${bindir}/.debug/qdbus ${bindir}/.debug/qdbusxml2cpp ${bindir}/.debug/qdbuscpp2xml ${bindir}/.debug/qdbusviewer" +FILES_${QT_BASE_NAME}-demos = "${bindir}/qtdemo* ${bindir}/${QT_DIR_NAME}/demos/*" +FILES_${QT_BASE_NAME}-demos-staticdev = "${bindir}/${QT_DIR_NAME}/demos/shared/libdemo_shared.a" +FILES_${QT_BASE_NAME}-demos-dbg = "${bindir}/.debug/qtdemo* ${bindir}/${QT_DIR_NAME}/demos/.debug/* ${bindir}/${QT_DIR_NAME}/demos/*/.debug ${bindir}/${QT_DIR_NAME}/demos/*/*/.debug ${bindir}/${QT_DIR_NAME}/demos/*/*/*/.debug" +FILES_${QT_BASE_NAME}-designer = "${bindir}/*designer*" +FILES_${QT_BASE_NAME}-designer-dbg = "${bindir}/.debug/*designer*" +FILES_${QT_BASE_NAME}-examples = "${bindir}/${QT_DIR_NAME}/examples/*" +FILES_${QT_BASE_NAME}-examples-staticdev = "${bindir}/${QT_DIR_NAME}/examples/tools/plugandpaint/plugins/libpnp_basictools.a" +FILES_${QT_BASE_NAME}-examples-dbg = "${bindir}/${QT_DIR_NAME}/examples/.debug ${bindir}/${QT_DIR_NAME}/examples/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/*/*/*/*/.debug ${bindir}/${QT_DIR_NAME}/examples/declarative/*/*/*/*/*/.debug/* ${bindir}/${QT_DIR_NAME}/examples/declarative/*/*/*/*/.debug/*" +FILES_${QT_BASE_NAME}-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/lconvert ${bindir}/qm2ts" +FILES_${QT_BASE_NAME}-linguist-dbg = "${bindir}/.debug/*linguist* ${bindir}/.debug/lrelease ${bindir}/.debug/lupdate ${bindir}/.debug/lconvert ${bindir}/.debug/qm2ts" +FILES_${QT_BASE_NAME}-pixeltool = "${bindir}/pixeltool" +FILES_${QT_BASE_NAME}-pixeltool-dbg = "${bindir}/.debug/pixeltool" +FILES_${QT_BASE_NAME}-qt3to4 = "${bindir}/qt3to4 ${datadir}/${QT_DIR_NAME}/q3porting.xml" +FILES_${QT_BASE_NAME}-qt3to4-dbg = "${bindir}/.debug/qt3to4" +FILES_${QT_BASE_NAME}-qmlviewer = "${bindir}/qmlviewer" +FILES_${QT_BASE_NAME}-qmlviewer-dbg = "${bindir}/.debug/qmlviewer" +FILES_${QT_BASE_NAME}-makeqpf = "${bindir}/makeqpf" +FILES_${QT_BASE_NAME}-makeqpf-dbg = "${bindir}/.debug/makeqpf" +FILES_${QT_BASE_NAME}-mkspecs = "${datadir}/${QT_DIR_NAME}/mkspecs/* ${datadir}/${QT_DIR_NAME}/environment-setup" +FILES_${QT_BASE_NAME}-xmlpatterns = "${bindir}/xmlpatterns*" +FILES_${QT_BASE_NAME}-xmlpatterns-dbg = "${bindir}/.debug/xmlpatterns*" +FILES_${QT_BASE_NAME}-qml-plugins = "${libdir}/${QT_DIR_NAME}/imports/* ${libdir}/${QT_DIR_NAME}/plugins/qmltooling/*" +FILES_${QT_BASE_NAME}-qml-plugins-dbg = "${libdir}/${QT_DIR_NAME}/imports/*/*/*/.debug/* ${libdir}/${QT_DIR_NAME}/imports/*/.debug ${libdir}/${QT_DIR_NAME}/plugins/qmltooling/.debug" +INSANE_SKIP_${MLPREFIX}${QT_BASE_NAME}-examples += "libdir" +INSANE_SKIP_${MLPREFIX}${QT_BASE_NAME}-examples-dbg += "libdir" + +# License options, to be set by the recipe if different values are needed +QT_LICENSE_FILE ?= "" +QT_LICENSE_FLAGS ?= "-opensource" + +do_configure() { + unset QMAKESPEC + unset QTDIR + + set_arch + set_endian + + if [ ! -e bin/qmake ]; then + ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake + fi + + if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then + ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++ + fi + + if [ -f mkspecs/common/g++-unix.conf ] ; then + # mkspecs were refactored for 4.8.0 + cp -f ${WORKDIR}/g++.conf mkspecs/common/g++-unix.conf + else + cp -f ${WORKDIR}/g++.conf mkspecs/common/g++.conf + fi + cp -f ${WORKDIR}/linux.conf mkspecs/common/ + + echo "[Paths]" > $QT_CONF_PATH + echo "Prefix=${prefix}" >> $QT_CONF_PATH + echo "Documentation=${docdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Headers=${includedir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Libraries=${libdir}" >> $QT_CONF_PATH + echo "Binaries=${bindir}" >> $QT_CONF_PATH + echo "Plugins=${libdir}/${QT_DIR_NAME}/plugins" >> $QT_CONF_PATH + echo "Imports=${libdir}/${QT_DIR_NAME}/imports" >> $QT_CONF_PATH + echo "Data=${datadir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Translations=${datadir}/${QT_DIR_NAME}/translations" >> $QT_CONF_PATH + echo "Settings=${sysconfdir}/${QT_DIR_NAME}" >> $QT_CONF_PATH + echo "Examples=${bindir}/${QT_DIR_NAME}/examples" >> $QT_CONF_PATH + echo "Demos=${bindir}/${QT_DIR_NAME}/demos" >> $QT_CONF_PATH + + ${EXTRA_QMAKE_MUNGE}|| true + + echo yes | QT_LICENSE_FILE="${QT_LICENSE_FILE}" ./configure -v \ + -prefix ${prefix} \ + -bindir ${bindir} \ + -libdir ${libdir} \ + -datadir ${datadir}/${QT_DIR_NAME} \ + -sysconfdir ${sysconfdir}/${QT_DIR_NAME} \ + -docdir ${docdir}/${QT_DIR_NAME} \ + -headerdir ${includedir}/${QT_DIR_NAME} \ + -plugindir ${libdir}/${QT_DIR_NAME}/plugins \ + -importdir ${libdir}/${QT_DIR_NAME}/imports \ + -translationdir ${datadir}/${QT_DIR_NAME}/translations \ + -examplesdir ${bindir}/${QT_DIR_NAME}/examples \ + -demosdir ${bindir}/${QT_DIR_NAME}/demos \ + -platform ${TARGET_OS}-oe-g++ \ + -xplatform ${TARGET_OS}-oe-g++ \ + ${QT_ENDIAN} \ + -crossarch ${QT_ARCH} \ + ${QT_LICENSE_FLAGS} \ + ${QT_CONFIG_FLAGS} -no-fast \ + -L${STAGING_LIBDIR} -I${STAGING_INCDIR} \ + -I${STAGING_INCDIR}/freetype2 +} + +do_compile() { + # Fixup missing wsegl header in some SGX SDKs + if ! [ -e ${STAGING_INCDIR}/wsegl.h ] ; then + cp src/3rdparty/powervr/wsegl.h src/plugins/gfxdrivers/powervr/QWSWSEGL/ + fi + + unset CFLAGS CXXFLAGS + + oe_runmake ${EXTRA_ENV} + + # Build target qmake + export QMAKESPEC="${S}/mkspecs/${TARGET_OS}-oe-g++" + cd ${S}/qmake + ${OE_QMAKE_QMAKE} + oe_runmake CC="${CC}" CXX="${CXX}" + cd ${S} +} + +python populate_packages_prepend() { + translation_dir = d.expand('${datadir}/${QT_DIR_NAME}/translations/') + translation_name = d.expand('${QT_BASE_NAME}-translation-%s') + do_split_packages(d, translation_dir, '^(assistant|designer|linguist|qt|qtconfig|qvfb|qtscript)_(.*)\.qm$', translation_name, '${PN} translation for %s', extra_depends='' ) + + phrasebook_dir = d.expand('${datadir}/${QT_DIR_NAME}/phrasebooks/') + phrasebook_name = d.expand('${QT_BASE_NAME}-phrasebook-%s') + + if os.path.exists("%s%s" % (d.expand('${D}'), phrasebook_dir)): + do_split_packages(d, phrasebook_dir, '^(.*)\.qph$', phrasebook_name, '${PN} phrasebook for %s', extra_depends='' ) + else: + bb.note("The path does not exist:", d.expand('${D}'), phrasebook_dir) + + # Package all the plugins and their -dbg version and create a meta package + def qtopia_split(path, name, glob): + """ + Split the package into a normal and -dbg package and then add the + new packages to the meta package. + """ + plugin_dir = d.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/' % path) + if not os.path.exists("%s%s" % (d.expand('${D}'), plugin_dir)): + bb.note("The path does not exist:", d.expand('${D}'), plugin_dir) + return + + plugin_name = d.expand('${QT_BASE_NAME}-plugin-%s-%%s' % name) + dev_packages = [] + dev_hook = lambda file,pkg,b,c,d:dev_packages.append((file,pkg)) + do_split_packages(d, plugin_dir, glob, plugin_name, '${PN} %s for %%s' % name, extra_depends='', hook=dev_hook) + # Create a -dbg package as well + plugin_dir_dbg = d.expand('${libdir}/${QT_DIR_NAME}/plugins/%s/.debug' % path) + packages = d.getVar('PACKAGES', False) + for (file,package) in dev_packages: + packages = "%s %s-dbg" % (packages, package) + file_name = os.path.join(plugin_dir_dbg, os.path.basename(file)) + d.setVar("FILES_%s-dbg" % package, file_name) + d.setVar("DESCRIPTION_%s-dbg" % package, "${PN} %s for %s" % (name, package)) + + d.setVar('PACKAGES', packages) + + qtopia_split('accessible', 'accessible', '^libq(.*)\.so$') + qtopia_split('codecs', 'codec', '^libq(.*)\.so$') + qtopia_split('decorations', 'decoration', '^libqdecoration(.*)\.so$') + qtopia_split('designer', 'designer', '^lib(.*)\.so$') + qtopia_split('gfxdrivers', 'gfxdriver', '^libq(.*)\.so$') + qtopia_split('graphicssystems','graphicssystems', '^libq(.*)\.so$') + qtopia_split('kbddrivers', 'kbddriver', '^libq(.*)kbddriver\.so$') + qtopia_split('mousedrivers', 'mousedriver', '^libq(.*)mousedriver\.so$') + qtopia_split('iconengines', 'iconengine', '^libq(.*)\.so$') + qtopia_split('imageformats', 'imageformat', '^libq(.*)\.so$') + qtopia_split('inputmethods', 'inputmethod', '^libq(.*)\.so$') + qtopia_split('sqldrivers', 'sqldriver', '^libq(.*)\.so$') + qtopia_split('script', 'script', '^libqtscript(.*)\.so$') + qtopia_split('styles', 'style', '^libq(.*)\.so$') + qtopia_split('phonon_backend','phonon-backend','^libphonon_(.*)\.so$') + qtopia_split('bearer', 'bearer', '^libq(.*)bearer\.so$') +} + +do_install() { + oe_runmake install INSTALL_ROOT=${D} + + # Install a proper target version of qmake + rm ${D}/${bindir}/qmake + install -m 0755 bin/qmake2 ${D}${bindir}/qmake + + # fix pkgconfig, libtool and prl files + sed -i -e 's#-L${S}/lib/\?##g' \ + -e 's#-L${STAGING_LIBDIR}/\?##g' \ + -e 's#STAGING_LIBDIR}#libdir}'#g \ + -e 's#-L${libdir}/\?##g' \ + -e s#'$(OE_QMAKE_LIBS_X11)'#"${OE_QMAKE_LIBS_X11}"#g \ + -e 's#" -Wl,-rpath-link,${S}/lib/\?"##g' \ + -e 's#" -Wl,-rpath-link,${libdir}/\?"##g' \ + -e 's#Iin#I${in#g' \ + -e 's#-L\.\./\.\./WebCore/release\s\+-L\.\./\.\./JavaScriptCore/release\s\+-lwebcore##g' \ + -e 's#-ljscore##g' \ + ${D}${libdir}/*.la ${D}${libdir}/*.prl ${D}${libdir}/pkgconfig/*.pc + + # fix pkgconfig files + sed -i -e s#"moc_location=.*$"#"moc_location=${bindir}/moc4"# \ + -e s#"uic_location=.*$"#"uic_location=${bindir}/uic4"# \ + ${D}${libdir}/pkgconfig/*.pc + for name in ${QT_LIB_NAMES}; do + sed -i -e /Requires/s#"${name}"#"${name}${QT_LIBINFIX}"#g ${D}${libdir}/pkgconfig/*.pc + done + + # QT abuses $includedir to point to its headers, which breaks pkgconfig sysroot, so manually fix it up here: + for pc in ${D}${libdir}/pkgconfig/*.pc ; do + sed -i -e "s:prefix}/include/${QT_DIR_NAME}/$(basename $pc .pc):prefix}/include:" \ + -e 's:IP{:I${:g' $pc + done + + #Append an E to the qtdemo file + if [ -n "${QT_LIBINFIX}" ] ; then + [ -f ${D}${bindir}/qtdemo ] && mv ${D}${bindir}/qtdemo ${D}${bindir}/qtdemo${QT_LIBINFIX} + fi + + script="${D}/${datadir}/${QT_DIR_NAME}/environment-setup" + touch $script + echo 'export QT_DIR_NAME=${QT_DIR_NAME}' >> $script + echo 'export QT_LIBINFIX=${QT_LIBINFIX}' >> $script + echo 'export OE_QMAKE_AR=ar' >> $script + echo 'export OE_QMAKE_CC=gcc' >> $script + echo 'export OE_QMAKE_CXX=g++' >> $script + echo 'export OE_QMAKE_LINK=g++' >> $script + echo 'export OE_QMAKE_LIBDIR_QT=${libdir}' >> $script + echo 'export OE_QMAKE_INCDIR_QT=${includedir}/${QT_DIR_NAME}' >> $script + echo 'export OE_QMAKE_MOC=${bindir}/moc' >> $script + echo 'export OE_QMAKE_UIC=${bindir}/uic' >> $script + echo 'export OE_QMAKE_UIC3=${bindir}/uic3' >> $script + echo 'export OE_QMAKE_RCC=${bindir}/rcc' >> $script + echo 'export OE_QMAKE_QDBUSCPP2XML=${bindir}/qdbuscpp2xml' >> $script + echo 'export OE_QMAKE_QDBUSXML2CPP=${bindir}/qdbusxml2cpp' >> $script + echo 'export OE_QMAKE_QT_CONFIG=${datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script + echo 'export QMAKESPEC=${datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script + chmod 0755 $script +} diff --git a/yocto-poky/meta/recipes-qt/qt4/qt4_arch.inc b/yocto-poky/meta/recipes-qt/qt4/qt4_arch.inc new file mode 100644 index 000000000..e94c2847b --- /dev/null +++ b/yocto-poky/meta/recipes-qt/qt4/qt4_arch.inc @@ -0,0 +1,22 @@ +inherit siteinfo + +ARM_INSTRUCTION_SET = "arm" + +set_arch() { + case ${TARGET_ARCH} in + aarch64*) QT_ARCH=aarch64 ;; + arm*) QT_ARCH=arm ;; + i*86*) QT_ARCH=i386 ;; + mips*) QT_ARCH=mips ;; + powerpc*) QT_ARCH=powerpc ;; + x86_64*) QT_ARCH=x86_64 ;; + esac +} + +set_endian() { + if [ ${SITEINFO_ENDIANNESS} = "le" ] ; then + QT_ENDIAN="-little-endian" + elif [ ${SITEINFO_ENDIANNESS} = "be" ] ; then + QT_ENDIAN="-big-endian" + fi +} |