[oe,meta-oe] various: delete qt4 recipes that break parsing due to missing classes

Message ID 1452496246-18628-1-git-send-email-koen.kooi@linaro.org
State New
Headers show

Commit Message

Koen Kooi Jan. 11, 2016, 7:10 a.m.
Signed-off-by: Koen Kooi <koen.kooi@linaro.org>

---
 .../recipes-devtools/python/python-pyqt_4.11.3.bb  |   59 -
 meta-oe/recipes-extended/sip/sip_4.16.4.bb         |   54 -
 .../recipes-navigation/monav/monav/monav.desktop   |   10 -
 meta-oe/recipes-navigation/monav/monav/monav.png   |  Bin 21543 -> 0 bytes
 meta-oe/recipes-navigation/monav/monav_0.3.bb      |   37 -
 meta-oe/recipes-qt/fingerterm/fingerterm_1.0.2.bb  |   43 -
 meta-oe/recipes-qt/libconnman-qt/libconnman-qt.inc |   53 -
 .../recipes-qt/libconnman-qt/libconnman-qt_git.bb  |    3 -
 ...n.pro-fix-build-with-custom-target-suffix.patch |   42 -
 .../recipes-qt/libconnman-qt/libconnman-qte_git.bb |    5 -
 meta-oe/recipes-qt/libqofono/libqofono_0.4.bb      |   84 -
 .../qcanobserver/qcanobserver-socketcan_svn.bb     |   31 -
 ...erinterface.cpp-add-sys-socket.h-as-inclu.patch |   41 -
 .../0002-qconsole-writethread-gcc-4.5-fixes.patch  |   40 -
 .../qcanobserver/qcanobserver/candemo.xml          |   40 -
 .../recipes-qt/qcanobserver/qcanobserver_svn.bb    |   43 -
 meta-oe/recipes-qt/qconnman/qconnman-e_git.bb      |   12 -
 meta-oe/recipes-qt/qconnman/qconnman.inc           |   15 -
 meta-oe/recipes-qt/qconnman/qconnman_git.bb        |   10 -
 .../qextserialport/qextserialport_1.2rc.bb         |   54 -
 .../qt-creator/fix.missing.cpuid.h.patch           |  384 --
 .../qt-creator/qbs_transformer_product.patch       |   93 -
 meta-oe/recipes-qt/qt-creator/qt-creator_2.8.1.bb  |   54 -
 ...embedded-usage-doesn-t-work-outside-of-Qt.patch |   73 -
 ...stvideoconnector-fixed-buffers-allocation.patch |   34 -
 ...nnecessary-rpaths-from-qml_device-example.patch |   28 -
 .../fix-compile-error-no-bluez.patch               |  338 --
 .../fix_metaobjectbuilder_build_err.patch          | 4707 --------------------
 .../qt-mobility/qt-mobility-1.2.0/gcc-scope.patch  |   48 -
 .../qt-mobility-1.2.0/qt-mobility-configure.patch  |   17 -
 .../qt-mobility-1.2.0/qt-mobility-no-opengl.patch  |   38 -
 .../qt-mobility-1.2.0/qt-mobility-no-xvideo.patch  |   26 -
 .../qt-mobility/qt-mobility-embedded_1.2.0.bb      |   10 -
 .../qt-mobility/qt-mobility-x11_1.2.0.bb           |   10 -
 .../recipes-qt/qt-mobility/qt-mobility_1.2.0.inc   |  121 -
 .../qtserialport/qtserialport-e_5.1.0.bb           |    5 -
 meta-oe/recipes-qt/qtserialport/qtserialport.inc   |   48 -
 .../qwt/files/qwt6-fix-linking-with-ld-gold.patch  |   34 -
 meta-oe/recipes-qt/qwt/files/qwt6.patch            |   86 -
 meta-oe/recipes-qt/qwt/qwt-e_6.0.1.bb              |   14 -
 meta-oe/recipes-qt/qwt/qwt.inc                     |   40 -
 meta-oe/recipes-qt/qwt/qwt_6.0.1.bb                |   10 -
 .../recipes-support/maliit/maliit-framework_git.bb |  101 -
 .../recipes-support/maliit/maliit-plugins_git.bb   |   35 -
 44 files changed, 7030 deletions(-)
 delete mode 100644 meta-oe/recipes-devtools/python/python-pyqt_4.11.3.bb
 delete mode 100644 meta-oe/recipes-extended/sip/sip_4.16.4.bb
 delete mode 100644 meta-oe/recipes-navigation/monav/monav/monav.desktop
 delete mode 100644 meta-oe/recipes-navigation/monav/monav/monav.png
 delete mode 100644 meta-oe/recipes-navigation/monav/monav_0.3.bb
 delete mode 100644 meta-oe/recipes-qt/fingerterm/fingerterm_1.0.2.bb
 delete mode 100644 meta-oe/recipes-qt/libconnman-qt/libconnman-qt.inc
 delete mode 100644 meta-oe/recipes-qt/libconnman-qt/libconnman-qt_git.bb
 delete mode 100644 meta-oe/recipes-qt/libconnman-qt/libconnman-qte/plugin.pro-fix-build-with-custom-target-suffix.patch
 delete mode 100644 meta-oe/recipes-qt/libconnman-qt/libconnman-qte_git.bb
 delete mode 100644 meta-oe/recipes-qt/libqofono/libqofono_0.4.bb
 delete mode 100644 meta-oe/recipes-qt/qcanobserver/qcanobserver-socketcan_svn.bb
 delete mode 100644 meta-oe/recipes-qt/qcanobserver/qcanobserver/0001-messagebufferinterface.cpp-add-sys-socket.h-as-inclu.patch
 delete mode 100644 meta-oe/recipes-qt/qcanobserver/qcanobserver/0002-qconsole-writethread-gcc-4.5-fixes.patch
 delete mode 100755 meta-oe/recipes-qt/qcanobserver/qcanobserver/candemo.xml
 delete mode 100644 meta-oe/recipes-qt/qcanobserver/qcanobserver_svn.bb
 delete mode 100644 meta-oe/recipes-qt/qconnman/qconnman-e_git.bb
 delete mode 100644 meta-oe/recipes-qt/qconnman/qconnman.inc
 delete mode 100644 meta-oe/recipes-qt/qconnman/qconnman_git.bb
 delete mode 100644 meta-oe/recipes-qt/qextserialport/qextserialport_1.2rc.bb
 delete mode 100644 meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch
 delete mode 100644 meta-oe/recipes-qt/qt-creator/qt-creator/qbs_transformer_product.patch
 delete mode 100644 meta-oe/recipes-qt/qt-creator/qt-creator_2.8.1.bb
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-fix-embedded-usage-doesn-t-work-outside-of-Qt.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-gstvideoconnector-fixed-buffers-allocation.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0002-Remove-unnecessary-rpaths-from-qml_device-example.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix-compile-error-no-bluez.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix_metaobjectbuilder_build_err.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/gcc-scope.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-configure.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-opengl.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-xvideo.patch
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-embedded_1.2.0.bb
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility-x11_1.2.0.bb
 delete mode 100644 meta-oe/recipes-qt/qt-mobility/qt-mobility_1.2.0.inc
 delete mode 100644 meta-oe/recipes-qt/qtserialport/qtserialport-e_5.1.0.bb
 delete mode 100644 meta-oe/recipes-qt/qtserialport/qtserialport.inc
 delete mode 100644 meta-oe/recipes-qt/qwt/files/qwt6-fix-linking-with-ld-gold.patch
 delete mode 100644 meta-oe/recipes-qt/qwt/files/qwt6.patch
 delete mode 100644 meta-oe/recipes-qt/qwt/qwt-e_6.0.1.bb
 delete mode 100644 meta-oe/recipes-qt/qwt/qwt.inc
 delete mode 100644 meta-oe/recipes-qt/qwt/qwt_6.0.1.bb
 delete mode 100644 meta-oe/recipes-support/maliit/maliit-framework_git.bb
 delete mode 100644 meta-oe/recipes-support/maliit/maliit-plugins_git.bb

-- 
2.4.3

-- 
_______________________________________________
Openembedded-devel mailing list
Openembedded-devel@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-devel

Comments

Koen Kooi Jan. 11, 2016, 8:51 a.m. | #1
On 11 January 2016 at 09:08, Andreas Müller
<schnitzeltony@googlemail.com> wrote:
> On Mon, Jan 11, 2016 at 8:10 AM, Koen Kooi <koen.kooi@linaro.org> wrote:
>> Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
>> ---
> double efforts? [1]

Looks like it, but [1] doesn't show up in
http://patchwork.openembedded.org/project/oe/list/ :(

>
> [1] http://lists.openembedded.org/pipermail/openembedded-devel/2016-January/105406.html
>
> Andreas
Koen Kooi Jan. 21, 2016, 7:26 a.m. | #2
ping! Can one of the two patches to unbreak parsing go in before the weekend?

On 11 January 2016 at 09:51, Koen Kooi <koen.kooi@linaro.org> wrote:
> On 11 January 2016 at 09:08, Andreas Müller
> <schnitzeltony@googlemail.com> wrote:
>> On Mon, Jan 11, 2016 at 8:10 AM, Koen Kooi <koen.kooi@linaro.org> wrote:
>>> Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
>>> ---
>> double efforts? [1]
>
> Looks like it, but [1] doesn't show up in
> http://patchwork.openembedded.org/project/oe/list/ :(
>
>>
>> [1] http://lists.openembedded.org/pipermail/openembedded-devel/2016-January/105406.html
>>
>> Andreas
>
>
>
> --
> Koen Kooi
>
> Builds and Baselines | Release Manager
> Linaro.org | Open source software for ARM SoCs
Koen Kooi Jan. 21, 2016, 9:42 a.m. | #3
On 21 January 2016 at 10:31, Martin Jansa <martin.jansa@gmail.com> wrote:
> http://git.openembedded.org/meta-openembedded/commit/?id=2bd11da4b50f401c9c49975aeedaaafa6a59d08b
> was merged week ago

Ah, I see what happened:

[koen@thinkpad meta-openembedded]$ git show -M | diffstat
 qcanobserver/qcanobserver/0001-messagebufferinterface.cpp-add-sys-socket.h-as-inclu.patch
|   41 -
 qcanobserver/qcanobserver/0002-qconsole-writethread-gcc-4.5-fixes.patch
                  |   40 -
 qcanobserver/qcanobserver/candemo.xml
                    |   40 -
 qt-creator/qt-creator/fix.missing.cpuid.h.patch
                    |  384 ----------
 qt-creator/qt-creator/qbs_transformer_product.patch
                    |   93 --
 qtserialport/qtserialport.inc
                    |   48 -
 6 files changed, 646 deletions(-)

My version was rebased and only drops leftovers. I only noticed that
my patch was still there, I didn't look at the diffstat.

All is good :)

>
> On Thu, Jan 21, 2016 at 8:26 AM, Koen Kooi <koen.kooi@linaro.org> wrote:
>>
>> ping! Can one of the two patches to unbreak parsing go in before the
>> weekend?
>>
>> On 11 January 2016 at 09:51, Koen Kooi <koen.kooi@linaro.org> wrote:
>> > On 11 January 2016 at 09:08, Andreas Müller
>> > <schnitzeltony@googlemail.com> wrote:
>> >> On Mon, Jan 11, 2016 at 8:10 AM, Koen Kooi <koen.kooi@linaro.org>
>> >> wrote:
>> >>> Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
>> >>> ---
>> >> double efforts? [1]
>> >
>> > Looks like it, but [1] doesn't show up in
>> > http://patchwork.openembedded.org/project/oe/list/ :(
>> >
>> >>
>> >> [1]
>> >> http://lists.openembedded.org/pipermail/openembedded-devel/2016-January/105406.html
>> >>
>> >> Andreas
>> >
>> >
>> >
>> > --
>> > Koen Kooi
>> >
>> > Builds and Baselines | Release Manager
>> > Linaro.org | Open source software for ARM SoCs
>>
>>
>>
>> --
>> Koen Kooi
>>
>> Builds and Baselines | Release Manager
>> Linaro.org | Open source software for ARM SoCs
>
>

Patch

diff --git a/meta-oe/recipes-devtools/python/python-pyqt_4.11.3.bb b/meta-oe/recipes-devtools/python/python-pyqt_4.11.3.bb
deleted file mode 100644
index cfddee8..0000000
--- a/meta-oe/recipes-devtools/python/python-pyqt_4.11.3.bb
+++ /dev/null
@@ -1,59 +0,0 @@ 
-SUMMARY = "Python Qt4 Bindings"
-AUTHOR = "Phil Thomson @ riverbank.co.uk"
-HOMEPAGE = "http://riverbankcomputing.co.uk"
-SECTION = "devel/python"
-LICENSE = "GPLv2 & GPLv3 & GPL_EXCEPTION"
-LIC_FILES_CHKSUM = "\
-    file://GPL_EXCEPTION.TXT;md5=b73b0be471db679533dc94781c14af58 \
-    file://GPL_EXCEPTION_ADDENDUM.TXT;md5=c1e04ec2aa0911061005a801abf81e40 \
-    file://OPENSOURCE-NOTICE.TXT;md5=6ad9123620cc04a22c394753ad4767d7 \
-    file://LICENSE.GPL2;md5=577ff65f6653562af318bfc3944b1f20 \
-    file://LICENSE.GPL3;md5=feee51612c3c1191a1d5f41156fa2c75 \
-"
-DEPENDS = "sip sip-native qt4-x11-free python"
-
-SRC_URI = "\
-    ${SOURCEFORGE_MIRROR}/pyqt/PyQt-x11-gpl-${PV}.tar.gz \
-"
-SRC_URI[md5sum] = "997c3e443165a89a559e0d96b061bf70"
-SRC_URI[sha256sum] = "853780dcdbe2e6ba785d703d059b096e1fc49369d3e8d41a060be874b8745686"
-
-S = "${WORKDIR}/PyQt-x11-gpl-${PV}"
-
-PARALLEL_MAKE = ""
-
-inherit qmake2 pythonnative python-dir distro_features_check
-# depends on qt4-x11-free
-REQUIRED_DISTRO_FEATURES = "x11"
-
-DISABLED_FEATURES = "PyQt_Desktop_OpenGL PyQt_Accessibility PyQt_SessionManager"
-
-DISABLED_FEATURES_append_arm = " PyQt_qreal_double"
-
-PYQT_MODULES = "QtCore QtGui QtDeclarative QtNetwork QtSvg QtWebKit"
-PYQT_MODULES_aarch64 = "QtCore QtGui QtDeclarative QtNetwork QtSvg"
-
-do_configure() {
-    echo "py_platform = linux" > pyqt.cfg
-    echo "py_inc_dir = %(sysroot)/$includedir/python%(py_major).%(py_minor)" >> pyqt.cfg
-    echo "py_pylib_dir = %(sysroot)/${libdir}/python%(py_major).%(py_minor)" >> pyqt.cfg
-    echo "py_pylib_lib = python%(py_major).%(py_minor)mu" >> pyqt.cfg
-    echo "pyqt_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> pyqt.cfg
-    echo "pyqt_bin_dir = ${D}/${bindir}" >> pyqt.cfg
-    echo "pyqt_sip_dir = ${D}/${datadir}/sip/PyQt4" >> pyqt.cfg
-    echo "pyuic_interpreter = ${D}/${bindir}/python%(py_major).%(py_minor)" >> pyqt.cfg
-    echo "pyqt_disabled_features = ${DISABLED_FEATURES}" >> pyqt.cfg
-    echo "qt_shared = True" >> pyqt.cfg
-    echo "[Qt 4.8]" >> pyqt.cfg
-    echo "pyqt_modules = ${PYQT_MODULES}" >> pyqt.cfg
-    echo yes | python configure-ng.py --verbose --qmake  ${STAGING_BINDIR_NATIVE}/qmake2 --configuration pyqt.cfg --sysroot ${STAGING_DIR_HOST}
-}
-do_install() {
-     oe_runmake install
-}
-
-RDEPENDS_${PN} = "python-core python-sip"
-
-FILES_${PN} += "${libdir}/${PYTHON_DIR}/site-packages ${datadir}/sip/PyQt4/"
-FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/*/.debug/"
-
diff --git a/meta-oe/recipes-extended/sip/sip_4.16.4.bb b/meta-oe/recipes-extended/sip/sip_4.16.4.bb
deleted file mode 100644
index 032d125..0000000
--- a/meta-oe/recipes-extended/sip/sip_4.16.4.bb
+++ /dev/null
@@ -1,54 +0,0 @@ 
-SUMMARY = "SIP is a C++/Python Wrapper Generator"
-AUTHOR = "Phil Thompson"
-HOMEPAGE = "http://www.riverbankcomputing.co.uk/sip"
-SECTION = "devel"
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://LICENSE-GPL2;md5=e91355d8a6f8bd8f7c699d62863c7303"
-DEPENDS_class-target = "qt4-x11-free python"
-
-# riverbankcomputing is upstream, but keeps only latest version, sf usually have few older
-#SRC_URI = "http://www.riverbankcomputing.com/static/Downloads/sip4/sip-${PV}.tar.gz"
-SRC_URI = "${SOURCEFORGE_MIRROR}/project/pyqt/sip/sip-${PV}/sip-${PV}.tar.gz"
-SRC_URI[md5sum] = "a9840670a064dbf8f63a8f653776fec9"
-SRC_URI[sha256sum] = "ceda443fc5e129e67a067e2cd7b73ff037f8b10b50e407baa2b1d9f2199d57f5"
-
-BBCLASSEXTEND = "native"
-
-PACKAGES += "python-sip"
-
-inherit qmake2 python-dir pythonnative distro_features_check
-# depends on qt4-x11-free
-REQUIRED_DISTRO_FEATURES = "x11"
-
-EXTRA_QMAKEVARS_POST += "CONFIG=console"
-
-export BUILD_SYS
-export HOST_SYS
-export STAGING_LIBDIR
-export STAGING_INCDIR
-
-do_configure_prepend_class-target() {
-    echo "py_platform = linux" > sip.cfg
-    echo "py_inc_dir = %(sysroot)/${includedir}/python%(py_major).%(py_minor)" >> sip.cfg
-    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
-    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
-    echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
-    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
-    python configure.py --use-qmake --configuration sip.cfg --sysroot ${STAGING_DIR_HOST}
-}
-do_configure_prepend_class-native() {
-    echo "py_platform = linux" > sip.cfg
-    echo "py_inc_dir = ${includedir}/python%(py_major).%(py_minor)" >> sip.cfg
-    echo "sip_bin_dir = ${D}/${bindir}" >> sip.cfg
-    echo "sip_inc_dir = ${D}/${includedir}" >> sip.cfg
-    echo "sip_module_dir = ${D}/${libdir}/python%(py_major).%(py_minor)/site-packages" >> sip.cfg
-    echo "sip_sip_dir = ${D}/${datadir}/sip" >> sip.cfg
-    python configure.py --use-qmake --configuration sip.cfg --sysroot ${STAGING_DIR_NATIVE}
-}
-do_install() {
-    oe_runmake install
-}
-
-FILES_python-${BPN} = "${libdir}/${PYTHON_DIR}/site-packages/"
-FILES_${PN}-dbg += "${libdir}/${PYTHON_DIR}/site-packages/.debug"
-
diff --git a/meta-oe/recipes-navigation/monav/monav/monav.desktop b/meta-oe/recipes-navigation/monav/monav/monav.desktop
deleted file mode 100644
index 5e86113..0000000
--- a/meta-oe/recipes-navigation/monav/monav/monav.desktop
+++ /dev/null
@@ -1,10 +0,0 @@ 
-[Desktop Entry]
-Name=MoNav
-Exec=monav
-Icon=monav
-Terminal=false
-Type=Application
-Categories=Utility;Geography;
-X-MB-SingleInstance=true
-StartupNotify=true
-Comment=Fast navigation system featuring exact routing.
diff --git a/meta-oe/recipes-navigation/monav/monav/monav.png b/meta-oe/recipes-navigation/monav/monav/monav.png
deleted file mode 100644
index 75b5a79623bf040f1ddfcde3d005dc7fd6de1ed9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 21543
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
aGa<9dQ(UQfcR;8oaKrGHL9w1)=zjo{-+O}q

diff --git a/meta-oe/recipes-navigation/monav/monav_0.3.bb b/meta-oe/recipes-navigation/monav/monav_0.3.bb
deleted file mode 100644
index 982d682..0000000
--- a/meta-oe/recipes-navigation/monav/monav_0.3.bb
+++ /dev/null
@@ -1,37 +0,0 @@ 
-DESCRIPTION = "MoNav is a fast navigation system featuring exact routing with OpenStreetMap data."
-HOMEPAGE = "http://code.google.com/p/monav"
-SECTION = "x11/applications"
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://misc/license_template_christian;md5=d99c9b3bafdde80adee296762376348d"
-
-DEPENDS = "qt-mobility-x11"
-PR = "r1"
-
-SRC_URI = "http://monav.googlecode.com/files/${BPN}-${PV}.tar.gz \
-           file://monav.png \
-           file://monav.desktop"
-
-SRC_URI[md5sum] = "d048ccef8c6a21e8656aa4af3fcb8329"
-SRC_URI[sha256sum] = "5a3bf9e9f7368b81ba8e2f755960082fc42a2e2c78f9de645f99ba293c77ee7f"
-
-inherit qmake2 qt4x11
-
-EXTRA_QMAKEVARS_PRE="CONFIG+="release""
-QMAKE_PROFILES="monavclient.pro"
-
-do_install_append() {
-    install -d ${D}${datadir}/monav
-    install -d ${D}${datadir}/monav/images
-    cp -a ${S}/images/* ${D}${datadir}/monav/images
-
-    install -d ${D}${datadir}/icons
-    install -m 0644 ${WORKDIR}/monav.png ${D}${datadir}/icons
-
-    install -d ${D}${bindir}
-    install -m 0755 ${S}/bin/monav ${D}${bindir}/monav
-
-    install -d ${D}/${datadir}/applications
-    install -m 0644 ${WORKDIR}/monav.desktop ${D}/${datadir}/applications
-}
-
-FILES_${PN} += "${bindir}/monav ${datadir}/icons/monav.png"
diff --git a/meta-oe/recipes-qt/fingerterm/fingerterm_1.0.2.bb b/meta-oe/recipes-qt/fingerterm/fingerterm_1.0.2.bb
deleted file mode 100644
index 167d141..0000000
--- a/meta-oe/recipes-qt/fingerterm/fingerterm_1.0.2.bb
+++ /dev/null
@@ -1,43 +0,0 @@ 
-DESCRIPTION = "A terminal emulator for Harmattan (Nokia N9/N950) with a custom \
-virtual keyboard and usability-enhancing features such as URL grabber, pan \
-gestures and customizable shortcut menu. Designed especially to be used with \
-screen and irssi."
-HOMEPAGE = "http://hqh.unlink.org/harmattan"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SECTION = "qt/app"
-
-
-inherit qt4x11 pkgconfig
-
-SRC_URI = " \
-    http://hqh.unlink.org/harmattan/fingerterm-${PV}.tar.gz \
-"
-
-SRC_URI[md5sum] = "d53b0f463c025583cd52accf95715448"
-SRC_URI[sha256sum] = "c21a07cc411d09739bd7fa248eba2bf96427b3f032382a044b6674dd82d95150"
-
-S = "${WORKDIR}/${BPN}"
-
-FILES_${PN} = " \
-    ${bindir}/${BPN} \
-    ${datadir}/applications/${BPN}.desktop \
-    ${datadir}/pixmaps/${BPN}.png \
-"
-
-do_install() {
-    install -d ${D}${bindir}
-    install -m 0755 ${S}/${BPN} ${D}${bindir}
-
-    sed -i -e '/Exec.*/d' fingerterm.desktop
-    sed -i -e '/Icon.*/d' fingerterm.desktop
-
-    echo 'Exec=${bindir}/${BPN}' >> fingerterm.desktop
-    echo 'Icon=${BPN}' >> fingerterm.desktop
-
-    install -d ${D}${datadir}/applications
-    install -m 0644 ${S}/${BPN}.desktop ${D}${datadir}/applications
-
-    install -d ${D}${datadir}/pixmaps
-    install -m 0644 ${S}/${BPN}.png ${D}${datadir}/pixmaps
-}
diff --git a/meta-oe/recipes-qt/libconnman-qt/libconnman-qt.inc b/meta-oe/recipes-qt/libconnman-qt/libconnman-qt.inc
deleted file mode 100644
index 859c854..0000000
--- a/meta-oe/recipes-qt/libconnman-qt/libconnman-qt.inc
+++ /dev/null
@@ -1,53 +0,0 @@ 
-DESCRIPTION = "Qt Library for ConnMan"
-HOMEPAGE = "https://github.com/nemomobile/libconnman-qt"
-SECTION = "qt/lib"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://libconnman-qt/clockmodel.h;endline=8;md5=ea9f724050803f15d2d900ce3c5dac88"
-SRCREV = "80ac184d859ea90c026403f5a520644945a5081a"
-PV = "1.0.50+git${SRCPV}"
-
-SRC_URI = "git://github.com/nemomobile/libconnman-qt.git;branch=master"
-
-S = "${WORKDIR}/git"
-
-inherit pkgconfig
-
-EXTRA_QMAKEVARS_PRE += "CONFIG+=notests TARGET_SUFFIX=${QT_DIR_NAME}"
-
-do_configure_prepend() {
-    # Hack *.pro variables
-    find ${S}/plugin/*.pro -exec sed -i -e 's,$$\[QT_INSTALL_IMPORTS\],${QT_IMPORTS_DIR},g' '{}' ';'
-    find ${S} -iname '*.pro' -exec sed -i -e 's,$$INSTALL_ROOT$$PREFIX/lib,$$INSTALL_ROOT$$PREFIX/${baselib},g' '{}' ';'
-}
-do_install() {
-    oe_runmake install INSTALL_ROOT=${D}
-}
-
-PACKAGES =+ "${PN}-plugin ${PN}-plugin-dbg"
-
-RDEPENDS_${PN} = "connman"
-RDEPENDS_${PN}-plugin = "${PN}"
-
-RRECOMMENDS_${PN} = "${PN}-plugin"
-
-FILES_${PN} = " \
-    ${libdir}/libconnman-qt*${SOLIBS} \
-"
-FILES_${PN}-dev = " \
-    ${includedir}/connman-qt*/* \
-    ${libdir}/libconnman-qt*${SOLIBSDEV} \
-    ${libdir}/libconnman-qt*.prl \
-    ${libdir}/pkgconfig/connman-qt*.pc \
-"
-FILES_${PN}-plugin = " \
-    ${PLUGINS_TARGET}/qmldir \
-    ${PLUGINS_TARGET}/lib*.so \
-"
-FILES_${PN}-plugin-dbg = " \
-    ${PLUGINS_TARGET}/.debug \
-    ${PLUGINS_TARGET}/.debug/* \
-"
-
-QT_IMPORTS_DIR = "${libdir}/${QT_DIR_NAME}/imports"
-# the plugin target needs to be the same as 'target.path' and 'qmldir.path' in ${S}/plugin/plugin.pro
-PLUGINS_TARGET = "${QT_IMPORTS_DIR}/MeeGo/Connman"
diff --git a/meta-oe/recipes-qt/libconnman-qt/libconnman-qt_git.bb b/meta-oe/recipes-qt/libconnman-qt/libconnman-qt_git.bb
deleted file mode 100644
index 8d8822c..0000000
--- a/meta-oe/recipes-qt/libconnman-qt/libconnman-qt_git.bb
+++ /dev/null
@@ -1,3 +0,0 @@ 
-inherit qt4x11
-
-require libconnman-qt.inc
diff --git a/meta-oe/recipes-qt/libconnman-qt/libconnman-qte/plugin.pro-fix-build-with-custom-target-suffix.patch b/meta-oe/recipes-qt/libconnman-qt/libconnman-qte/plugin.pro-fix-build-with-custom-target-suffix.patch
deleted file mode 100644
index 3ff68c8..0000000
--- a/meta-oe/recipes-qt/libconnman-qt/libconnman-qte/plugin.pro-fix-build-with-custom-target-suffix.patch
+++ /dev/null
@@ -1,42 +0,0 @@ 
-Upstream-Status: Submitted [https://github.com/nemomobile/libconnman-qt/pull/105]
-
-From 48da520b971af69d22e691a0ef6ff1c3ce901f0d Mon Sep 17 00:00:00 2001
-From: Andreas Oberritter <obi@opendreambox.org>
-Date: Tue, 11 Mar 2014 21:55:37 +0100
-Subject: [PATCH] plugin.pro: fix build with custom target suffix
-
-This went unnoticed because of a previously installed libconnman-qt4.
-
-Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
----
- plugin/plugin.pro | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/plugin/plugin.pro b/plugin/plugin.pro
-index c9534cf..9cdaa63 100644
---- a/plugin/plugin.pro
-+++ b/plugin/plugin.pro
-@@ -8,14 +8,18 @@ INCLUDEPATH += ../libconnman-qt
- LIBS += -L../libconnman-qt
- QT -= gui
- 
-+isEmpty(TARGET_SUFFIX) {
-+    TARGET_SUFFIX = qt$$QT_MAJOR_VERSION
-+}
-+
-+LIBS += -l$$qtLibraryTarget(connman-$$TARGET_SUFFIX)
-+
- equals(QT_MAJOR_VERSION, 4): {
-     QT += declarative
--    LIBS += -lconnman-qt4
- }
- 
- equals(QT_MAJOR_VERSION, 5): {
-     QT += qml
--    LIBS += -lconnman-qt5
-     OTHER_FILES += plugin.json qmldirs
- }
- 
--- 
-1.8.3.2
-
diff --git a/meta-oe/recipes-qt/libconnman-qt/libconnman-qte_git.bb b/meta-oe/recipes-qt/libconnman-qt/libconnman-qte_git.bb
deleted file mode 100644
index 9d44957..0000000
--- a/meta-oe/recipes-qt/libconnman-qt/libconnman-qte_git.bb
+++ /dev/null
@@ -1,5 +0,0 @@ 
-inherit qt4e
-
-require libconnman-qt.inc
-
-SRC_URI += "file://plugin.pro-fix-build-with-custom-target-suffix.patch"
diff --git a/meta-oe/recipes-qt/libqofono/libqofono_0.4.bb b/meta-oe/recipes-qt/libqofono/libqofono_0.4.bb
deleted file mode 100644
index 9349372..0000000
--- a/meta-oe/recipes-qt/libqofono/libqofono_0.4.bb
+++ /dev/null
@@ -1,84 +0,0 @@ 
-SUMMARY = "Qt Library for oFono"
-HOMEPAGE = "https://github.com/nemomobile/libqofono"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://README;endline=3;md5=8a15bce3921d1238d9a9f23828612947"
-
-SECTION = "qt/lib"
-
-BRANCH = "master"
-PV = "0.4+gitr${SRCPV}"
-SRCREV = "05055a4b4a579facd007a0a128696030228e0b88"
-
-inherit qt4x11 pkgconfig
-
-RDEPENDS_${PN} = "ofono"
-RDEPENDS_${PN}-plugin = "${PN}"
-
-PACKAGES =+ "${PN}-plugin ${PN}-plugin-dbg ${PN}-test"
-RRECOMMENDS_${PN} = "${PN}-plugin"
-
-SRC_URI = " \
-    git://github.com/nemomobile/${BPN}.git;branch=${BRANCH} \
-"
-S = "${WORKDIR}/git"
-
-QT_IMPORTS_DIR = "${libdir}/qt4/imports"
-PLUGINS_TARGET = "${QT_IMPORTS_DIR}/MeeGo/QOfono"
-
-FILES_${PN} = " \
-    ${libdir}/libqofono${SOLIBS} \
-"
-
-FILES_${PN}-dev = " \
-    ${includedir}/qofono/* \
-    ${includedir}/qofono/dbus/* \
-    ${libdir}/libqofono${SOLIBSDEV} \
-    ${libdir}/libqofono.prl \
-    ${libdir}/pkgconfig/qofono.pc \
-    ${datadir}/qt4/mkspecs/features/qofono.prf \
-"
-
-FILES_${PN}-plugin = " \
-    ${PLUGINS_TARGET}/qmldir \
-    ${PLUGINS_TARGET}/lib*.so \
-"
-
-FILES_${PN}-plugin-dbg = " \
-    ${PLUGINS_TARGET}/.debug \
-"
-
-FILES_${PN}-test = " \
-    /opt/ofonotest/bin/ofonotest \
-    /opt/ofonotest/qml/ofonotest \
-    ${libdir}/libqofono/tests/tst_qofonotest \
-"
-
-FILES_${PN}-dbg += " \
-    /opt/ofonotest/bin/.debug \
-    ${libdir}/libqofono/tests/.debug \
-"
-
-EXTRA_QMAKEVARS_PRE = " \
-    PREFIX=${prefix} \
-"
-
-do_configure_prepend() {
-    # Hack *.pro variables
-    find . -iname '*.pro' -exec sed -i -e 's,$$\[QT_INSTALL_IMPORTS\],${QT_IMPORTS_DIR},g' '{}' ';'
-    find . -iname '*.pro' -exec sed -i -e 's,$$\[QT_INSTALL_PREFIX\],$$INSTALL_ROOT$$PREFIX,g' '{}' ';'
-    find . -iname '*.pro' -exec sed -i -e 's,$$INSTALL_ROOT$$PREFIX/lib,$$INSTALL_ROOT$$PREFIX/${baselib},g' '{}' ';'
-}
-
-do_install() {
-    export INSTALL_ROOT=${D}
-    oe_runmake install
-
-    cd ${D}/${datadir}/qt4/mkspecs/features
-
-    sed -i -e '/DEPENDPATH.*/d; /INCLUDEPATH.*/d; /LIBS.*/d' ${D}/${datadir}/qt4/mkspecs/features/qofono.prf
-
-    # to make it work with the SDK
-    echo 'DEPENDPATH += $(OE_QMAKE_INCDIR_QT)/../qofono' >> ${D}/${datadir}/qt4/mkspecs/features/qofono.prf
-    echo 'INCLUDEPATH += $(OE_QMAKE_INCDIR_QT)/../qofono' >> ${D}/${datadir}/qt4/mkspecs/features/qofono.prf
-    echo 'LIBS += -lqofono' >> ${D}/${datadir}/qt4/mkspecs/features/qofono.prf
-}
diff --git a/meta-oe/recipes-qt/qcanobserver/qcanobserver-socketcan_svn.bb b/meta-oe/recipes-qt/qcanobserver/qcanobserver-socketcan_svn.bb
deleted file mode 100644
index 19ea1ea..0000000
--- a/meta-oe/recipes-qt/qcanobserver/qcanobserver-socketcan_svn.bb
+++ /dev/null
@@ -1,31 +0,0 @@ 
-SUMMARY = "The Linux CAN Sniffer - SocketCAN driver"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://../../../modeltest/LICENSE.GPL;md5=34337af480a8c452bfafe22a78fa20cb"
-
-inherit qt4x11
-
-DEPENDS += "qwt libsocketcan"
-
-PV = "0.5+svnr${SRCPV}"
-SRCREV = "48"
-SRC_URI = "svn://qcanobserver.svn.sourceforge.net/svnroot;module=qcanobserver;protocol=https"
-
-S = "${WORKDIR}/qcanobserver/DeviceLib/linux/SocketCAN"
-
-CXXFLAGS += " -DPF_CAN=29  -DAF_CAN=PF_CAN"
-
-do_configure_prepend() {
-    sed -i s:/usr/include/qwt5/:${STAGING_INCDIR}:g *.pro
-}
-
-do_install() {
-    install -d ${D}${datadir}/qcanobserver/lib
-
-    install -m 0755 ${S}/lib* ${D}${datadir}/qcanobserver/lib/
-}
-
-FILES_${PN} += "${datadir}/qcanobserver/lib"
-FILES_${PN}-dbg += "${datadir}/qcanobserver/lib/.debug"
-
-PNBLACKLIST[qcanobserver-socketcan] ?= "depends on qwt-5 APIs"
diff --git a/meta-oe/recipes-qt/qcanobserver/qcanobserver/0001-messagebufferinterface.cpp-add-sys-socket.h-as-inclu.patch b/meta-oe/recipes-qt/qcanobserver/qcanobserver/0001-messagebufferinterface.cpp-add-sys-socket.h-as-inclu.patch
deleted file mode 100644
index 1b3da3b..0000000
--- a/meta-oe/recipes-qt/qcanobserver/qcanobserver/0001-messagebufferinterface.cpp-add-sys-socket.h-as-inclu.patch
+++ /dev/null
@@ -1,41 +0,0 @@ 
-From ebb464e3dfa2d59d65c3aa8ee652cb7607481f61 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Thu, 10 Nov 2011 19:38:27 +0100
-Subject: [PATCH] messagebufferinterface.cpp: move sys/socket.h include
-
-This prevents the following error during cross-compiling:
-
-| In file included from messagebufferinterface.cpp:30:
-| /OE/angstrom-dev/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/linux/can.h:81: error: 'sa_family_t' does not name a type
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
----
- messagebufferinterface.cpp |    7 ++++---
- 1 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/messagebufferinterface.cpp b/messagebufferinterface.cpp
-index 116564c..3e9a535 100644
---- a/messagebufferinterface.cpp
-+++ b/messagebufferinterface.cpp
-@@ -25,14 +25,15 @@
- #include <sys/time.h>
- #include <QFile>
- 
-+#include <sys/types.h>
-+#include <sys/socket.h>
-+#include <sys/stat.h>
-+
- //#include <linux/can.h>
- //#include <linux/can/raw.h>
- #include <syscall.h>
- 
- #include "configdialog.h"
--#include <sys/types.h>
--#include <sys/socket.h>
--#include <sys/stat.h>
- #include <linux/can.h>
- #include <linux/can/raw.h>
- 
--- 
-1.7.2.5
-
diff --git a/meta-oe/recipes-qt/qcanobserver/qcanobserver/0002-qconsole-writethread-gcc-4.5-fixes.patch b/meta-oe/recipes-qt/qcanobserver/qcanobserver/0002-qconsole-writethread-gcc-4.5-fixes.patch
deleted file mode 100644
index 4561923..0000000
--- a/meta-oe/recipes-qt/qcanobserver/qcanobserver/0002-qconsole-writethread-gcc-4.5-fixes.patch
+++ /dev/null
@@ -1,40 +0,0 @@ 
-From 3b3cb5212b5dbf182beed171045e5d179b2e9000 Mon Sep 17 00:00:00 2001
-From: Koen Kooi <koen@dominion.thruhere.net>
-Date: Fri, 11 Nov 2011 09:32:14 +0100
-Subject: [PATCH 2/2] qconsole, writethread: gcc 4.5 fixes
-
-Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
----
- qconsole.cpp    |    2 +-
- writethread.cpp |    2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/qconsole.cpp b/qconsole.cpp
-index ea86957..b5a4687 100644
---- a/qconsole.cpp
-+++ b/qconsole.cpp
-@@ -22,7 +22,7 @@ QConsole::QConsole()
- 
- {
-     this->setReadOnly(true);
--    QTextEdit::QTextEdit(NULL);
-+    QTextEdit(NULL);
- }
- 
- 
-diff --git a/writethread.cpp b/writethread.cpp
-index ef7bc13..ff19560 100755
---- a/writethread.cpp
-+++ b/writethread.cpp
-@@ -69,7 +69,7 @@ void WriteThread::setDev(void *ConfData, QString InterfaceLib, bool shareDevLib)
-     if(!handle)
-     {
-         QString *ErrStr = new QString(" ");
--        ErrStr->sprintf("%s %s","Could not load Device Mapper: ", InterfaceLib);
-+        ErrStr->sprintf("%s %s","Could not load Device Mapper: ", (char*)InterfaceLib.constData());
-         ErrorDialog *ed = new ErrorDialog;
-         ed->SetErrorMessage(*ErrStr);
-         delete ErrStr;
--- 
-1.7.2.5
-
diff --git a/meta-oe/recipes-qt/qcanobserver/qcanobserver/candemo.xml b/meta-oe/recipes-qt/qcanobserver/qcanobserver/candemo.xml
deleted file mode 100755
index 304713f..0000000
--- a/meta-oe/recipes-qt/qcanobserver/qcanobserver/candemo.xml
+++ /dev/null
@@ -1,40 +0,0 @@ 
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<Database Name="EW-demo">
-    <ID Id="180">
-	<Item0>
-	    <interpret Multiplier="0.010986328125" Name="MotorPos" Offset="-180" Datamask="00120000">
-	    </interpret>
-	</Item0>
-	</ID>
-	    <ID Id="280">
-	<Item0>
-	    <interpret Multiplier="1.0" Name="Fanstatus" Offset="0" Datamask="10000000">
-	    </interpret>
-	</Item0>
-	</ID>
-	    <ID Id="380">
-	<Item0>
-	    <interpret Multiplier="0.00390625" Name="temp1" Offset="0" Datamask="00120000">
-	    </interpret>
-	</Item0>
-	</ID>
-	    <ID Id="480">
-	<Item0>
-	    <interpret Multiplier="1.0" Name="fanstatus" Offset="0" Datamask="10000000">
-	    </interpret>
-	</Item0>
-	</ID>
-	<ID Id="580">
-	<Item0>
-	    <interpret Multiplier="1.0" Name="lampstatus" Offset="0" Datamask="10000000">
-	    </interpret>
-	</Item0>
-	</ID>
-	<ID Id="680">
-	<Item0>
-	<interpret Multiplier="0.00390625" Name="Lightsensor" Offset="0" Datamask="00120000">
-	</interpret>
-	</Item0>
-	</ID>
-</Database>
diff --git a/meta-oe/recipes-qt/qcanobserver/qcanobserver_svn.bb b/meta-oe/recipes-qt/qcanobserver/qcanobserver_svn.bb
deleted file mode 100644
index 54e7fc1..0000000
--- a/meta-oe/recipes-qt/qcanobserver/qcanobserver_svn.bb
+++ /dev/null
@@ -1,43 +0,0 @@ 
-SUMMARY = "The Linux CAN Sniffer"
-
-LICENSE = "GPLv3+"
-LIC_FILES_CHKSUM = "file://modeltest/LICENSE.GPL;md5=34337af480a8c452bfafe22a78fa20cb"
-
-inherit qt4x11
-
-DEPENDS += "qwt"
-
-PV = "0.5+svnr${SRCPV}"
-SRCREV = "48"
-SRC_URI = "svn://qcanobserver.svn.sourceforge.net/svnroot;module=qcanobserver;protocol=https \
-           file://0001-messagebufferinterface.cpp-add-sys-socket.h-as-inclu.patch \
-           file://0002-qconsole-writethread-gcc-4.5-fixes.patch  \
-           file://candemo.xml"
-
-S = "${WORKDIR}/qcanobserver/"
-
-CXXFLAGS += " -DPF_CAN=29  -DAF_CAN=PF_CAN"
-
-do_configure_prepend() {
-    sed -i -e s:/usr/include/qwt5/:${STAGING_INCDIR}:g -e 's:-L/usr/lib/:-L${STAGING_DIR_TARGET}/lib -ldl:g' *.pro
-}
-
-do_configure_append() {
-    sed -i -e s:-L/usr/lib::g Makefile
-}
-
-do_install() {
-    install -d ${D}${datadir}/qcanobserver
-    install -d ${D}${datadir}/qcanobserver/cfg
-    install -d ${D}${datadir}/qcanobserver/lib
-    install -d ${D}${datadir}/qcanobserver/db
-
-    install -m 0755 ${S}/QCanObserver ${D}${datadir}/qcanobserver
-
-    install -m 0644 ${WORKDIR}/candemo.xml ${D}${datadir}/qcanobserver/db
-    install -m 0644 ${S}/db/*.xml ${D}${datadir}/qcanobserver/db
-}
-
-FILES_${PN}-dbg += "${datadir}/qcanobserver/.debug"
-
-PNBLACKLIST[qcanobserver] ?= "depends on qwt-5 APIs"
diff --git a/meta-oe/recipes-qt/qconnman/qconnman-e_git.bb b/meta-oe/recipes-qt/qconnman/qconnman-e_git.bb
deleted file mode 100644
index e307a72..0000000
--- a/meta-oe/recipes-qt/qconnman/qconnman-e_git.bb
+++ /dev/null
@@ -1,12 +0,0 @@ 
-require qconnman.inc
-
-RCONFLICTS_${PN} = "qconnman"
-
-inherit qt4e
-
-PNBLACKLIST[qconnman-e] ?= "BROKEN: doesn't work with B!=S, ls: cannot access *.pro: No such file or directory"
-
-EXTRA_QMAKEVARS_PRE += "PREFIX=/usr"
-EXTRA_OEMAKE += "INSTALL_ROOT=${D}"
-
-FILES_${PN} += "${datadir}/qconnman/"
diff --git a/meta-oe/recipes-qt/qconnman/qconnman.inc b/meta-oe/recipes-qt/qconnman/qconnman.inc
deleted file mode 100644
index 664f2a0..0000000
--- a/meta-oe/recipes-qt/qconnman/qconnman.inc
+++ /dev/null
@@ -1,15 +0,0 @@ 
-DESCRIPTION = "ConnMan management interface done in Qt"
-DEPENDS = "connman"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-
-PR = "r2"
-
-inherit autotools
-
-PV = "0.0+gitr${SRCPV}"
-SRCREV = "f976b18c7c5584627224784801803e9fd3ebe0ff"
-SRC_URI = "git://github.com/OSSystems/qconnman-ui.git;branch=stable"
-
-S = "${WORKDIR}/git/"
diff --git a/meta-oe/recipes-qt/qconnman/qconnman_git.bb b/meta-oe/recipes-qt/qconnman/qconnman_git.bb
deleted file mode 100644
index 2f8cca2..0000000
--- a/meta-oe/recipes-qt/qconnman/qconnman_git.bb
+++ /dev/null
@@ -1,10 +0,0 @@ 
-require qconnman.inc
-
-RCONFLICTS_${PN} = "qconnman-e"
-
-inherit qt4x11
-
-PNBLACKLIST[qconnman] ?= "BROKEN: doesn't work with B!=S, ls: cannot access *.pro: No such file or directory"
-
-EXTRA_QMAKEVARS_PRE += "PREFIX=/usr"
-EXTRA_OEMAKE += "INSTALL_ROOT=${D}"
diff --git a/meta-oe/recipes-qt/qextserialport/qextserialport_1.2rc.bb b/meta-oe/recipes-qt/qextserialport/qextserialport_1.2rc.bb
deleted file mode 100644
index abf48cf..0000000
--- a/meta-oe/recipes-qt/qextserialport/qextserialport_1.2rc.bb
+++ /dev/null
@@ -1,54 +0,0 @@ 
-SUMMARY = "Qt Ext Serial Port Library"
-HOMEPAGE = "http://http://code.google.com/p/qextserialport/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b866a28cda707ec714878bd933f46251"
-SECTION = "qt/libs"
-
-
-# 1.2rc as version will sort lower then 1.2 when it's released
-REAL_PV = "1.2rc"
-PV = "1.1+${REAL_PV}"
-
-inherit qt4x11 pkgconfig
-
-DEPENDS = "udev"
-
-SRC_URI = " \
-    http://qextserialport.googlecode.com/files/qextserialport-${REAL_PV}.zip \
-"
-
-SRC_URI[md5sum] = "ffa061edb9f64666468d18402eee6108"
-SRC_URI[sha256sum] = "9cbee267aac9830f9944bb1d13872e51fba400aa9afe158e64f0fe265a0176bc"
-
-S = "${WORKDIR}/qextserialport-${REAL_PV}"
-
-FILES_${PN} = "${libdir}/libqextserialport${SOLIBS}"
-
-FILES_${PN}-dev = " \
-    ${libdir}/libqextserialport${SOLIBSDEV} \
-    ${libdir}/libqextserialport.prl \
-    ${includedir}/QtExtSerialPort/*.h \
-    ${datadir}/qt4/mkspecs/features/extserialport.prf \
-"
-
-FILES_${PN}-dbg += " \
-    ${libdir}/.debug/libqextserialport.so* \
-"
-
-do_configure_prepend() {
-    # based on the documentation, this line make sure we use udev in linux
-    cd ${S} && echo "linux*:CONFIG += qesp_linux_udev" > .qmake.cache
-
-    # Hacking hardcoded qmake variables
-    find *.pro -exec sed -i -e 's,$$\[QT_INSTALL_HEADERS\],${includedir},g' '{}' ';'
-    find *.pro -exec sed -i -e 's,$$\[QT_INSTALL_LIBS\],${libdir},g' '{}' ';'
-    find *.pro -exec sed -i -e 's,$$\[QMAKE_MKSPECS\],${datadir}/qt4/mkspecs/,g' '{}' ';'
-}
-
-do_install() {
-    export INSTALL_ROOT=${D}
-    oe_runmake install
-
-    # This is necessary to make it work with the qt based SDK
-    cd ${D}/${datadir}/qt4/mkspecs/features && sed -i -e "s|${STAGING_INCDIR_NATIVE}/qt4|\$(OE_QMAKE_INCDIR_QT)/..|" ./extserialport.prf
-}
diff --git a/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch b/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch
deleted file mode 100644
index 363bee3..0000000
--- a/meta-oe/recipes-qt/qt-creator/qt-creator/fix.missing.cpuid.h.patch
+++ /dev/null
@@ -1,384 +0,0 @@ 
-From 8be071bbca6a9b8e06a7466d848a2b4b6dbcbc1f Mon Sep 17 00:00:00 2001
-From: Christian Kandeler <christian.kandeler@digia.com>
-Date: Fri, 19 Jul 2013 13:40:30 +0200
-Subject: [PATCH] WIP: Remove x86 assembler code from botan sources.
-
-Taken from
-https://bugreports.qt-project.org/browse/QTCREATORBUG-8107
-
-Upstream-Status: Submitted
-
-Change-Id: I3780aa4551f563c5f43833ec822e3c1add7012f2
----
- src/libs/3rdparty/botan/botan.cpp | 297 +++-----------------------------------
- src/libs/3rdparty/botan/botan.h   |   4 +-
- 2 files changed, 18 insertions(+), 283 deletions(-)
-
-diff --git a/src/libs/3rdparty/botan/botan.cpp b/src/libs/3rdparty/botan/botan.cpp
-index 917c385..c515750 100644
---- a/src/libs/3rdparty/botan/botan.cpp
-+++ b/src/libs/3rdparty/botan/botan.cpp
-@@ -1098,35 +1098,31 @@ class Montgomery_Exponentiator : public Modular_Exponentiator
- 
- }
- 
--
--#if (BOTAN_MP_WORD_BITS != 32)
--   #error The mp_x86_32 module requires that BOTAN_MP_WORD_BITS == 32
-+#if (BOTAN_MP_WORD_BITS == 8)
-+typedef Botan::u16bit dword;
-+#elif (BOTAN_MP_WORD_BITS == 16)
-+typedef Botan::u32bit dword;
-+#elif (BOTAN_MP_WORD_BITS == 32)
-+typedef Botan::u64bit dword;
-+#elif (BOTAN_MP_WORD_BITS == 64)
-+#error BOTAN_MP_WORD_BITS can be 64 only with assembly support
-+#else
-+#error BOTAN_MP_WORD_BITS must be 8, 16, 32, or 64
- #endif
- 
--#ifdef Q_OS_UNIX
-+
- namespace Botan {
- 
- extern "C" {
- 
- /*
--* Helper Macros for x86 Assembly
--*/
--#define ASM(x) x "\n\t"
--
--/*
- * Word Multiply
- */
- inline word word_madd2(word a, word b, word* c)
-    {
--   asm(
--      ASM("mull %[b]")
--      ASM("addl %[c],%[a]")
--      ASM("adcl $0,%[carry]")
--
--      : [a]"=a"(a), [b]"=rm"(b), [carry]"=&d"(*c)
--      : "0"(a), "1"(b), [c]"g"(*c) : "cc");
--
--   return a;
-+    dword z = (dword)a * b + *c;
-+    *c = (word)(z >> BOTAN_MP_WORD_BITS);
-+    return (word)z;
-    }
- 
- /*
-@@ -1134,25 +1130,12 @@ inline word word_madd2(word a, word b, word* c)
- */
- inline word word_madd3(word a, word b, word c, word* d)
-    {
--   asm(
--      ASM("mull %[b]")
--
--      ASM("addl %[c],%[a]")
--      ASM("adcl $0,%[carry]")
--
--      ASM("addl %[d],%[a]")
--      ASM("adcl $0,%[carry]")
--
--      : [a]"=a"(a), [b]"=rm"(b), [carry]"=&d"(*d)
--      : "0"(a), "1"(b), [c]"g"(c), [d]"g"(*d) : "cc");
--
--   return a;
-+    dword z = (dword)a * b + c + *d;
-+    *d = (word)(z >> BOTAN_MP_WORD_BITS);
-+    return (word)z;
-    }
--
- }
--
- }
--#endif
- 
- 
- 
-@@ -1704,30 +1687,6 @@ void unlock_mem(void* addr, size_t length);
- 
- namespace Botan {
- 
--extern "C" {
--
--/*
--* Word Multiply/Add
--*/
--inline word word_madd2(word a, word b, word* c)
--   {
--   dword z = (dword)a * b + *c;
--   *c = (word)(z >> BOTAN_MP_WORD_BITS);
--   return (word)z;
--   }
--
--/*
--* Word Multiply/Add
--*/
--inline word word_madd3(word a, word b, word c, word* d)
--   {
--   dword z = (dword)a * b + c + *d;
--   *d = (word)(z >> BOTAN_MP_WORD_BITS);
--   return (word)z;
--   }
--
--}
--
- /**
- * Win32 CAPI Entropy Source
- */
-@@ -2315,225 +2274,6 @@ namespace Botan {
- 
- extern "C" {
- 
--#ifdef Q_OS_UNIX
--/*
--* Helper Macros for x86 Assembly
--*/
--#ifndef ASM
--  #define ASM(x) x "\n\t"
--#endif
--
--#define ADDSUB2_OP(OPERATION, INDEX)                     \
--        ASM("movl 4*" #INDEX "(%[y]), %[carry]")         \
--        ASM(OPERATION " %[carry], 4*" #INDEX "(%[x])")   \
--
--#define ADDSUB3_OP(OPERATION, INDEX)                     \
--        ASM("movl 4*" #INDEX "(%[x]), %[carry]")         \
--        ASM(OPERATION " 4*" #INDEX "(%[y]), %[carry]")   \
--        ASM("movl %[carry], 4*" #INDEX "(%[z])")         \
--
--#define LINMUL_OP(WRITE_TO, INDEX)                       \
--        ASM("movl 4*" #INDEX "(%[x]),%%eax")             \
--        ASM("mull %[y]")                                 \
--        ASM("addl %[carry],%%eax")                       \
--        ASM("adcl $0,%%edx")                             \
--        ASM("movl %%edx,%[carry]")                       \
--        ASM("movl %%eax, 4*" #INDEX "(%[" WRITE_TO "])")
--
--#define MULADD_OP(IGNORED, INDEX)                        \
--        ASM("movl 4*" #INDEX "(%[x]),%%eax")             \
--        ASM("mull %[y]")                                 \
--        ASM("addl %[carry],%%eax")                       \
--        ASM("adcl $0,%%edx")                             \
--        ASM("addl 4*" #INDEX "(%[z]),%%eax")             \
--        ASM("adcl $0,%%edx")                             \
--        ASM("movl %%edx,%[carry]")                       \
--        ASM("movl %%eax, 4*" #INDEX " (%[z])")
--
--#define DO_8_TIMES(MACRO, ARG) \
--        MACRO(ARG, 0) \
--        MACRO(ARG, 1) \
--        MACRO(ARG, 2) \
--        MACRO(ARG, 3) \
--        MACRO(ARG, 4) \
--        MACRO(ARG, 5) \
--        MACRO(ARG, 6) \
--        MACRO(ARG, 7)
--
--#define ADD_OR_SUBTRACT(CORE_CODE)     \
--        ASM("rorl %[carry]")           \
--        CORE_CODE                      \
--        ASM("sbbl %[carry],%[carry]")  \
--        ASM("negl %[carry]")
--
--/*
--* Word Addition
--*/
--inline word word_add(word x, word y, word* carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(ASM("adcl %[y],%[x]"))
--      : [x]"=r"(x), [carry]"=r"(*carry)
--      : "0"(x), [y]"rm"(y), "1"(*carry)
--      : "cc");
--   return x;
--   }
--
--/*
--* Eight Word Block Addition, Two Argument
--*/
--inline word word8_add2(word x[8], const word y[8], word carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB2_OP, "adcl"))
--      : [carry]"=r"(carry)
--      : [x]"r"(x), [y]"r"(y), "0"(carry)
--      : "cc", "memory");
--   return carry;
--   }
--
--/*
--* Eight Word Block Addition, Three Argument
--*/
--inline word word8_add3(word z[8], const word x[8], const word y[8], word carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB3_OP, "adcl"))
--      : [carry]"=r"(carry)
--      : [x]"r"(x), [y]"r"(y), [z]"r"(z), "0"(carry)
--      : "cc", "memory");
--   return carry;
--   }
--
--/*
--* Word Subtraction
--*/
--inline word word_sub(word x, word y, word* carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(ASM("sbbl %[y],%[x]"))
--      : [x]"=r"(x), [carry]"=r"(*carry)
--      : "0"(x), [y]"rm"(y), "1"(*carry)
--      : "cc");
--   return x;
--   }
--
--/*
--* Eight Word Block Subtraction, Two Argument
--*/
--inline word word8_sub2(word x[8], const word y[8], word carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB2_OP, "sbbl"))
--      : [carry]"=r"(carry)
--      : [x]"r"(x), [y]"r"(y), "0"(carry)
--      : "cc", "memory");
--   return carry;
--   }
--
--/*
--* Eight Word Block Subtraction, Two Argument
--*/
--inline word word8_sub2_rev(word x[8], const word y[8], word carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB3_OP, "sbbl"))
--      : [carry]"=r"(carry)
--      : [x]"r"(y), [y]"r"(x), [z]"r"(x), "0"(carry)
--      : "cc", "memory");
--   return carry;
--   }
--
--/*
--* Eight Word Block Subtraction, Three Argument
--*/
--inline word word8_sub3(word z[8], const word x[8], const word y[8], word carry)
--   {
--   asm(
--      ADD_OR_SUBTRACT(DO_8_TIMES(ADDSUB3_OP, "sbbl"))
--      : [carry]"=r"(carry)
--      : [x]"r"(x), [y]"r"(y), [z]"r"(z), "0"(carry)
--      : "cc", "memory");
--   return carry;
--   }
--
--/*
--* Eight Word Block Linear Multiplication
--*/
--inline word word8_linmul2(word x[8], word y, word carry)
--   {
--   asm(
--      DO_8_TIMES(LINMUL_OP, "x")
--      : [carry]"=r"(carry)
--      : [x]"r"(x), [y]"rm"(y), "0"(carry)
--      : "cc", "%eax", "%edx");
--   return carry;
--   }
--
--/*
--* Eight Word Block Linear Multiplication
--*/
--inline word word8_linmul3(word z[8], const word x[8], word y, word carry)
--   {
--   asm(
--      DO_8_TIMES(LINMUL_OP, "z")
--      : [carry]"=r"(carry)
--      : [z]"r"(z), [x]"r"(x), [y]"rm"(y), "0"(carry)
--      : "cc", "%eax", "%edx");
--   return carry;
--   }
--
--/*
--* Eight Word Block Multiply/Add
--*/
--inline word word8_madd3(word z[8], const word x[8], word y, word carry)
--   {
--   asm(
--      DO_8_TIMES(MULADD_OP, "")
--      : [carry]"=r"(carry)
--      : [z]"r"(z), [x]"r"(x), [y]"rm"(y), "0"(carry)
--      : "cc", "%eax", "%edx");
--   return carry;
--   }
--
--/*
--* Multiply-Add Accumulator
--*/
--inline void word3_muladd(word* w2, word* w1, word* w0, word x, word y)
--   {
--   asm(
--      ASM("mull %[y]")
--
--      ASM("addl %[x],%[w0]")
--      ASM("adcl %[y],%[w1]")
--      ASM("adcl $0,%[w2]")
--
--      : [w0]"=r"(*w0), [w1]"=r"(*w1), [w2]"=r"(*w2)
--      : [x]"a"(x), [y]"d"(y), "0"(*w0), "1"(*w1), "2"(*w2)
--      : "cc");
--   }
--
--/*
--* Multiply-Add Accumulator
--*/
--inline void word3_muladd_2(word* w2, word* w1, word* w0, word x, word y)
--   {
--   asm(
--      ASM("mull %[y]")
--
--      ASM("addl %[x],%[w0]")
--      ASM("adcl %[y],%[w1]")
--      ASM("adcl $0,%[w2]")
--
--      ASM("addl %[x],%[w0]")
--      ASM("adcl %[y],%[w1]")
--      ASM("adcl $0,%[w2]")
--
--      : [w0]"=r"(*w0), [w1]"=r"(*w1), [w2]"=r"(*w2)
--      : [x]"a"(x), [y]"d"(y), "0"(*w0), "1"(*w1), "2"(*w2)
--      : "cc");
--   }
--#else
- /*
- * Word Addition
- */
-@@ -2718,9 +2458,6 @@ inline void word3_muladd_2(word* w2, word* w1, word* w0, word a, word b)
-    *w1 = word_add(*w1, b, &carry);
-    *w2 = word_add(*w2, top, &carry);
-    }
--
--#endif
--
- }
- 
- }
-diff --git a/src/libs/3rdparty/botan/botan.h b/src/libs/3rdparty/botan/botan.h
-index 6a9cbe0..3a66a14 100644
---- a/src/libs/3rdparty/botan/botan.h
-+++ b/src/libs/3rdparty/botan/botan.h
-@@ -80,9 +80,7 @@
-   #define BOTAN_GCC_VERSION 0
- #endif
- 
--#define BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN
--#define BOTAN_TARGET_CPU_IS_X86_FAMILY
--#define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 1
-+#define BOTAN_TARGET_UNALIGNED_MEMORY_ACCESS_OK 0
- 
- #if defined(BOTAN_TARGET_CPU_IS_LITTLE_ENDIAN) || \
-     defined(BOTAN_TARGET_CPU_IS_BIG_ENDIAN)
--- 
-1.8.3.2
-
diff --git a/meta-oe/recipes-qt/qt-creator/qt-creator/qbs_transformer_product.patch b/meta-oe/recipes-qt/qt-creator/qt-creator/qbs_transformer_product.patch
deleted file mode 100644
index dea09ae..0000000
--- a/meta-oe/recipes-qt/qt-creator/qt-creator/qbs_transformer_product.patch
+++ /dev/null
@@ -1,93 +0,0 @@ 
-From c1c7cb2a5e6220a74f374a301e648479029f8a0e Mon Sep 17 00:00:00 2001
-From: Joerg Bornemann <joerg.bornemann@digia.com>
-Date: Mon, 12 Aug 2013 09:27:47 +0200
-Subject: [PATCH] introduce Transformer::product()
-
-Simplifies the calling code.
-Remove pointless nullpointer check from jscommandexecutor.
-
-Upstream-Status: Backport
-Signed-off-by: Jonathan Liu <net147@gmail.com>
-
-Change-Id: I867181d2b750f32f04376ce860f5dee6555d3e33
-Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
----
- src/lib/buildgraph/jscommandexecutor.cpp      | 5 +----
- src/lib/buildgraph/processcommandexecutor.cpp | 6 ++----
- src/lib/buildgraph/transformer.cpp            | 7 +++++++
- src/lib/buildgraph/transformer.h              | 1 +
- 4 files changed, 11 insertions(+), 8 deletions(-)
-
-diff --git a/src/shared/qbs/src/lib/buildgraph/jscommandexecutor.cpp b/src/shared/qbs/src/lib/buildgraph/jscommandexecutor.cpp
-index b7f5b1d..24ffb7e 100644
---- a/src/shared/qbs/src/lib/buildgraph/jscommandexecutor.cpp
-+++ b/src/shared/qbs/src/lib/buildgraph/jscommandexecutor.cpp
-@@ -79,10 +79,7 @@ public slots:
-         m_result.errorMessage.clear();
-         ScriptEngine * const scriptEngine = provideScriptEngine();
-         QScriptValue scope = scriptEngine->newObject();
--        Artifact *someOutputArtifact = *transformer->outputs.begin();
--        if (!someOutputArtifact->product.isNull())
--            setupScriptEngineForProduct(scriptEngine, someOutputArtifact->product,
--                                        transformer->rule, scope);
-+        setupScriptEngineForProduct(scriptEngine, transformer->product(), transformer->rule, scope);
-         transformer->setupInputs(scriptEngine, scope);
-         transformer->setupOutputs(scriptEngine, scope);
- 
-diff --git a/src/shared/qbs/src/lib/buildgraph/processcommandexecutor.cpp b/src/shared/qbs/src/lib/buildgraph/processcommandexecutor.cpp
-index 78f77c3..d123fe8 100644
---- a/src/shared/qbs/src/lib/buildgraph/processcommandexecutor.cpp
-+++ b/src/shared/qbs/src/lib/buildgraph/processcommandexecutor.cpp
-@@ -276,8 +276,7 @@ void ProcessCommandExecutor::removeResponseFile()
- 
- QString ProcessCommandExecutor::findProcessCommandInPath()
- {
--    Artifact * const outputNode = *transformer()->outputs.begin();
--    const ResolvedProductPtr product = outputNode->product;
-+    const ResolvedProductPtr product = transformer()->product();
-     const ProcessCommand * const cmd = processCommand();
-     QString fullProgramPath = product->executablePathCache.value(cmd->program());
-     if (!fullProgramPath.isEmpty())
-@@ -309,8 +308,7 @@ QString ProcessCommandExecutor::findProcessCommandInPath()
- 
- QString ProcessCommandExecutor::findProcessCommandBySuffix()
- {
--    Artifact * const outputNode = *transformer()->outputs.begin();
--    const ResolvedProductPtr product = outputNode->product;
-+    const ResolvedProductPtr product = transformer()->product();
-     const ProcessCommand * const cmd = processCommand();
-     QString fullProgramPath = product->executablePathCache.value(cmd->program());
-     if (!fullProgramPath.isEmpty())
-diff --git a/src/shared/qbs/src/lib/buildgraph/transformer.cpp b/src/shared/qbs/src/lib/buildgraph/transformer.cpp
-index ce6baa7..363e08d 100644
---- a/src/shared/qbs/src/lib/buildgraph/transformer.cpp
-+++ b/src/shared/qbs/src/lib/buildgraph/transformer.cpp
-@@ -85,6 +85,13 @@ QScriptValue Transformer::translateInOutputs(QScriptEngine *scriptEngine, const
-     return jsTagFiles;
- }
- 
-+ResolvedProductPtr Transformer::product() const
-+{
-+    if (outputs.isEmpty())
-+        return ResolvedProductPtr();
-+    return (*outputs.begin())->product;
-+}
-+
- void Transformer::setupInputs(QScriptEngine *scriptEngine, QScriptValue targetScriptValue)
- {
-     const QString &defaultModuleName = rule->module->name;
-diff --git a/src/shared/qbs/src/lib/buildgraph/transformer.h b/src/shared/qbs/src/lib/buildgraph/transformer.h
-index c9c88b6..d26c391 100644
---- a/src/shared/qbs/src/lib/buildgraph/transformer.h
-+++ b/src/shared/qbs/src/lib/buildgraph/transformer.h
-@@ -65,6 +65,7 @@ public:
-                                            const ArtifactList &artifacts,
-                                            const QString &defaultModuleName);
- 
-+    ResolvedProductPtr product() const;
-     void setupInputs(QScriptEngine *scriptEngine, QScriptValue targetScriptValue);
-     void setupOutputs(QScriptEngine *scriptEngine, QScriptValue targetScriptValue);
-     void createCommands(const PrepareScriptConstPtr &script,
--- 
-1.8.4
-
diff --git a/meta-oe/recipes-qt/qt-creator/qt-creator_2.8.1.bb b/meta-oe/recipes-qt/qt-creator/qt-creator_2.8.1.bb
deleted file mode 100644
index 88f7a45..0000000
--- a/meta-oe/recipes-qt/qt-creator/qt-creator_2.8.1.bb
+++ /dev/null
@@ -1,54 +0,0 @@ 
-SUMMARY = "Lightweight, cross-platform integrated development environment"
-
-HOMEPAGE = "http://qt-project.org/"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LGPL_EXCEPTION.TXT;md5=eb6c371255e1262c55ae9b652a90b528 \
-                    file://LICENSE.LGPL;md5=243b725d71bb5df4a1e5920b344b86ad"
-SECTION = "qt/app"
-
-SRC_URI = "http://download.qt-project.org/official_releases/qtcreator/2.8/${PV}/${BP}-src.tar.gz \
-           file://fix.missing.cpuid.h.patch \
-           file://qbs_transformer_product.patch"
-SRC_URI[md5sum] = "79ef6c6ece0c00035ef744c9d6e3bd3b"
-SRC_URI[sha256sum] = "d5ae007a297a4288d0e95fd605edbfb8aee80f6788c7a6cfb9cb297f50c364b9"
-
-S = "${WORKDIR}/${BP}-src"
-
-inherit qt4x11
-
-EXTRA_QMAKEVARS_PRE += "IDE_LIBRARY_BASENAME=${baselib}"
-
-do_install() {
-	oe_runmake INSTALL_ROOT=${D}${prefix} install
-	oe_runmake INSTALL_ROOT=${D}${prefix} install_docs
-	rm -f ${D}${libdir}/qtcreator/lib*.so
-}
-
-FILES_${PN} += "${datadir}/icons \
-                ${datadir}/qtcreator \
-                ${libdir}/qtcreator/*"
-FILES_${PN}-dbg += "${datadir}/qtcreator/*/*/*/*/.debug \
-                    ${libdir}/qtcreator/.debug \
-                    ${libdir}/qtcreator/*/*/.debug"
-RRECOMMENDS_${PN} += "packagegroup-core-buildessential \
-                      packagegroup-qt-toolchain-target \
-                      qt4-plugin-sqldriver-sqlite \
-"
-
-# avoid conflicts with meta-qt5's qt-creator and do install nothing to sysroot
-# this does no harm cause nothing depends on qt-creator
-sysroot_stage_all() {
-}
-
-# the regexp in insane.bbclass doesn't allow this valid path:
-# qt-creator-2.8.1: qt-creator: found library in wrong location: /usr/share/qtcreator/qbs/lib/qbs/plugins/libqbs_cpp_scanner.so
-# qt-creator: found library in wrong location: /usr/share/qtcreator/qbs/lib/qbs/plugins/libqbs_qt_scanner.so
-# qt-creator-dbg: found library in wrong location: /usr/share/qtcreator/qbs/lib/qbs/plugins/.debug/libqbs_cpp_scanner.so
-# qt-creator-dbg: found library in wrong location: /usr/share/qtcreator/qbs/lib/qbs/plugins/.debug/libqbs_qt_scanner.so
-INSANE_SKIP_${PN} += "libdir"
-INSANE_SKIP_${PN}-dbg += "libdir"
-
-RDEPENDS_${PN} += "perl"
-
-# /usr/include/qt4/QtCore/qsharedpointer_impl.h:336:11: error: 'product' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-PNBLACKLIST[qt-creator] ?= "BROKEN: fails to build with gcc-5 and conflicts with qt5-creator"
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-fix-embedded-usage-doesn-t-work-outside-of-Qt.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-fix-embedded-usage-doesn-t-work-outside-of-Qt.patch
deleted file mode 100644
index d8d88c2..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-fix-embedded-usage-doesn-t-work-outside-of-Qt.patch
+++ /dev/null
@@ -1,73 +0,0 @@ 
-From de2b568a4f14f38ae26960f543277bd2ac57c9d6 Mon Sep 17 00:00:00 2001
-From: Alex <qt-info@nokia.com>
-Date: Tue, 10 May 2011 14:54:49 +1000
-Subject: [PATCH] fix !embedded usage (doesn't work outside of Qt)
-
-embedded is part of QT_CONFIG and not CONFIG
-
-Task-number: QTMOBILITY-1586
----
-Upstream-Status: Backport
-https://qt.gitorious.org/qt-mobility/qt-mobility/commit/de2b568a4f14f38ae26960f543277bd2ac57c9d6
-EB: refreshed the patch for it to apply properly
-
- plugins/multimedia/gstreamer/gstreamer.pro | 2 +-
- src/systeminfo/systeminfo.pro              | 6 +++---
- tests/auto/auto.pro                        | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-Index: qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/gstreamer.pro
-===================================================================
---- qt-mobility-opensource-src-1.2.0.orig/plugins/multimedia/gstreamer/gstreamer.pro	2013-09-19 10:34:40.880862884 +0200
-+++ qt-mobility-opensource-src-1.2.0/plugins/multimedia/gstreamer/gstreamer.pro	2013-09-19 10:35:22.844862550 +0200
-@@ -85,7 +85,7 @@
-     qgstutils.cpp
- 
- 
--!win32:!embedded:!mac:!symbian:!simulator:!contains(QT_CONFIG, qpa) {
-+!win32:!contains(QT_CONFIG,embedded):!mac:!symbian:!simulator:!contains(QT_CONFIG, qpa) {
-     LIBS += -lXv -lX11 -lXext
- 
-     HEADERS += \
-Index: qt-mobility-opensource-src-1.2.0/src/systeminfo/systeminfo.pro
-===================================================================
---- qt-mobility-opensource-src-1.2.0.orig/src/systeminfo/systeminfo.pro	2013-09-19 10:34:40.884862884 +0200
-+++ qt-mobility-opensource-src-1.2.0/src/systeminfo/systeminfo.pro	2013-09-19 10:36:05.480862210 +0200
-@@ -101,7 +101,7 @@
-             LIBS += -lblkid
-         }
- 
--        !embedded:!contains(QT_CONFIG,qpa): {
-+        !contains(QT_CONFIG,embedded):!contains(QT_CONFIG,qpa): {
-             LIBS += -lX11 -lXrandr
-         }
- 
-@@ -154,7 +154,7 @@
-                 #for now... udisks
-             } else {
-                 DEFINES += QT_NO_UDISKS
--                !embedded:!contains(QT_CONFIG,qpa): LIBS += -lX11 -lXrandr
-+                !contains(QT_CONFIG,embedded):!contains(QT_CONFIG,qpa): LIBS += -lX11 -lXrandr
-             }
- 
-             contains(connman_enabled, yes): {
-@@ -165,7 +165,7 @@
-             }
-         } else {
-             DEFINES += QT_NO_NETWORKMANAGER QT_NO_UDISKS QT_NO_CONNMAN
--            !embedded:!contains(QT_CONFIG,qpa): LIBS += -lX11 -lXrandr
-+            !contains(QT_CONFIG,embedded):!contains(QT_CONFIG,qpa): LIBS += -lX11 -lXrandr
-         }
-      }
- 
-Index: qt-mobility-opensource-src-1.2.0/tests/auto/auto.pro
-===================================================================
---- qt-mobility-opensource-src-1.2.0.orig/tests/auto/auto.pro	2013-09-19 10:34:40.884862884 +0200
-+++ qt-mobility-opensource-src-1.2.0/tests/auto/auto.pro	2013-09-19 10:35:22.844862550 +0200
-@@ -21,5 +21,5 @@
- # which require that the autotest is run on the same machine
- # doing the build - i.e. cross-compilation is not allowed.
- win32|mac|linux-g++* {
--    !embedded:!maemo5:!maemo6:SUBDIRS+=host.pro
-+    !contains(QT_CONFIG,embedded):!maemo5:!maemo6:SUBDIRS+=host.pro
- }
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-gstvideoconnector-fixed-buffers-allocation.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-gstvideoconnector-fixed-buffers-allocation.patch
deleted file mode 100644
index 2df76fc..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0001-gstvideoconnector-fixed-buffers-allocation.patch
+++ /dev/null
@@ -1,34 +0,0 @@ 
-Upstream-Status: Submitted [QTMOBILITY-1611]
-
-From b308508b49afa9a129b4e4589c57cd107d1320b8 Mon Sep 17 00:00:00 2001
-From: Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com>
-Date: Fri, 6 May 2011 10:35:11 +1000
-Subject: [PATCH] gstvideoconnector: fixed buffers allocation
-
-It should not be necessary, but at least theora video decoder doesn't
-iniatilize *buf, while gst_pad_alloc_buffer relies on buf being NULL.
-
-Task-number: QTMOBILITY-1611
-Reviewed-by: Michael Goddard
----
- plugins/multimedia/gstreamer/gstvideoconnector.c |    4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/plugins/multimedia/gstreamer/gstvideoconnector.c b/plugins/multimedia/gstreamer/gstvideoconnector.c
-index ddf68e0..9f8ceae 100644
---- a/plugins/multimedia/gstreamer/gstvideoconnector.c
-+++ b/plugins/multimedia/gstreamer/gstvideoconnector.c
-@@ -186,6 +186,10 @@ gst_video_connector_buffer_alloc (GstPad * pad, guint64 offset, guint size,
-     GstFlowReturn res = GST_FLOW_OK;
-     element = GST_VIDEO_CONNECTOR (GST_PAD_PARENT (pad));
- 
-+    if (!buf)
-+        return GST_FLOW_ERROR;
-+    *buf = NULL;
-+
-     GST_OBJECT_LOCK (element);
-     gst_object_ref(element->srcpad);
-     GST_OBJECT_UNLOCK (element);
--- 
-1.7.4.1
-
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0002-Remove-unnecessary-rpaths-from-qml_device-example.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0002-Remove-unnecessary-rpaths-from-qml_device-example.patch
deleted file mode 100644
index a411640..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/0002-Remove-unnecessary-rpaths-from-qml_device-example.patch
+++ /dev/null
@@ -1,28 +0,0 @@ 
-From 92e0c611f4969c716616d64df64831387e5b1632 Mon Sep 17 00:00:00 2001
-From: Paul Eggleton <paul.eggleton@linux.intel.com>
-Date: Fri, 16 Mar 2012 10:24:00 +0000
-Subject: [PATCH] Remove unnecessary rpaths from qml_device example
-
-These can't be valid in any case.
-
-Upstream-Status: Pending
-
-Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
----
- examples/declarative-systeminfo/device/device.pro |    3 ---
- 1 files changed, 0 insertions(+), 3 deletions(-)
-
-diff --git a/examples/declarative-systeminfo/device/device.pro b/examples/declarative-systeminfo/device/device.pro
-index 698e5fb..05be9b7 100644
---- a/examples/declarative-systeminfo/device/device.pro
-+++ b/examples/declarative-systeminfo/device/device.pro
-@@ -17,6 +17,3 @@ symbian {
- }
- RESOURCES += device.qrc
- 
--QMAKE_LFLAGS_DEBUG += "-Wl,-rpath,/home/user/qt/lib"
--QMAKE_LFLAGS_RPATH += "-Wl,-rpath,/home/user/qt/lib"
--QMAKE_LFLAGS_RELEASE += "-Wl,-rpath,/home/user/qt/lib"
--- 
-1.7.5.4
-
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix-compile-error-no-bluez.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix-compile-error-no-bluez.patch
deleted file mode 100644
index 3f03cf7..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix-compile-error-no-bluez.patch
+++ /dev/null
@@ -1,338 +0,0 @@ 
-From bb05733bd5a685b00f80ddc73a1b7a9a2ba0eb11 Mon Sep 17 00:00:00 2001
-From: Andrew Stanley-Jones <andrew.stanley-jones@nokia.com>
-Date: Thu, 12 May 2011 13:07:13 +1000
-Subject: [PATCH] Fix compile error if bluez is not installed
-
-Upstream-Status: Backport
-
-Task-number: QTMOBILITY-1576
----
- src/connectivity/bluetooth/bluetooth.pri           |    1 +
- .../bluetooth/qbluetoothdevicediscoveryagent.h     |    2 +-
- .../bluetooth/qbluetoothdevicediscoveryagent_p.cpp |    2 +-
- .../bluetooth/qbluetoothdevicediscoveryagent_p.h   |    6 +++---
- .../bluetooth/qbluetoothlocaldevice_p.h            |    4 ++--
- .../bluetooth/qbluetoothservicediscoveryagent.h    |    2 +-
- .../bluetooth/qbluetoothservicediscoveryagent_p.h  |    8 ++++----
- .../bluetooth/qbluetoothserviceinfo_p.cpp          |    2 +-
- .../bluetooth/qbluetoothserviceinfo_p.h            |    4 ++--
- src/connectivity/bluetooth/ql2capserver.h          |    2 +-
- src/connectivity/bluetooth/ql2capserver_p.cpp      |    2 +-
- src/connectivity/bluetooth/ql2capserver_p.h        |    6 +++---
- src/connectivity/bluetooth/qrfcommserver.h         |    2 +-
- src/connectivity/bluetooth/qrfcommserver_p.cpp     |    2 +-
- src/connectivity/bluetooth/qrfcommserver_p.h       |    6 +++---
- tests/tests.pro                                    |    4 +++-
- 16 files changed, 29 insertions(+), 26 deletions(-)
-
-diff --git a/src/connectivity/bluetooth/bluetooth.pri b/src/connectivity/bluetooth/bluetooth.pri
-index 717a1ad..4fa2c15 100644
---- a/src/connectivity/bluetooth/bluetooth.pri
-+++ b/src/connectivity/bluetooth/bluetooth.pri
-@@ -103,6 +103,7 @@ symbian {
-     }
- } else:contains(bluez_enabled, yes):contains(QT_CONFIG, dbus) {
-     QT *= dbus
-+    DEFINES += QTM_BLUEZ_BLUETOOTH
- 
-     include(bluez/bluez.pri)
- 
-diff --git a/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent.h b/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent.h
-index a95c467..00cfd14 100644
---- a/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent.h
-+++ b/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent.h
-@@ -101,7 +101,7 @@ private:
-     Q_DECLARE_PRIVATE(QBluetoothDeviceDiscoveryAgent)
-     QBluetoothDeviceDiscoveryAgentPrivate *d_ptr;
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     Q_PRIVATE_SLOT(d_func(), void _q_deviceFound(const QString &address, const QVariantMap &dict));
-     Q_PRIVATE_SLOT(d_func(), void _q_propertyChanged(const QString &name, const QDBusVariant &value));
- #endif
-diff --git a/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.cpp b/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.cpp
-index 6edbd16..512002d 100644
---- a/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.cpp
-+++ b/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.cpp
-@@ -69,7 +69,7 @@ void QBluetoothDeviceDiscoveryAgentPrivate::start()
- void QBluetoothDeviceDiscoveryAgentPrivate::stop()
- {
- }
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- void QBluetoothDeviceDiscoveryAgentPrivate::_q_deviceFound(const QString &address,
-                                                            const QVariantMap &dict)
- {
-diff --git a/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.h b/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.h
-index 0e34e05..700e78d 100644
---- a/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.h
-+++ b/src/connectivity/bluetooth/qbluetoothdevicediscoveryagent_p.h
-@@ -46,7 +46,7 @@
- 
- #include <QVariantMap>
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- class OrgBluezManagerInterface;
- class OrgBluezAdapterInterface;
- class QDBusVariant;
-@@ -80,7 +80,7 @@ public:
-             QString errorDescription);
- #endif
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     void _q_deviceFound(const QString &address, const QVariantMap &dict);
-     void _q_propertyChanged(const QString &name, const QDBusVariant &value);
- #endif
-@@ -100,7 +100,7 @@ private:
-     bool pendingCancel;
-     bool pendingStart;
- 
--#if !defined(QT_NO_DBUS)
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     OrgBluezManagerInterface *manager;
-     OrgBluezAdapterInterface *adapter;
- #endif
-diff --git a/src/connectivity/bluetooth/qbluetoothlocaldevice_p.h b/src/connectivity/bluetooth/qbluetoothlocaldevice_p.h
-index 750c286..381d6b5 100644
---- a/src/connectivity/bluetooth/qbluetoothlocaldevice_p.h
-+++ b/src/connectivity/bluetooth/qbluetoothlocaldevice_p.h
-@@ -51,7 +51,7 @@
- #include <btengsettings.h>
- #endif
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- #include <QObject>
- #include <QDBusContext>
- #include <QDBusObjectPath>
-@@ -68,7 +68,7 @@ QTM_BEGIN_NAMESPACE
- 
- class QBluetoothAddress;
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- class QBluetoothLocalDevicePrivate : public QObject,
-                                      protected QDBusContext
- {
-diff --git a/src/connectivity/bluetooth/qbluetoothservicediscoveryagent.h b/src/connectivity/bluetooth/qbluetoothservicediscoveryagent.h
-index 6279432..7eeccfc 100644
---- a/src/connectivity/bluetooth/qbluetoothservicediscoveryagent.h
-+++ b/src/connectivity/bluetooth/qbluetoothservicediscoveryagent.h
-@@ -105,7 +105,7 @@ private:
-     Q_PRIVATE_SLOT(d_func(), void _q_deviceDiscovered(const QBluetoothDeviceInfo &info))
-     Q_PRIVATE_SLOT(d_func(), void _q_deviceDiscoveryFinished())
-     Q_PRIVATE_SLOT(d_func(), void _q_serviceDiscoveryFinished())
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     Q_PRIVATE_SLOT(d_func(), void _q_discoveredServices(QDBusPendingCallWatcher*))
-     Q_PRIVATE_SLOT(d_func(), void _q_createdDevice(QDBusPendingCallWatcher*))
- #endif
-diff --git a/src/connectivity/bluetooth/qbluetoothservicediscoveryagent_p.h b/src/connectivity/bluetooth/qbluetoothservicediscoveryagent_p.h
-index 5e7da43..f25c293 100644
---- a/src/connectivity/bluetooth/qbluetoothservicediscoveryagent_p.h
-+++ b/src/connectivity/bluetooth/qbluetoothservicediscoveryagent_p.h
-@@ -53,7 +53,7 @@
- #include <btsdp.h>
- #endif
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- class OrgBluezManagerInterface;
- class OrgBluezAdapterInterface;
- class OrgBluezDeviceInterface;
-@@ -99,7 +99,7 @@ public:
-     void _q_deviceDiscoveryFinished();
-     void _q_deviceDiscovered(const QBluetoothDeviceInfo &info);
-     void _q_serviceDiscoveryFinished();
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     void _q_discoveredServices(QDBusPendingCallWatcher *watcher);
-     void _q_createdDevice(QDBusPendingCallWatcher *watcher);
- #endif
-@@ -123,7 +123,7 @@ private:
- #ifdef QTM_SYMBIAN_BLUETOOTH
-     void startL(const QBluetoothAddress &address);
-     void initL(const QBluetoothAddress &address);
--#elif !defined(QT_NO_DBUS)
-+#elif defined(QTM_BLUEZ_BLUETOOTH)
-     QVariant readAttributeValue(QXmlStreamReader &xml);
- #endif
- 
-@@ -153,7 +153,7 @@ private:
-     TSdpAttributeID m_currentAttributeId;
- 
-     QStack<QVariant> m_stack;
--#elif !defined(QT_NO_DBUS)
-+#elif defined(QTM_BLUEZ_BLUETOOTH)
-     OrgBluezManagerInterface *manager;
-     OrgBluezAdapterInterface *adapter;
-     OrgBluezDeviceInterface *device;
-diff --git a/src/connectivity/bluetooth/qbluetoothserviceinfo_p.cpp b/src/connectivity/bluetooth/qbluetoothserviceinfo_p.cpp
-index 814458c..dd96dcc 100644
---- a/src/connectivity/bluetooth/qbluetoothserviceinfo_p.cpp
-+++ b/src/connectivity/bluetooth/qbluetoothserviceinfo_p.cpp
-@@ -79,7 +79,7 @@ void QBluetoothServiceInfoPrivate::removeRegisteredAttribute(quint16 attributeId
-     Q_UNUSED(attributeId);
- }
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- bool QBluetoothServiceInfoPrivate::registerService() const
- {
-     return false;
-diff --git a/src/connectivity/bluetooth/qbluetoothserviceinfo_p.h b/src/connectivity/bluetooth/qbluetoothserviceinfo_p.h
-index 5be7341..8e4254c 100644
---- a/src/connectivity/bluetooth/qbluetoothserviceinfo_p.h
-+++ b/src/connectivity/bluetooth/qbluetoothserviceinfo_p.h
-@@ -72,7 +72,7 @@ public:
- 
-     bool ensureSdpConnection() const;
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     bool registerService() const;
- #endif
- 
-@@ -89,7 +89,7 @@ public:
-     mutable TSdpServRecordHandle serviceRecord;
- #endif
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     mutable OrgBluezServiceInterface *service;
-     mutable quint32 serviceRecord;
-     mutable bool registered;
-diff --git a/src/connectivity/bluetooth/ql2capserver.h b/src/connectivity/bluetooth/ql2capserver.h
-index 99c20a5..bed65a3 100644
---- a/src/connectivity/bluetooth/ql2capserver.h
-+++ b/src/connectivity/bluetooth/ql2capserver.h
-@@ -97,7 +97,7 @@ private:
-     Q_PRIVATE_SLOT(d_func(), void _q_disconnected())
- #endif //QTM_SYMBIAN_BLUETOOTH
-     
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     Q_PRIVATE_SLOT(d_func(), void _q_newConnection())
- #endif
- 
-diff --git a/src/connectivity/bluetooth/ql2capserver_p.cpp b/src/connectivity/bluetooth/ql2capserver_p.cpp
-index 3a2199f..f19977e 100644
---- a/src/connectivity/bluetooth/ql2capserver_p.cpp
-+++ b/src/connectivity/bluetooth/ql2capserver_p.cpp
-@@ -101,7 +101,7 @@ QBluetooth::SecurityFlags QL2capServer::securityFlags() const
- 
- 
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- void QL2capServerPrivate::_q_newConnection()
- {
- }
-diff --git a/src/connectivity/bluetooth/ql2capserver_p.h b/src/connectivity/bluetooth/ql2capserver_p.h
-index b5e76d9..2823106 100644
---- a/src/connectivity/bluetooth/ql2capserver_p.h
-+++ b/src/connectivity/bluetooth/ql2capserver_p.h
-@@ -50,7 +50,7 @@
- #include <bt_sock.h>
- #endif //QTM_SYMBIAN_BLUETOOTH
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- QT_FORWARD_DECLARE_CLASS(QSocketNotifier)
- #endif
- 
-@@ -82,7 +82,7 @@ public:
-     void _q_disconnected();
- #endif //QTM_SYMBIAN_BLUETOOTH
-     
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     void _q_newConnection();
- #endif
- 
-@@ -103,7 +103,7 @@ protected:
-     QL2capServer *q_ptr;
- 
- private:
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     QSocketNotifier *socketNotifier;
- #endif
- };
-diff --git a/src/connectivity/bluetooth/qrfcommserver.h b/src/connectivity/bluetooth/qrfcommserver.h
-index 3f348dd..7974ba6 100644
---- a/src/connectivity/bluetooth/qrfcommserver.h
-+++ b/src/connectivity/bluetooth/qrfcommserver.h
-@@ -97,7 +97,7 @@ private:
-     Q_PRIVATE_SLOT(d_func(), void _q_disconnected())
- #endif //QTM_SYMBIAN_BLUETOOTH  
-     
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     Q_PRIVATE_SLOT(d_func(), void _q_newConnection())
- #endif
- };
-diff --git a/src/connectivity/bluetooth/qrfcommserver_p.cpp b/src/connectivity/bluetooth/qrfcommserver_p.cpp
-index f8145d9..eb14d64 100644
---- a/src/connectivity/bluetooth/qrfcommserver_p.cpp
-+++ b/src/connectivity/bluetooth/qrfcommserver_p.cpp
-@@ -90,7 +90,7 @@ quint16 QRfcommServer::serverPort() const
- }
- 
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- void QRfcommServerPrivate::_q_newConnection()
- {
- }
-diff --git a/src/connectivity/bluetooth/qrfcommserver_p.h b/src/connectivity/bluetooth/qrfcommserver_p.h
-index da6e28b..af40df7 100644
---- a/src/connectivity/bluetooth/qrfcommserver_p.h
-+++ b/src/connectivity/bluetooth/qrfcommserver_p.h
-@@ -51,7 +51,7 @@
- #include <bt_sock.h>
- #endif
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
- QT_FORWARD_DECLARE_CLASS(QSocketNotifier)
- #endif
- 
-@@ -83,7 +83,7 @@ public:
-     void _q_disconnected();
- #endif //QTM_SYMBIAN_BLUETOOTH
- 
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     void _q_newConnection();
- #endif
- 
-@@ -102,7 +102,7 @@ protected:
-     QRfcommServer *q_ptr;
- 
- private:
--#ifndef QT_NO_DBUS
-+#ifdef QTM_BLUEZ_BLUETOOTH
-     QSocketNotifier *socketNotifier;
- #endif
- };
-diff --git a/tests/tests.pro b/tests/tests.pro
-index 2f2c355..4800e5e 100644
---- a/tests/tests.pro
-+++ b/tests/tests.pro
-@@ -16,7 +16,9 @@ contains(mobility_modules,systeminfo): SUBDIRS += sysinfo-tester
- contains(mobility_modules,connectivity) {
-     SUBDIRS += nfctestserver
- 
--    linux*:!linux-armcc: SUBDIRS += btclient
-+    linux*:!linux-armcc:contains(bluez_enabled, yes):contains(QT_CONFIG, dbus) {
-+        SUBDIRS += btclient
-+    }
- }
- 
- symbian {
--- 
-1.7.1
-
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix_metaobjectbuilder_build_err.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix_metaobjectbuilder_build_err.patch
deleted file mode 100644
index cffb067..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/fix_metaobjectbuilder_build_err.patch
+++ /dev/null
@@ -1,4707 +0,0 @@ 
-Fix metaobjectbuilder build errors against Qt 4.8 and 4.7
-
-Error message:
-ipc/qmetaobjectbuilder.cpp:803:65: error: invalid conversion from \
-'QMetaObjectExtraData::StaticMetacallFunction {aka void (*)(QObject*, \
-QMetaObject::Call, int, void**)}' to 'QtMobility::QMetaObjectBuilder:: \
-StaticMetacallFunction {aka int (*)(QMetaObject::Call, int, void**)}
-
-Upstream-commit:
-http://qt.gitorious.org/qt-mobility/qt-mobility/commit/f102053b28009b3094b0e5777177208afa6097c5
-
-Task-number: QTMOBILITY-1990
-
-Upstream-Status: Backport
-
-Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com>
-------------------------------------------------------
-diff --git a/plugins/declarative/common/dynamicproperties.pri b/plugins/declarative/common/dynamicproperties.pri
-index 52737a3..4bd06de 100644
---- a/plugins/declarative/common/dynamicproperties.pri
-+++ b/plugins/declarative/common/dynamicproperties.pri
-@@ -1,6 +1,8 @@
- INCLUDEPATH += ../../../plugins/declarative/common/dynamicproperties/
--HEADERS += ../../../plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject_p.h \
--	   ../../../plugins/declarative/common/dynamicproperties/qmetaobjectbuilder_p.h
--SOURCES += ../../../plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject.cpp \
--           ../../../src/serviceframework/ipc/qmetaobjectbuilder.cpp
--
-+HEADERS += ../../../plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject_p.h
-+SOURCES += ../../../plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject.cpp
-+include(../../../src/serviceframework/ipc/metaobjectbuilder.pri)
-+INCLUDEPATH += ../../../src/serviceframework/$$OBJECTBUILDER_INCLUDEPATH
-+DEPENDPATH += ../../../src/serviceframework/$$OBJECTBUILDER_DEPENDPATH
-+HEADERS += ../../../src/serviceframework/$$OBJECTBUILDER_HEADERS
-+SOURCES += ../../../src/serviceframework/$$OBJECTBUILDER_SOURCES
-diff --git a/plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject.cpp b/plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject.cpp
-index 79a2064..9eb6810 100644
---- a/plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject.cpp
-+++ b/plugins/declarative/common/dynamicproperties/qdeclarativeopenmetaobject.cpp
-@@ -65,8 +65,7 @@ public:
-     {
-         int id = mob.propertyCount();
-         mob.addSignal("__" + QByteArray::number(id) + "()");
--        QMetaPropertyBuilder build = mob.addProperty(name, type, id);
--        build.setDynamic(true);
-+        mob.addProperty(name, type, id);
-         qFree(mem);
-         mem = mob.toMetaObject();
- 
-diff --git a/plugins/declarative/common/dynamicproperties/qmetaobjectbuilder_p.h b/plugins/declarative/common/dynamicproperties/qmetaobjectbuilder_p.h
-deleted file mode 100644
-index bd937e4..0000000
---- a/plugins/declarative/common/dynamicproperties/qmetaobjectbuilder_p.h
-+++ /dev/null
-@@ -1,48 +0,0 @@
--/****************************************************************************
--**
--** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
--** All rights reserved.
--** Contact: Nokia Corporation (qt-info@nokia.com)
--**
--** This file is part of the Qt Mobility Components.
--**
--** $QT_BEGIN_LICENSE:LGPL$
--** No Commercial Usage
--** This file contains pre-release code and may not be distributed.
--** You may use this file in accordance with the terms and conditions
--** contained in the Technology Preview License Agreement accompanying
--** this package.
--**
--** 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, Nokia gives you certain additional
--** rights.  These rights are described in the Nokia Qt LGPL Exception
--** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
--**
--** If you have questions regarding the use of this file, please contact
--** Nokia at qt-info@nokia.com.
--**
--**
--**
--**
--**
--**
--**
--**
--** $QT_END_LICENSE$
--**
--****************************************************************************/
--
--/*
--This header gets used in a number of different QML plugins
--and also in the source tree of Mobility itself.
--
--So this header is just a wrapper to grab it from there.
--*/
--#include "../../../../src/serviceframework/ipc/qmetaobjectbuilder_p.h"
-diff --git a/src/serviceframework/ipc/ipc.pri b/src/serviceframework/ipc/ipc.pri
-index 28b910f..d809f59 100644
---- a/src/serviceframework/ipc/ipc.pri
-+++ b/src/serviceframework/ipc/ipc.pri
-@@ -25,9 +25,14 @@ else {
-     }
- }
- 
-+include(metaobjectbuilder.pri)
-+INCLUDEPATH += $$OBJECTBUILDER_INCLUDEPATH
-+DEPENDPATH += $$OBJECTBUILDER_DEPENDPATH
-+PRIVATE_HEADERS += $$OBJECTBUILDER_HEADERS
-+SOURCES += $$OBJECTBUILDER_SOURCES
-+
- PRIVATE_HEADERS += ipc/qslotinvoker_p.h \
-     ipc/qsignalintercepter_p.h \
--    ipc/qmetaobjectbuilder_p.h \
-     ipc/instancemanager_p.h \
-     ipc/qservicepackage_p.h \
-     ipc/proxyobject_p.h \
-@@ -37,7 +42,6 @@ PRIVATE_HEADERS += ipc/qslotinvoker_p.h \
- 
- SOURCES += ipc/qslotinvoker.cpp \
-     ipc/qsignalintercepter.cpp \
--    ipc/qmetaobjectbuilder.cpp \
-     ipc/instancemanager.cpp \
-     ipc/qservicepackage.cpp \
-     ipc/proxyobject.cpp \
-diff --git a/src/serviceframework/ipc/metaobjectbuilder.pri b/src/serviceframework/ipc/metaobjectbuilder.pri
-new file mode 100644
-index 0000000..cc905f9
---- /dev/null
-+++ b/src/serviceframework/ipc/metaobjectbuilder.pri
-@@ -0,0 +1,12 @@
-+#check version for 4.7 ...
-+contains(QT_MAJOR_VERSION, 4):lessThan(QT_MINOR_VERSION, 8) {
-+  OBJECTBUILDER_INCLUDEPATH += ipc
-+  OBJECTBUILDER_DEPENDPATH += ipc
-+  OBJECTBUILDER_HEADERS += ipc/qmetaobjectbuilder_47_p.h
-+  OBJECTBUILDER_SOURCES += ipc/qmetaobjectbuilder_47.cpp
-+} else {
-+  OBJECTBUILDER_INCLUDEPATH += ipc
-+  OBJECTBUILDER_DEPENDPATH += ipc
-+  OBJECTBUILDER_HEADERS += ipc/qmetaobjectbuilder_p.h
-+  OBJECTBUILDER_SOURCES += ipc/qmetaobjectbuilder.cpp
-+}
-diff --git a/src/serviceframework/ipc/qmetaobjectbuilder.cpp b/src/serviceframework/ipc/qmetaobjectbuilder.cpp
-index b19eb1a..6ffaa20 100644
---- a/src/serviceframework/ipc/qmetaobjectbuilder.cpp
-+++ b/src/serviceframework/ipc/qmetaobjectbuilder.cpp
-@@ -117,6 +117,8 @@ enum PropertyFlags  {
-     EnumOrFlag = 0x00000008,
-     StdCppSet = 0x00000100,
- //    Override = 0x00000200,
-+    Constant = 0x00000400,
-+    Final = 0x00000800,
-     Designable = 0x00001000,
-     ResolveDesignable = 0x00002000,
-     Scriptable = 0x00004000,
-@@ -128,7 +130,7 @@ enum PropertyFlags  {
-     User = 0x00100000,
-     ResolveUser = 0x00200000,
-     Notify = 0x00400000,
--    Dynamic = 0x00800000
-+    Revisioned = 0x00800000
- };
- 
- enum MethodFlags  {
-@@ -145,7 +147,8 @@ enum MethodFlags  {
- 
-     MethodCompatibility = 0x10,
-     MethodCloned = 0x20,
--    MethodScriptable = 0x40
-+    MethodScriptable = 0x40,
-+    MethodRevisioned = 0x80
- };
- 
- struct QMetaObjectPrivate
-@@ -623,6 +626,8 @@ QMetaPropertyBuilder QMetaObjectBuilder::addProperty(const QMetaProperty& protot
-     property.setUser(prototype.isUser());
-     property.setStdCppSet(prototype.hasStdCppSet());
-     property.setEnumOrFlag(prototype.isEnumType());
-+    property.setConstant(prototype.isConstant());
-+    property.setFinal(prototype.isFinal());
-     if (prototype.hasNotifySignal()) {
-         // Find an existing method for the notify signal, or add a new one.
-         QMetaMethod method = prototype.notifySignal();
-@@ -796,7 +801,7 @@ void QMetaObjectBuilder::addMetaObject
-     }
- 
-     if ((members & StaticMetacall) != 0) {
--        if (priv(prototype->d.data)->revision >= 2) {
-+        if (priv(prototype->d.data)->revision >= 6) {
-             const QMetaObjectExtraData *extra =
-                 (const QMetaObjectExtraData *)(prototype->d.extradata);
-             if (extra && extra->static_metacall)
-@@ -1266,8 +1271,8 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
-     char *str = reinterpret_cast<char *>(buf + size);
-     if (buf) {
-         if (relocatable) {
--            meta->d.stringdata = reinterpret_cast<const char *>((intptr_t)size);
--            meta->d.data = reinterpret_cast<uint *>((intptr_t)pmetaSize);
-+            meta->d.stringdata = reinterpret_cast<const char *>((quintptr)size);
-+            meta->d.data = reinterpret_cast<uint *>((quintptr)pmetaSize);
-         } else {
-             meta->d.stringdata = str;
-             meta->d.data = reinterpret_cast<uint *>(data);
-@@ -1504,8 +1509,8 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output,
-     const char *buf = data.constData();
-     const QMetaObject *dataMo = reinterpret_cast<const QMetaObject *>(buf);
- 
--    intptr_t stringdataOffset = (intptr_t)dataMo->d.stringdata;
--    intptr_t dataOffset = (intptr_t)dataMo->d.data;
-+    quintptr stringdataOffset = (quintptr)dataMo->d.stringdata;
-+    quintptr dataOffset = (quintptr)dataMo->d.data;
- 
-     output->d.superdata = superclass;
-     output->d.stringdata = buf + stringdataOffset;
-@@ -2289,16 +2294,27 @@ bool QMetaPropertyBuilder::isEnumOrFlag() const
- }
- 
- /*!
--    Returns true if the property has the dynamic flag set;
--    otherwise returns false.  The default value is false.
-+    Returns true if the property is constant; otherwise returns false.
-+    The default value is false.
-+*/
-+bool QMetaPropertyBuilder::isConstant() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Constant);
-+    else
-+        return false;
-+}
- 
--    \sa setDynamic()
-+/*!
-+    Returns true if the property is final; otherwise returns false.
-+    The default value is false.
- */
--bool QMetaPropertyBuilder::isDynamic() const
-+bool QMetaPropertyBuilder::isFinal() const
- {
-     QMetaPropertyBuilderPrivate *d = d_func();
-     if (d)
--        return d->flag(Dynamic);
-+        return d->flag(Final);
-     else
-         return false;
- }
-@@ -2427,16 +2443,27 @@ void QMetaPropertyBuilder::setEnumOrFlag(bool value)
- }
- 
- /*!
--    Sets this property to have the dynamic flag if \a value is
--    true.
-+    Sets the \c CONSTANT flag on this property to \a value.
-+
-+    \sa isConstant()
-+*/
-+void QMetaPropertyBuilder::setConstant(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Constant, value);
-+}
-+
-+/*!
-+    Sets the \c FINAL flag on this property to \a value.
- 
--    \sa isDynamic()
-+    \sa isFinal()
- */
--void QMetaPropertyBuilder::setDynamic(bool value)
-+void QMetaPropertyBuilder::setFinal(bool value)
- {
-     QMetaPropertyBuilderPrivate *d = d_func();
-     if (d)
--        d->setFlag(Dynamic, value);
-+        d->setFlag(Final, value);
- }
- 
- /*!
-diff --git a/src/serviceframework/ipc/qmetaobjectbuilder_47.cpp b/src/serviceframework/ipc/qmetaobjectbuilder_47.cpp
-new file mode 100644
-index 0000000..509d6c6
---- /dev/null
-+++ b/src/serviceframework/ipc/qmetaobjectbuilder_47.cpp
-@@ -0,0 +1,2583 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-+** All rights reserved.
-+** Contact: Nokia Corporation (qt-info@nokia.com)
-+**
-+** This file is part of the QtDeclarative module of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** No Commercial Usage
-+** This file contains pre-release code and may not be distributed.
-+** You may use this file in accordance with the terms and conditions
-+** contained in the Technology Preview License Agreement accompanying
-+** this package.
-+**
-+** 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, Nokia gives you certain additional
-+** rights.  These rights are described in the Nokia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** If you have questions regarding the use of this file, please contact
-+** Nokia at qt-info@nokia.com.
-+**
-+**
-+**
-+**
-+**
-+**
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qmetaobjectbuilder_47_p.h"
-+#include <QDebug>
-+
-+#ifndef Q_OS_WIN
-+#include <stdint.h>
-+#endif
-+
-+QTM_BEGIN_NAMESPACE
-+
-+/*!
-+    \class QMetaObjectBuilder
-+    \internal
-+    \brief The QMetaObjectBuilder class supports building QMetaObject objects at runtime.
-+    \since 1.1
-+
-+*/
-+
-+/*!
-+    \enum QMetaObjectBuilder::AddMember
-+    This enum defines which members of QMetaObject should be copied by QMetaObjectBuilder::addMetaObject()
-+
-+    \value ClassName Add the class name.
-+    \value SuperClass Add the super class.
-+    \value Methods Add methods that aren't signals or slots.
-+    \value Signals Add signals.
-+    \value Slots Add slots.
-+    \value Constructors Add constructors.
-+    \value Properties Add properties.
-+    \value Enumerators Add enumerators.
-+    \value ClassInfos Add items of class information.
-+    \value RelatedMetaObjects Add related meta objects.
-+    \value StaticMetacall Add the static metacall function.
-+    \value PublicMethods Add public methods (ignored for signals).
-+    \value ProtectedMethods Add protected methods (ignored for signals).
-+    \value PrivateMethods All private methods (ignored for signals).
-+    \value AllMembers Add all members.
-+    \value AllPrimaryMembers Add everything except the class name, super class, and static metacall function.
-+*/
-+
-+// copied from moc's generator.cpp
-+uint qvariant_nameToType(const char* name)
-+{
-+    if (!name)
-+        return 0;
-+
-+    if (strcmp(name, "QVariant") == 0)
-+        return 0xffffffff;
-+    if (strcmp(name, "QCString") == 0)
-+        return QMetaType::QByteArray;
-+    if (strcmp(name, "Q_LLONG") == 0)
-+        return QMetaType::LongLong;
-+    if (strcmp(name, "Q_ULLONG") == 0)
-+        return QMetaType::ULongLong;
-+    if (strcmp(name, "QIconSet") == 0)
-+        return QMetaType::QIcon;
-+
-+    uint tp = QMetaType::type(name);
-+    return tp < QMetaType::User ? tp : 0;
-+}
-+
-+/*
-+  Returns true if the type is a QVariant types.
-+*/
-+bool isVariantType(const char* type)
-+{
-+    return qvariant_nameToType(type) != 0;
-+}
-+
-+// copied from qmetaobject.cpp
-+// do not touch without touching the moc as well
-+enum PropertyFlags  {
-+    Invalid = 0x00000000,
-+    Readable = 0x00000001,
-+    Writable = 0x00000002,
-+    Resettable = 0x00000004,
-+    EnumOrFlag = 0x00000008,
-+    StdCppSet = 0x00000100,
-+//    Override = 0x00000200,
-+    Designable = 0x00001000,
-+    ResolveDesignable = 0x00002000,
-+    Scriptable = 0x00004000,
-+    ResolveScriptable = 0x00008000,
-+    Stored = 0x00010000,
-+    ResolveStored = 0x00020000,
-+    Editable = 0x00040000,
-+    ResolveEditable = 0x00080000,
-+    User = 0x00100000,
-+    ResolveUser = 0x00200000,
-+    Notify = 0x00400000,
-+    Dynamic = 0x00800000
-+};
-+
-+enum MethodFlags  {
-+    AccessPrivate = 0x00,
-+    AccessProtected = 0x01,
-+    AccessPublic = 0x02,
-+    AccessMask = 0x03, //mask
-+
-+    MethodMethod = 0x00,
-+    MethodSignal = 0x04,
-+    MethodSlot = 0x08,
-+    MethodConstructor = 0x0c,
-+    MethodTypeMask = 0x0c,
-+
-+    MethodCompatibility = 0x10,
-+    MethodCloned = 0x20,
-+    MethodScriptable = 0x40
-+};
-+
-+struct QMetaObjectPrivate
-+{
-+    int revision;
-+    int className;
-+    int classInfoCount, classInfoData;
-+    int methodCount, methodData;
-+    int propertyCount, propertyData;
-+    int enumeratorCount, enumeratorData;
-+    int constructorCount, constructorData;
-+    int flags;
-+};
-+
-+static inline const QMetaObjectPrivate *priv(const uint* data)
-+{ return reinterpret_cast<const QMetaObjectPrivate*>(data); }
-+// end of copied lines from qmetaobject.cpp
-+
-+class QMetaMethodBuilderPrivate
-+{
-+public:
-+    QMetaMethodBuilderPrivate
-+            (QMetaMethod::MethodType _methodType,
-+             const QByteArray& _signature,
-+             const QByteArray& _returnType = QByteArray(),
-+             QMetaMethod::Access _access = QMetaMethod::Public)
-+        : signature(QMetaObject::normalizedSignature(_signature.constData())),
-+          returnType(QMetaObject::normalizedType(_returnType)),
-+          attributes(((int)_access) | (((int)_methodType) << 2))
-+    {
-+    }
-+
-+    QByteArray signature;
-+    QByteArray returnType;
-+    QList<QByteArray> parameterNames;
-+    QByteArray tag;
-+    int attributes;
-+
-+    QMetaMethod::MethodType methodType() const
-+    {
-+        return (QMetaMethod::MethodType)((attributes & MethodTypeMask) >> 2);
-+    }
-+
-+    QMetaMethod::Access access() const
-+    {
-+        return (QMetaMethod::Access)(attributes & AccessMask);
-+    }
-+
-+    void setAccess(QMetaMethod::Access value)
-+    {
-+        attributes = ((attributes & ~AccessMask) | (int)value);
-+    }
-+};
-+
-+class QMetaPropertyBuilderPrivate
-+{
-+public:
-+    QMetaPropertyBuilderPrivate
-+            (const QByteArray& _name, const QByteArray& _type, int notifierIdx=-1)
-+        : name(_name),
-+          type(QMetaObject::normalizedType(_type.constData())),
-+          flags(Readable | Writable | Scriptable), notifySignal(-1)
-+    {
-+        if (notifierIdx >= 0) {
-+            flags |= Notify;
-+            notifySignal = notifierIdx;
-+        }
-+    }
-+
-+    QByteArray name;
-+    QByteArray type;
-+    int flags;
-+    int notifySignal;
-+
-+    bool flag(int f) const
-+    {
-+        return ((flags & f) != 0);
-+    }
-+
-+    void setFlag(int f, bool value)
-+    {
-+        if (value)
-+            flags |= f;
-+        else
-+            flags &= ~f;
-+    }
-+};
-+
-+class QMetaEnumBuilderPrivate
-+{
-+public:
-+    QMetaEnumBuilderPrivate(const QByteArray& _name)
-+        : name(_name), isFlag(false)
-+    {
-+    }
-+
-+    QByteArray name;
-+    bool isFlag;
-+    QList<QByteArray> keys;
-+    QList<int> values;
-+};
-+
-+class QMetaObjectBuilderPrivate
-+{
-+public:
-+    QMetaObjectBuilderPrivate()
-+        : flags(0)
-+    {
-+        superClass = &QObject::staticMetaObject;
-+        staticMetacallFunction = 0;
-+    }
-+
-+    QByteArray className;
-+    const QMetaObject *superClass;
-+    QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction;
-+    QList<QMetaMethodBuilderPrivate> methods;
-+    QList<QMetaMethodBuilderPrivate> constructors;
-+    QList<QMetaPropertyBuilderPrivate> properties;
-+    QList<QByteArray> classInfoNames;
-+    QList<QByteArray> classInfoValues;
-+    QList<QMetaEnumBuilderPrivate> enumerators;
-+#ifdef Q_NO_DATA_RELOCATION
-+    QList<QMetaObjectAccessor> relatedMetaObjects;
-+#else
-+    QList<const QMetaObject *> relatedMetaObjects;
-+#endif
-+    int flags;
-+};
-+
-+/*!
-+    Constructs a new QMetaObjectBuilder.
-+*/
-+QMetaObjectBuilder::QMetaObjectBuilder()
-+{
-+    d = new QMetaObjectBuilderPrivate();
-+}
-+
-+/*!
-+    Constructs a new QMetaObjectBuilder which is a copy of the
-+    meta object information in \a prototype.  Note: the super class
-+    contents for \a prototype are not copied, only the immediate
-+    class that is defined by \a prototype.
-+
-+    The \a members parameter indicates which members of \a prototype
-+    should be added.  The default is AllMembers.
-+
-+    \sa addMetaObject()
-+*/
-+QMetaObjectBuilder::QMetaObjectBuilder
-+    (const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members)
-+{
-+    d = new QMetaObjectBuilderPrivate();
-+    addMetaObject(prototype, members);
-+}
-+
-+/*!
-+    Destroys this meta object builder.
-+*/
-+QMetaObjectBuilder::~QMetaObjectBuilder()
-+{
-+    delete d;
-+}
-+
-+/*!
-+    Returns the name of the class being constructed by this
-+    meta object builder.  The default value is an empty QByteArray.
-+
-+    \sa setClassName(), superClass()
-+*/
-+QByteArray QMetaObjectBuilder::className() const
-+{
-+    return d->className;
-+}
-+
-+/*!
-+    Sets the \a name of the class being constructed by this
-+    meta object builder.
-+
-+    \sa className(), setSuperClass()
-+*/
-+void QMetaObjectBuilder::setClassName(const QByteArray& name)
-+{
-+    d->className = name;
-+}
-+
-+/*!
-+    Returns the superclass meta object of the class being constructed
-+    by this meta object builder.  The default value is the meta object
-+    for QObject.
-+
-+    \sa setSuperClass(), className()
-+*/
-+const QMetaObject *QMetaObjectBuilder::superClass() const
-+{
-+    return d->superClass;
-+}
-+
-+/*!
-+    Sets the superclass meta object of the class being constructed
-+    by this meta object builder to \a meta.  The \a meta parameter
-+    must not be null.
-+
-+    \sa superClass(), setClassName()
-+*/
-+void QMetaObjectBuilder::setSuperClass(const QMetaObject *meta)
-+{
-+    Q_ASSERT(meta);
-+    d->superClass = meta;
-+}
-+
-+/*!
-+    Returns the flags of the class being constructed by this meta object
-+    builder.
-+
-+    \sa setFlags()
-+*/
-+QMetaObjectBuilder::MetaObjectFlags QMetaObjectBuilder::flags() const
-+{
-+    return (QMetaObjectBuilder::MetaObjectFlags)d->flags;
-+}
-+
-+/*!
-+    Sets the \a flags of the class being constructed by this meta object
-+    builder.
-+
-+    \sa flags()
-+*/
-+void QMetaObjectBuilder::setFlags(MetaObjectFlags flags)
-+{
-+    d->flags = flags;
-+}
-+
-+/*!
-+    Returns the number of methods in this class, excluding the number
-+    of methods in the base class.  These include signals and slots
-+    as well as normal member functions.
-+
-+    \sa addMethod(), method(), removeMethod(), indexOfMethod()
-+*/
-+int QMetaObjectBuilder::methodCount() const
-+{
-+    return d->methods.size();
-+}
-+
-+/*!
-+    Returns the number of constructors in this class.
-+
-+    \sa addConstructor(), constructor(), removeConstructor(), indexOfConstructor()
-+*/
-+int QMetaObjectBuilder::constructorCount() const
-+{
-+    return d->constructors.size();
-+}
-+
-+/*!
-+    Returns the number of properties in this class, excluding the number
-+    of properties in the base class.
-+
-+    \sa addProperty(), property(), removeProperty(), indexOfProperty()
-+*/
-+int QMetaObjectBuilder::propertyCount() const
-+{
-+    return d->properties.size();
-+}
-+
-+/*!
-+    Returns the number of enumerators in this class, excluding the
-+    number of enumerators in the base class.
-+
-+    \sa addEnumerator(), enumerator(), removeEnumerator()
-+    \sa indexOfEnumerator()
-+*/
-+int QMetaObjectBuilder::enumeratorCount() const
-+{
-+    return d->enumerators.size();
-+}
-+
-+/*!
-+    Returns the number of items of class information in this class,
-+    exclusing the number of items of class information in the base class.
-+
-+    \sa addClassInfo(), classInfoName(), classInfoValue(), removeClassInfo()
-+    \sa indexOfClassInfo()
-+*/
-+int QMetaObjectBuilder::classInfoCount() const
-+{
-+    return d->classInfoNames.size();
-+}
-+
-+/*!
-+    Returns the number of related meta objects that are associated
-+    with this class.
-+
-+    Related meta objects are used when resolving the enumerated type
-+    associated with a property, where the enumerated type is in a
-+    different class from the property.
-+
-+    \sa addRelatedMetaObject(), relatedMetaObject()
-+    \sa removeRelatedMetaObject()
-+*/
-+int QMetaObjectBuilder::relatedMetaObjectCount() const
-+{
-+    return d->relatedMetaObjects.size();
-+}
-+
-+/*!
-+    Adds a new public method to this class with the specified \a signature.
-+    Returns an object that can be used to adjust the other attributes
-+    of the method.  The \a signature will be normalized before it is
-+    added to the class.
-+
-+    \sa method(), methodCount(), removeMethod(), indexOfMethod()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addMethod(const QByteArray& signature)
-+{
-+    int index = d->methods.size();
-+    d->methods.append(QMetaMethodBuilderPrivate(QMetaMethod::Method, signature));
-+    return QMetaMethodBuilder(this, index);
-+}
-+
-+/*!
-+    Adds a new public method to this class with the specified
-+    \a signature and \a returnType.  Returns an object that can be
-+    used to adjust the other attributes of the method.  The \a signature
-+    and \a returnType will be normalized before they are added to
-+    the class.  If \a returnType is empty, then it indicates that
-+    the method has \c{void} as its return type.
-+
-+    \sa method(), methodCount(), removeMethod(), indexOfMethod()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addMethod
-+    (const QByteArray& signature, const QByteArray& returnType)
-+{
-+    int index = d->methods.size();
-+    d->methods.append(QMetaMethodBuilderPrivate
-+        (QMetaMethod::Method, signature, returnType));
-+    return QMetaMethodBuilder(this, index);
-+}
-+
-+/*!
-+    Adds a new public method to this class that has the same information as
-+    \a prototype.  This is used to clone the methods of an existing
-+    QMetaObject.  Returns an object that can be used to adjust the
-+    attributes of the method.
-+
-+    This function will detect if \a prototype is an ordinary method,
-+    signal, slot, or constructor and act accordingly.
-+
-+    \sa method(), methodCount(), removeMethod(), indexOfMethod()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addMethod(const QMetaMethod& prototype)
-+{
-+    QMetaMethodBuilder method;
-+    if (prototype.methodType() == QMetaMethod::Method)
-+        method = addMethod(prototype.signature());
-+    else if (prototype.methodType() == QMetaMethod::Signal)
-+        method = addSignal(prototype.signature());
-+    else if (prototype.methodType() == QMetaMethod::Slot)
-+        method = addSlot(prototype.signature());
-+    else if (prototype.methodType() == QMetaMethod::Constructor)
-+        method = addConstructor(prototype.signature());
-+    method.setReturnType(prototype.typeName());
-+    method.setParameterNames(prototype.parameterNames());
-+    method.setTag(prototype.tag());
-+    method.setAccess(prototype.access());
-+    method.setAttributes(prototype.attributes());
-+    return method;
-+}
-+
-+/*!
-+    Adds a new public slot to this class with the specified \a signature.
-+    Returns an object that can be used to adjust the other attributes
-+    of the slot.  The \a signature will be normalized before it is
-+    added to the class.
-+
-+    \sa addMethod(), addSignal(), indexOfSlot()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addSlot(const QByteArray& signature)
-+{
-+    int index = d->methods.size();
-+    d->methods.append(QMetaMethodBuilderPrivate(QMetaMethod::Slot, signature));
-+    return QMetaMethodBuilder(this, index);
-+}
-+
-+/*!
-+    Adds a new signal to this class with the specified \a signature.
-+    Returns an object that can be used to adjust the other attributes
-+    of the signal.  The \a signature will be normalized before it is
-+    added to the class.
-+
-+    \sa addMethod(), addSlot(), indexOfSignal()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addSignal(const QByteArray& signature)
-+{
-+    int index = d->methods.size();
-+    d->methods.append(QMetaMethodBuilderPrivate
-+        (QMetaMethod::Signal, signature, QByteArray(), QMetaMethod::Protected));
-+    return QMetaMethodBuilder(this, index);
-+}
-+
-+/*!
-+    Adds a new constructor to this class with the specified \a signature.
-+    Returns an object that can be used to adjust the other attributes
-+    of the constructor.  The \a signature will be normalized before it is
-+    added to the class.
-+
-+    \sa constructor(), constructorCount(), removeConstructor()
-+    \sa indexOfConstructor()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addConstructor(const QByteArray& signature)
-+{
-+    int index = d->constructors.size();
-+    d->constructors.append(QMetaMethodBuilderPrivate(QMetaMethod::Constructor, signature));
-+    return QMetaMethodBuilder(this, -(index + 1));
-+}
-+
-+/*!
-+    Adds a new constructor to this class that has the same information as
-+    \a prototype.  This is used to clone the constructors of an existing
-+    QMetaObject.  Returns an object that can be used to adjust the
-+    attributes of the constructor.
-+
-+    This function requires that \a prototype be a constructor.
-+
-+    \sa constructor(), constructorCount(), removeConstructor()
-+    \sa indexOfConstructor()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::addConstructor(const QMetaMethod& prototype)
-+{
-+    Q_ASSERT(prototype.methodType() == QMetaMethod::Constructor);
-+    QMetaMethodBuilder ctor = addConstructor(prototype.signature());
-+    ctor.setReturnType(prototype.typeName());
-+    ctor.setParameterNames(prototype.parameterNames());
-+    ctor.setTag(prototype.tag());
-+    ctor.setAccess(prototype.access());
-+    ctor.setAttributes(prototype.attributes());
-+    return ctor;
-+}
-+
-+/*!
-+    Adds a new readable/writable property to this class with the
-+    specified \a name and \a type.  Returns an object that can be used
-+    to adjust the other attributes of the property.  The \a type will
-+    be normalized before it is added to the class. \a notifierId will
-+    be registered as the property's \e notify signal.
-+
-+    \sa property(), propertyCount(), removeProperty(), indexOfProperty()
-+*/
-+QMetaPropertyBuilder QMetaObjectBuilder::addProperty
-+    (const QByteArray& name, const QByteArray& type, int notifierId)
-+{
-+    int index = d->properties.size();
-+    d->properties.append(QMetaPropertyBuilderPrivate(name, type, notifierId));
-+    return QMetaPropertyBuilder(this, index);
-+}
-+
-+/*!
-+    Adds a new property to this class that has the same information as
-+    \a prototype.  This is used to clone the properties of an existing
-+    QMetaObject.  Returns an object that can be used to adjust the
-+    attributes of the property.
-+
-+    \sa property(), propertyCount(), removeProperty(), indexOfProperty()
-+*/
-+QMetaPropertyBuilder QMetaObjectBuilder::addProperty(const QMetaProperty& prototype)
-+{
-+    QMetaPropertyBuilder property = addProperty(prototype.name(), prototype.typeName());
-+    property.setReadable(prototype.isReadable());
-+    property.setWritable(prototype.isWritable());
-+    property.setResettable(prototype.isResettable());
-+    property.setDesignable(prototype.isDesignable());
-+    property.setScriptable(prototype.isScriptable());
-+    property.setStored(prototype.isStored());
-+    property.setEditable(prototype.isEditable());
-+    property.setUser(prototype.isUser());
-+    property.setStdCppSet(prototype.hasStdCppSet());
-+    property.setEnumOrFlag(prototype.isEnumType());
-+    if (prototype.hasNotifySignal()) {
-+        // Find an existing method for the notify signal, or add a new one.
-+        QMetaMethod method = prototype.notifySignal();
-+        int index = indexOfMethod(method.signature());
-+        if (index == -1)
-+            index = addMethod(method).index();
-+        d->properties[property._index].notifySignal = index;
-+        d->properties[property._index].setFlag(Notify, true);
-+    }
-+    return property;
-+}
-+
-+/*!
-+    Adds a new enumerator to this class with the specified
-+    \a name.  Returns an object that can be used to adjust
-+    the other attributes of the enumerator.
-+
-+    \sa enumerator(), enumeratorCount(), removeEnumerator(),
-+    \sa indexOfEnumerator()
-+*/
-+QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(const QByteArray& name)
-+{
-+    int index = d->enumerators.size();
-+    d->enumerators.append(QMetaEnumBuilderPrivate(name));
-+    return QMetaEnumBuilder(this, index);
-+}
-+
-+/*!
-+    Adds a new enumerator to this class that has the same information as
-+    \a prototype.  This is used to clone the enumerators of an existing
-+    QMetaObject.  Returns an object that can be used to adjust the
-+    attributes of the enumerator.
-+
-+    \sa enumerator(), enumeratorCount(), removeEnumerator(),
-+    \sa indexOfEnumerator()
-+*/
-+QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(const QMetaEnum& prototype)
-+{
-+    QMetaEnumBuilder en = addEnumerator(prototype.name());
-+    en.setIsFlag(prototype.isFlag());
-+    int count = prototype.keyCount();
-+    for (int index = 0; index < count; ++index)
-+        en.addKey(prototype.key(index), prototype.value(index));
-+    return en;
-+}
-+
-+/*!
-+    Adds \a name and \a value as an item of class information to this class.
-+    Returns the index of the new item of class information.
-+
-+    \sa classInfoCount(), classInfoName(), classInfoValue(), removeClassInfo()
-+    \sa indexOfClassInfo()
-+*/
-+int QMetaObjectBuilder::addClassInfo(const QByteArray& name, const QByteArray& value)
-+{
-+    int index = d->classInfoNames.size();
-+    d->classInfoNames += name;
-+    d->classInfoValues += value;
-+    return index;
-+}
-+
-+/*!
-+    Adds \a meta to this class as a related meta object.  Returns
-+    the index of the new related meta object entry.
-+
-+    Related meta objects are used when resolving the enumerated type
-+    associated with a property, where the enumerated type is in a
-+    different class from the property.
-+
-+    \sa relatedMetaObjectCount(), relatedMetaObject()
-+    \sa removeRelatedMetaObject()
-+*/
-+#ifdef Q_NO_DATA_RELOCATION
-+int QMetaObjectBuilder::addRelatedMetaObject(const QMetaObjectAccessor &meta)
-+#else
-+int QMetaObjectBuilder::addRelatedMetaObject(const QMetaObject *meta)
-+#endif
-+{
-+    Q_ASSERT(meta);
-+    int index = d->relatedMetaObjects.size();
-+    d->relatedMetaObjects.append(meta);
-+    return index;
-+}
-+
-+/*!
-+    Adds the contents of \a prototype to this meta object builder.
-+    This function is useful for cloning the contents of an existing QMetaObject.
-+
-+    The \a members parameter indicates which members of \a prototype
-+    should be added.  The default is AllMembers.
-+*/
-+void QMetaObjectBuilder::addMetaObject
-+        (const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members)
-+{
-+    Q_ASSERT(prototype);
-+    int index;
-+
-+    if ((members & ClassName) != 0)
-+        d->className = prototype->className();
-+
-+    if ((members & SuperClass) != 0)
-+        d->superClass = prototype->superClass();
-+
-+    if ((members & (Methods | Signals | Slots)) != 0) {
-+        for (index = prototype->methodOffset(); index < prototype->methodCount(); ++index) {
-+            QMetaMethod method = prototype->method(index);
-+            if (method.methodType() != QMetaMethod::Signal) {
-+                if (method.access() == QMetaMethod::Public && (members & PublicMethods) == 0)
-+                    continue;
-+                if (method.access() == QMetaMethod::Private && (members & PrivateMethods) == 0)
-+                    continue;
-+                if (method.access() == QMetaMethod::Protected && (members & ProtectedMethods) == 0)
-+                    continue;
-+            }
-+            if (method.methodType() == QMetaMethod::Method && (members & Methods) != 0) {
-+                addMethod(method);
-+            } else if (method.methodType() == QMetaMethod::Signal &&
-+                       (members & Signals) != 0) {
-+                addMethod(method);
-+            } else if (method.methodType() == QMetaMethod::Slot &&
-+                       (members & Slots) != 0) {
-+                addMethod(method);
-+            }
-+        }
-+    }
-+
-+    if ((members & Constructors) != 0) {
-+        for (index = 0; index < prototype->constructorCount(); ++index)
-+            addConstructor(prototype->constructor(index));
-+    }
-+
-+    if ((members & Properties) != 0) {
-+        for (index = prototype->propertyOffset(); index < prototype->propertyCount(); ++index)
-+            addProperty(prototype->property(index));
-+    }
-+
-+    if ((members & Enumerators) != 0) {
-+        for (index = prototype->enumeratorOffset(); index < prototype->enumeratorCount(); ++index)
-+            addEnumerator(prototype->enumerator(index));
-+    }
-+
-+    if ((members & ClassInfos) != 0) {
-+        for (index = prototype->classInfoOffset(); index < prototype->classInfoCount(); ++index) {
-+            QMetaClassInfo ci = prototype->classInfo(index);
-+            addClassInfo(ci.name(), ci.value());
-+        }
-+    }
-+
-+    if ((members & RelatedMetaObjects) != 0) {
-+#ifdef Q_NO_DATA_RELOCATION
-+        const QMetaObjectAccessor *objects = 0;
-+#else
-+        const QMetaObject **objects;
-+        if (priv(prototype->d.data)->revision < 2) {
-+            objects = (const QMetaObject **)(prototype->d.extradata);
-+        } else
-+#endif
-+        {
-+            const QMetaObjectExtraData *extra = (const QMetaObjectExtraData *)(prototype->d.extradata);
-+            if (extra)
-+                objects = extra->objects;
-+            else
-+                objects = 0;
-+        }
-+        if (objects) {
-+            while (*objects != 0) {
-+                addRelatedMetaObject(*objects);
-+                ++objects;
-+            }
-+        }
-+    }
-+
-+    if ((members & StaticMetacall) != 0) {
-+        if (priv(prototype->d.data)->revision >= 2) {
-+            const QMetaObjectExtraData *extra =
-+                (const QMetaObjectExtraData *)(prototype->d.extradata);
-+            if (extra && extra->static_metacall)
-+                setStaticMetacallFunction(extra->static_metacall);
-+        }
-+    }
-+}
-+
-+/*!
-+    Returns the method at \a index in this class.
-+
-+    \sa methodCount(), addMethod(), removeMethod(), indexOfMethod()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::method(int index) const
-+{
-+    if (index >= 0 && index < d->methods.size())
-+        return QMetaMethodBuilder(this, index);
-+    else
-+        return QMetaMethodBuilder();
-+}
-+
-+/*!
-+    Returns the constructor at \a index in this class.
-+
-+    \sa methodCount(), addMethod(), removeMethod(), indexOfConstructor()
-+*/
-+QMetaMethodBuilder QMetaObjectBuilder::constructor(int index) const
-+{
-+    if (index >= 0 && index < d->constructors.size())
-+        return QMetaMethodBuilder(this, -(index + 1));
-+    else
-+        return QMetaMethodBuilder();
-+}
-+
-+/*!
-+    Returns the property at \a index in this class.
-+
-+    \sa methodCount(), addMethod(), removeMethod(), indexOfProperty()
-+*/
-+QMetaPropertyBuilder QMetaObjectBuilder::property(int index) const
-+{
-+    if (index >= 0 && index < d->properties.size())
-+        return QMetaPropertyBuilder(this, index);
-+    else
-+        return QMetaPropertyBuilder();
-+}
-+
-+/*!
-+    Returns the enumerator at \a index in this class.
-+
-+    \sa enumeratorCount(), addEnumerator(), removeEnumerator()
-+    \sa indexOfEnumerator()
-+*/
-+QMetaEnumBuilder QMetaObjectBuilder::enumerator(int index) const
-+{
-+    if (index >= 0 && index < d->enumerators.size())
-+        return QMetaEnumBuilder(this, index);
-+    else
-+        return QMetaEnumBuilder();
-+}
-+
-+/*!
-+    Returns the related meta object at \a index in this class.
-+
-+    Related meta objects are used when resolving the enumerated type
-+    associated with a property, where the enumerated type is in a
-+    different class from the property.
-+
-+    \sa relatedMetaObjectCount(), addRelatedMetaObject()
-+    \sa removeRelatedMetaObject()
-+*/
-+const QMetaObject *QMetaObjectBuilder::relatedMetaObject(int index) const
-+{
-+    if (index >= 0 && index < d->relatedMetaObjects.size())
-+#ifdef Q_NO_DATA_RELOCATION
-+        return &((*(d->relatedMetaObjects[index]))());
-+#else
-+        return d->relatedMetaObjects[index];
-+#endif
-+    else
-+        return 0;
-+}
-+
-+/*!
-+    Returns the name of the item of class information at \a index
-+    in this class.
-+
-+    \sa classInfoCount(), addClassInfo(), classInfoValue(), removeClassInfo()
-+    \sa indexOfClassInfo()
-+*/
-+QByteArray QMetaObjectBuilder::classInfoName(int index) const
-+{
-+    if (index >= 0 && index < d->classInfoNames.size())
-+        return d->classInfoNames[index];
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Returns the value of the item of class information at \a index
-+    in this class.
-+
-+    \sa classInfoCount(), addClassInfo(), classInfoName(), removeClassInfo()
-+    \sa indexOfClassInfo()
-+*/
-+QByteArray QMetaObjectBuilder::classInfoValue(int index) const
-+{
-+    if (index >= 0 && index < d->classInfoValues.size())
-+        return d->classInfoValues[index];
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Removes the method at \a index from this class.  The indices of
-+    all following methods will be adjusted downwards by 1.  If the
-+    method is registered as a notify signal on a property, then the
-+    notify signal will be removed from the property.
-+
-+    \sa methodCount(), addMethod(), method(), indexOfMethod()
-+*/
-+void QMetaObjectBuilder::removeMethod(int index)
-+{
-+    if (index >= 0 && index < d->methods.size()) {
-+        d->methods.removeAt(index);
-+        for (int prop = 0; prop < d->properties.size(); ++prop) {
-+            // Adjust the indices of property notify signal references.
-+            if (d->properties[prop].notifySignal == index) {
-+                d->properties[prop].notifySignal = -1;
-+                d->properties[prop].setFlag(Notify, false);
-+            } else if (d->properties[prop].notifySignal > index)
-+                (d->properties[prop].notifySignal)--;
-+        }
-+    }
-+}
-+
-+/*!
-+    Removes the constructor at \a index from this class.  The indices of
-+    all following constructors will be adjusted downwards by 1.
-+
-+    \sa constructorCount(), addConstructor(), constructor()
-+    \sa indexOfConstructor()
-+*/
-+void QMetaObjectBuilder::removeConstructor(int index)
-+{
-+    if (index >= 0 && index < d->constructors.size())
-+        d->constructors.removeAt(index);
-+}
-+
-+/*!
-+    Removes the property at \a index from this class.  The indices of
-+    all following properties will be adjusted downwards by 1.
-+
-+    \sa propertyCount(), addProperty(), property(), indexOfProperty()
-+*/
-+void QMetaObjectBuilder::removeProperty(int index)
-+{
-+    if (index >= 0 && index < d->properties.size())
-+        d->properties.removeAt(index);
-+}
-+
-+/*!
-+    Removes the enumerator at \a index from this class.  The indices of
-+    all following enumerators will be adjusted downwards by 1.
-+
-+    \sa enumertorCount(), addEnumerator(), enumerator()
-+    \sa indexOfEnumerator()
-+*/
-+void QMetaObjectBuilder::removeEnumerator(int index)
-+{
-+    if (index >= 0 && index < d->enumerators.size())
-+        d->enumerators.removeAt(index);
-+}
-+
-+/*!
-+    Removes the item of class information at \a index from this class.
-+    The indices of all following items will be adjusted downwards by 1.
-+
-+    \sa classInfoCount(), addClassInfo(), classInfoName(), classInfoValue()
-+    \sa indexOfClassInfo()
-+*/
-+void QMetaObjectBuilder::removeClassInfo(int index)
-+{
-+    if (index >= 0 && index < d->classInfoNames.size()) {
-+        d->classInfoNames.removeAt(index);
-+        d->classInfoValues.removeAt(index);
-+    }
-+}
-+
-+/*!
-+    Removes the related meta object at \a index from this class.
-+    The indices of all following related meta objects will be adjusted
-+    downwards by 1.
-+
-+    Related meta objects are used when resolving the enumerated type
-+    associated with a property, where the enumerated type is in a
-+    different class from the property.
-+
-+    \sa relatedMetaObjectCount(), addRelatedMetaObject()
-+    \sa relatedMetaObject()
-+*/
-+void QMetaObjectBuilder::removeRelatedMetaObject(int index)
-+{
-+    if (index >= 0 && index < d->relatedMetaObjects.size())
-+        d->relatedMetaObjects.removeAt(index);
-+}
-+
-+/*!
-+    Finds a method with the specified \a signature and returns its index;
-+    otherwise returns -1.  The \a signature will be normalized by this method.
-+
-+    \sa method(), methodCount(), addMethod(), removeMethod()
-+*/
-+int QMetaObjectBuilder::indexOfMethod(const QByteArray& signature)
-+{
-+    QByteArray sig = QMetaObject::normalizedSignature(signature);
-+    for (int index = 0; index < d->methods.size(); ++index) {
-+        if (sig == d->methods[index].signature)
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+/*!
-+    Finds a signal with the specified \a signature and returns its index;
-+    otherwise returns -1.  The \a signature will be normalized by this method.
-+
-+    \sa indexOfMethod(), indexOfSlot()
-+*/
-+int QMetaObjectBuilder::indexOfSignal(const QByteArray& signature)
-+{
-+    QByteArray sig = QMetaObject::normalizedSignature(signature);
-+    for (int index = 0; index < d->methods.size(); ++index) {
-+        if (sig == d->methods[index].signature &&
-+                d->methods[index].methodType() == QMetaMethod::Signal)
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+/*!
-+    Finds a slot with the specified \a signature and returns its index;
-+    otherwise returns -1.  The \a signature will be normalized by this method.
-+
-+    \sa indexOfMethod(), indexOfSignal()
-+*/
-+int QMetaObjectBuilder::indexOfSlot(const QByteArray& signature)
-+{
-+    QByteArray sig = QMetaObject::normalizedSignature(signature);
-+    for (int index = 0; index < d->methods.size(); ++index) {
-+        if (sig == d->methods[index].signature &&
-+                d->methods[index].methodType() == QMetaMethod::Slot)
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+/*!
-+    Finds a constructor with the specified \a signature and returns its index;
-+    otherwise returns -1.  The \a signature will be normalized by this method.
-+
-+    \sa constructor(), constructorCount(), addConstructor(), removeConstructor()
-+*/
-+int QMetaObjectBuilder::indexOfConstructor(const QByteArray& signature)
-+{
-+    QByteArray sig = QMetaObject::normalizedSignature(signature);
-+    for (int index = 0; index < d->constructors.size(); ++index) {
-+        if (sig == d->constructors[index].signature)
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+/*!
-+    Finds a property with the specified \a name and returns its index;
-+    otherwise returns -1.
-+
-+    \sa property(), propertyCount(), addProperty(), removeProperty()
-+*/
-+int QMetaObjectBuilder::indexOfProperty(const QByteArray& name)
-+{
-+    for (int index = 0; index < d->properties.size(); ++index) {
-+        if (name == d->properties[index].name)
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+/*!
-+    Finds an enumerator with the specified \a name and returns its index;
-+    otherwise returns -1.
-+
-+    \sa enumertor(), enumeratorCount(), addEnumerator(), removeEnumerator()
-+*/
-+int QMetaObjectBuilder::indexOfEnumerator(const QByteArray& name)
-+{
-+    for (int index = 0; index < d->enumerators.size(); ++index) {
-+        if (name == d->enumerators[index].name)
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+/*!
-+    Finds an item of class information with the specified \a name and
-+    returns its index; otherwise returns -1.
-+
-+    \sa classInfoName(), classInfoValue(), classInfoCount(), addClassInfo()
-+    \sa removeClassInfo()
-+*/
-+int QMetaObjectBuilder::indexOfClassInfo(const QByteArray& name)
-+{
-+    for (int index = 0; index < d->classInfoNames.size(); ++index) {
-+        if (name == d->classInfoNames[index])
-+            return index;
-+    }
-+    return -1;
-+}
-+
-+// Align on a specific type boundary.
-+#define ALIGN(size,type)    \
-+    (size) = ((size) + sizeof(type) - 1) & ~(sizeof(type) - 1)
-+
-+// Build a string into a QMetaObject representation.  Returns the
-+// position in the string table where the string was placed.
-+static int buildString
-+    (char *buf, char *str, int *offset, const QByteArray& value, int empty)
-+{
-+    if (value.size() == 0 && empty >= 0)
-+        return empty;
-+    if (buf) {
-+        memcpy(str + *offset, value.constData(), value.size());
-+        str[*offset + value.size()] = '\0';
-+    }
-+    int posn = *offset;
-+    *offset += value.size() + 1;
-+    return posn;
-+}
-+
-+// Build the parameter array string for a method.
-+static QByteArray buildParameterNames
-+        (const QByteArray& signature, const QList<QByteArray>& parameterNames)
-+{
-+    // If the parameter name list is specified, then concatenate them.
-+    if (!parameterNames.isEmpty()) {
-+        QByteArray names;
-+        bool first = true;
-+        foreach (const QByteArray &name, parameterNames) {
-+            if (first)
-+                first = false;
-+            else
-+                names += (char)',';
-+            names += name;
-+        }
-+        return names;
-+    }
-+
-+    // Count commas in the signature, excluding those inside template arguments.
-+    int index = signature.indexOf('(');
-+    if (index < 0)
-+        return QByteArray();
-+    ++index;
-+    if (index >= signature.size())
-+        return QByteArray();
-+    if (signature[index] == ')')
-+        return QByteArray();
-+    int count = 1;
-+    int brackets = 0;
-+    while (index < signature.size() && signature[index] != ',') {
-+        char ch = signature[index++];
-+        if (ch == '<')
-+            ++brackets;
-+        else if (ch == '>')
-+            --brackets;
-+        else if (ch == ',' && brackets <= 0)
-+            ++count;
-+    }
-+    return QByteArray(count - 1, ',');
-+}
-+
-+// Build a QMetaObject in "buf" based on the information in "d".
-+// If "buf" is null, then return the number of bytes needed to
-+// build the QMetaObject.  Returns -1 if the metaobject if
-+// relocatable is set, but the metaobject contains extradata.
-+static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
-+                           bool relocatable)
-+{
-+    int size = 0;
-+    int dataIndex;
-+    int enumIndex;
-+    int index;
-+    bool hasNotifySignals = false;
-+
-+    if (relocatable &&
-+        (d->relatedMetaObjects.size() > 0 || d->staticMetacallFunction))
-+        return -1;
-+
-+    // Create the main QMetaObject structure at the start of the buffer.
-+    QMetaObject *meta = reinterpret_cast<QMetaObject *>(buf);
-+    size += sizeof(QMetaObject);
-+    ALIGN(size, int);
-+    if (buf) {
-+        if (!relocatable) meta->d.superdata = d->superClass;
-+        meta->d.extradata = 0;
-+    }
-+
-+    // Populate the QMetaObjectPrivate structure.
-+    QMetaObjectPrivate *pmeta
-+        = reinterpret_cast<QMetaObjectPrivate *>(buf + size);
-+    int pmetaSize = size;
-+    dataIndex = 13;     // Number of fields in the QMetaObjectPrivate.
-+    for (index = 0; index < d->properties.size(); ++index) {
-+        if (d->properties[index].notifySignal != -1) {
-+            hasNotifySignals = true;
-+            break;
-+        }
-+    }
-+    if (buf) {
-+        pmeta->revision = 3;
-+        pmeta->flags = d->flags;
-+        pmeta->className = 0;   // Class name is always the first string.
-+
-+        pmeta->classInfoCount = d->classInfoNames.size();
-+        pmeta->classInfoData = dataIndex;
-+        dataIndex += 2 * d->classInfoNames.size();
-+
-+        pmeta->methodCount = d->methods.size();
-+        pmeta->methodData = dataIndex;
-+        dataIndex += 5 * d->methods.size();
-+
-+        pmeta->propertyCount = d->properties.size();
-+        pmeta->propertyData = dataIndex;
-+        dataIndex += 3 * d->properties.size();
-+        if (hasNotifySignals)
-+            dataIndex += d->properties.size();
-+
-+        pmeta->enumeratorCount = d->enumerators.size();
-+        pmeta->enumeratorData = dataIndex;
-+        dataIndex += 4 * d->enumerators.size();
-+
-+        pmeta->constructorCount = d->constructors.size();
-+        pmeta->constructorData = dataIndex;
-+        dataIndex += 5 * d->constructors.size();
-+    } else {
-+        dataIndex += 2 * d->classInfoNames.size();
-+        dataIndex += 5 * d->methods.size();
-+        dataIndex += 3 * d->properties.size();
-+        if (hasNotifySignals)
-+            dataIndex += d->properties.size();
-+        dataIndex += 4 * d->enumerators.size();
-+        dataIndex += 5 * d->constructors.size();
-+    }
-+
-+    // Allocate space for the enumerator key names and values.
-+    enumIndex = dataIndex;
-+    for (index = 0; index < d->enumerators.size(); ++index) {
-+        QMetaEnumBuilderPrivate *enumerator = &(d->enumerators[index]);
-+        dataIndex += 2 * enumerator->keys.size();
-+    }
-+
-+    // Zero terminator at the end of the data offset table.
-+    ++dataIndex;
-+
-+    // Find the start of the data and string tables.
-+    int *data = reinterpret_cast<int *>(pmeta);
-+    size += dataIndex * sizeof(int);
-+    char *str = reinterpret_cast<char *>(buf + size);
-+    if (buf) {
-+        if (relocatable) {
-+            meta->d.stringdata = reinterpret_cast<const char *>((intptr_t)size);
-+            meta->d.data = reinterpret_cast<uint *>((intptr_t)pmetaSize);
-+        } else {
-+            meta->d.stringdata = str;
-+            meta->d.data = reinterpret_cast<uint *>(data);
-+        }
-+    }
-+
-+    // Reset the current data position to just past the QMetaObjectPrivate.
-+    dataIndex = 13;
-+
-+    // Add the class name to the string table.
-+    int offset = 0;
-+    buildString(buf, str, &offset, d->className, -1);
-+
-+    // Add a common empty string, which is used to indicate "void"
-+    // method returns, empty tag strings, etc.
-+    int empty = buildString(buf, str, &offset, QByteArray(), -1);
-+
-+    // Output the class infos,
-+    for (index = 0; index < d->classInfoNames.size(); ++index) {
-+        int name = buildString(buf, str, &offset, d->classInfoNames[index], empty);
-+        int value = buildString(buf, str, &offset, d->classInfoValues[index], empty);
-+        if (buf) {
-+            data[dataIndex] = name;
-+            data[dataIndex + 1] = value;
-+        }
-+        dataIndex += 2;
-+    }
-+
-+    // Output the methods in the class.
-+    for (index = 0; index < d->methods.size(); ++index) {
-+        QMetaMethodBuilderPrivate *method = &(d->methods[index]);
-+        int sig = buildString(buf, str, &offset, method->signature, empty);
-+        int params;
-+        QByteArray names = buildParameterNames
-+            (method->signature, method->parameterNames);
-+        params = buildString(buf, str, &offset, names, empty);
-+        int ret = buildString(buf, str, &offset, method->returnType, empty);
-+        int tag = buildString(buf, str, &offset, method->tag, empty);
-+        int attrs = method->attributes;
-+        if (buf) {
-+            data[dataIndex]     = sig;
-+            data[dataIndex + 1] = params;
-+            data[dataIndex + 2] = ret;
-+            data[dataIndex + 3] = tag;
-+            data[dataIndex + 4] = attrs;
-+        }
-+        dataIndex += 5;
-+    }
-+
-+    // Output the properties in the class.
-+    for (index = 0; index < d->properties.size(); ++index) {
-+        QMetaPropertyBuilderPrivate *prop = &(d->properties[index]);
-+        int name = buildString(buf, str, &offset, prop->name, empty);
-+        int type = buildString(buf, str, &offset, prop->type, empty);
-+        int flags = prop->flags;
-+
-+        if (!isVariantType(prop->type)) {
-+            flags |= EnumOrFlag;
-+        } else {
-+            flags |= qvariant_nameToType(prop->type) << 24;
-+        }
-+
-+        if (buf) {
-+            data[dataIndex]     = name;
-+            data[dataIndex + 1] = type;
-+            data[dataIndex + 2] = flags;
-+        }
-+        dataIndex += 3;
-+    }
-+    if (hasNotifySignals) {
-+        for (index = 0; index < d->properties.size(); ++index) {
-+            QMetaPropertyBuilderPrivate *prop = &(d->properties[index]);
-+            if (buf) {
-+                if (prop->notifySignal != -1)
-+                    data[dataIndex] = prop->notifySignal;
-+                else
-+                    data[dataIndex] = 0;
-+            }
-+            ++dataIndex;
-+        }
-+    }
-+
-+    // Output the enumerators in the class.
-+    for (index = 0; index < d->enumerators.size(); ++index) {
-+        QMetaEnumBuilderPrivate *enumerator = &(d->enumerators[index]);
-+        int name = buildString(buf, str, &offset, enumerator->name, empty);
-+        int isFlag = (int)(enumerator->isFlag);
-+        int count = enumerator->keys.size();
-+        int enumOffset = enumIndex;
-+        if (buf) {
-+            data[dataIndex]     = name;
-+            data[dataIndex + 1] = isFlag;
-+            data[dataIndex + 2] = count;
-+            data[dataIndex + 3] = enumOffset;
-+        }
-+        for (int key = 0; key < count; ++key) {
-+            int keyIndex = buildString(buf, str, &offset, enumerator->keys[key], empty);
-+            if (buf) {
-+                data[enumOffset++] = keyIndex;
-+                data[enumOffset++] = enumerator->values[key];
-+            }
-+        }
-+        dataIndex += 4;
-+        enumIndex += 2 * count;
-+    }
-+
-+    // Output the constructors in the class.
-+    for (index = 0; index < d->constructors.size(); ++index) {
-+        QMetaMethodBuilderPrivate *method = &(d->constructors[index]);
-+        int sig = buildString(buf, str, &offset, method->signature, empty);
-+        int params;
-+        QByteArray names = buildParameterNames
-+            (method->signature, method->parameterNames);
-+        params = buildString(buf, str, &offset, names, empty);
-+        int ret = buildString(buf, str, &offset, method->returnType, empty);
-+        int tag = buildString(buf, str, &offset, method->tag, empty);
-+        int attrs = method->attributes;
-+        if (buf) {
-+            data[dataIndex]     = sig;
-+            data[dataIndex + 1] = params;
-+            data[dataIndex + 2] = ret;
-+            data[dataIndex + 3] = tag;
-+            data[dataIndex + 4] = attrs;
-+        }
-+        dataIndex += 5;
-+    }
-+
-+    // One more empty string to act as a terminator.
-+    buildString(buf, str, &offset, QByteArray(), -1);
-+    size += offset;
-+
-+    // Output the zero terminator in the data array.
-+    if (buf)
-+        data[enumIndex] = 0;
-+
-+    // Create the extradata block if we need one.
-+    if (d->relatedMetaObjects.size() > 0 || d->staticMetacallFunction) {
-+        ALIGN(size, QMetaObject **);
-+        ALIGN(size, QMetaObjectBuilder::StaticMetacallFunction);
-+        QMetaObjectExtraData *extra =
-+            reinterpret_cast<QMetaObjectExtraData *>(buf + size);
-+        size += sizeof(QMetaObjectExtraData);
-+        ALIGN(size, QMetaObject *);
-+#ifdef Q_NO_DATA_RELOCATION
-+        QMetaObjectAccessor *objects =
-+            reinterpret_cast<QMetaObjectAccessor *>(buf + size);
-+#else
-+        const QMetaObject **objects =
-+            reinterpret_cast<const QMetaObject **>(buf + size);
-+#endif
-+        if (buf) {
-+            if (d->relatedMetaObjects.size() > 0) {
-+                extra->objects = objects;
-+                for (index = 0; index < d->relatedMetaObjects.size(); ++index)
-+                    objects[index] = d->relatedMetaObjects[index];
-+                objects[index] = 0;
-+            } else {
-+                extra->objects = 0;
-+            }
-+            extra->static_metacall = d->staticMetacallFunction;
-+            meta->d.extradata = reinterpret_cast<void *>(extra);
-+        }
-+        if (d->relatedMetaObjects.size() > 0)
-+            size += sizeof(QMetaObject *) * (d->relatedMetaObjects.size() + 1);
-+    }
-+
-+    // Align the final size and return it.
-+    ALIGN(size, void *);
-+    return size;
-+}
-+
-+/*!
-+    Converts this meta object builder into a concrete QMetaObject.
-+    The return value should be deallocated using qFree() once it
-+    is no longer needed.
-+
-+    The returned meta object is a snapshot of the state of the
-+    QMetaObjectBuilder.  Any further modifications to the QMetaObjectBuilder
-+    will not be reflected in previous meta objects returned by
-+    this method.
-+*/
-+QMetaObject *QMetaObjectBuilder::toMetaObject() const
-+{
-+    int size = buildMetaObject(d, 0, false);
-+    char *buf = reinterpret_cast<char *>(qMalloc(size));
-+    buildMetaObject(d, buf, false);
-+    return reinterpret_cast<QMetaObject *>(buf);
-+}
-+
-+/*
-+    \internal
-+
-+    Converts this meta object builder into relocatable data.  This data can
-+    be stored, copied and later passed to fromRelocatableData() to create a
-+    concrete QMetaObject.
-+
-+    The data is specific to the architecture on which it was created, but is not
-+    specific to the process that created it.  Not all meta object builder's can
-+    be converted to data in this way.  If \a ok is provided, it will be set to
-+    true if the conversion succeeds, and false otherwise.  If a
-+    staticMetacallFunction() or any relatedMetaObject()'s are specified the
-+    conversion to relocatable data will fail.
-+*/
-+QByteArray QMetaObjectBuilder::toRelocatableData(bool *ok) const
-+{
-+    int size = buildMetaObject(d, 0, true);
-+    if (size == -1) {
-+        if (ok) *ok = false;
-+        return QByteArray();
-+    }
-+
-+    QByteArray data;
-+    data.resize(size);
-+    char *buf = data.data();
-+    buildMetaObject(d, buf, true);
-+    if (ok) *ok = true;
-+    return data;
-+}
-+
-+/*
-+    \internal
-+
-+    Sets the \a data returned from toRelocatableData() onto a concrete
-+    QMetaObject instance, \a output.  As the meta object's super class is not
-+    saved in the relocatable data, it must be passed as \a superClass.
-+*/
-+void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output,
-+                                             const QMetaObject *superclass,
-+                                             const QByteArray &data)
-+{
-+    if (!output)
-+        return;
-+
-+    const char *buf = data.constData();
-+    const QMetaObject *dataMo = reinterpret_cast<const QMetaObject *>(buf);
-+
-+    intptr_t stringdataOffset = (intptr_t)dataMo->d.stringdata;
-+    intptr_t dataOffset = (intptr_t)dataMo->d.data;
-+
-+    output->d.superdata = superclass;
-+    output->d.stringdata = buf + stringdataOffset;
-+    output->d.data = reinterpret_cast<const uint *>(buf + dataOffset);
-+}
-+
-+/*!
-+    \typedef QMetaObjectBuilder::StaticMetacallFunction
-+
-+    Typedef for static metacall functions.  The three parameters are
-+    the call type value, the constructor index, and the
-+    array of parameters.
-+*/
-+
-+/*!
-+    Returns the static metacall function to use to construct objects
-+    of this class.  The default value is null.
-+
-+    \sa setStaticMetacallFunction()
-+*/
-+QMetaObjectBuilder::StaticMetacallFunction QMetaObjectBuilder::staticMetacallFunction() const
-+{
-+    return d->staticMetacallFunction;
-+}
-+
-+/*!
-+    Sets the static metacall function to use to construct objects
-+    of this class to \a value.  The default value is null.
-+
-+    \sa staticMetacallFunction()
-+*/
-+void QMetaObjectBuilder::setStaticMetacallFunction
-+        (QMetaObjectBuilder::StaticMetacallFunction value)
-+{
-+    d->staticMetacallFunction = value;
-+}
-+
-+#ifndef QT_NO_DATASTREAM
-+
-+/*!
-+    Serializes the contents of the meta object builder onto \a stream.
-+
-+    \sa deserialize()
-+*/
-+void QMetaObjectBuilder::serialize(QDataStream& stream) const
-+{
-+    int index;
-+
-+    // Write the class and super class names.
-+    stream << d->className;
-+    if (d->superClass)
-+        stream << QByteArray(d->superClass->className());
-+    else
-+        stream << QByteArray();
-+
-+    // Write the counts for each type of class member.
-+    stream << d->classInfoNames.size();
-+    stream << d->methods.size();
-+    stream << d->properties.size();
-+    stream << d->enumerators.size();
-+    stream << d->constructors.size();
-+    stream << d->relatedMetaObjects.size();
-+
-+    // Write the items of class information.
-+    for (index = 0; index < d->classInfoNames.size(); ++index) {
-+        stream << d->classInfoNames[index];
-+        stream << d->classInfoValues[index];
-+    }
-+
-+    // Write the methods.
-+    for (index = 0; index < d->methods.size(); ++index) {
-+        const QMetaMethodBuilderPrivate *method = &(d->methods[index]);
-+        stream << method->signature;
-+        stream << method->returnType;
-+        stream << method->parameterNames;
-+        stream << method->tag;
-+        stream << method->attributes;
-+    }
-+
-+    // Write the properties.
-+    for (index = 0; index < d->properties.size(); ++index) {
-+        const QMetaPropertyBuilderPrivate *property = &(d->properties[index]);
-+        stream << property->name;
-+        stream << property->type;
-+        stream << property->flags;
-+        stream << property->notifySignal;
-+    }
-+
-+    // Write the enumerators.
-+    for (index = 0; index < d->enumerators.size(); ++index) {
-+        const QMetaEnumBuilderPrivate *enumerator = &(d->enumerators[index]);
-+        stream << enumerator->name;
-+        stream << enumerator->isFlag;
-+        stream << enumerator->keys;
-+        stream << enumerator->values;
-+    }
-+
-+    // Write the constructors.
-+    for (index = 0; index < d->constructors.size(); ++index) {
-+        const QMetaMethodBuilderPrivate *method = &(d->constructors[index]);
-+        stream << method->signature;
-+        stream << method->returnType;
-+        stream << method->parameterNames;
-+        stream << method->tag;
-+        stream << method->attributes;
-+    }
-+
-+    // Write the related meta objects.
-+#ifdef Q_NO_DATA_RELOCATION
-+    //the related meta objects will be function pointers
-+    //which you have to add to the builder manually.
-+    //e.g.
-+    //builder2.addRelatedMetaObject(QLocale::getStaticMetaObject);
-+#else
-+    for (index = 0; index < d->relatedMetaObjects.size(); ++index) {
-+        const QMetaObject *meta = d->relatedMetaObjects[index];
-+        stream << QByteArray(meta->className());
-+    }
-+#endif
-+
-+    // Add an extra empty QByteArray for additional data in future versions.
-+    // This should help maintain backwards compatibility, allowing older
-+    // versions to read newer data.
-+    stream << QByteArray();
-+}
-+
-+// Resolve a class name using the name reference map.
-+static const QMetaObject *resolveClassName
-+        (const QMap<QByteArray, const QMetaObject *>& references,
-+         const QByteArray& name)
-+{
-+    if (name == QByteArray("QObject"))
-+        return &QObject::staticMetaObject;
-+    else
-+        return references.value(name, 0);
-+}
-+
-+/*!
-+    Deserializes a meta object builder from \a stream into
-+    this meta object builder.
-+
-+    The \a references parameter specifies a mapping from class names
-+    to QMetaObject instances for resolving the super class name and
-+    related meta objects in the object that is deserialized.
-+    The meta object for QObject is implicitly added to \a references
-+    and does not need to be supplied.
-+
-+    The QDataStream::status() value on \a stream will be set to
-+    QDataStream::ReadCorruptData if the input data is corrupt.
-+    The status will be set to QDataStream::ReadPastEnd if the
-+    input was exhausted before the full meta object was read.
-+
-+    \sa serialize()
-+*/
-+void QMetaObjectBuilder::deserialize
-+        (QDataStream& stream,
-+         const QMap<QByteArray, const QMetaObject *>& references)
-+{
-+    QByteArray name;
-+    const QMetaObject *cl;
-+    int index;
-+
-+    // Clear all members in the builder to their default states.
-+    d->className.clear();
-+    d->superClass = &QObject::staticMetaObject;
-+    d->classInfoNames.clear();
-+    d->classInfoValues.clear();
-+    d->methods.clear();
-+    d->properties.clear();
-+    d->enumerators.clear();
-+    d->constructors.clear();
-+    d->relatedMetaObjects.clear();
-+    d->staticMetacallFunction = 0;
-+
-+    // Read the class and super class names.
-+    stream >> d->className;
-+    stream >> name;
-+    if (name.isEmpty()) {
-+        d->superClass = 0;
-+    } else if ((cl = resolveClassName(references, name)) != 0) {
-+        d->superClass = cl;
-+    } else {
-+        stream.setStatus(QDataStream::ReadCorruptData);
-+        return;
-+    }
-+
-+    // Read the counts for each type of class member.
-+    int classInfoCount, methodCount, propertyCount;
-+    int enumeratorCount, constructorCount, relatedMetaObjectCount;
-+    stream >> classInfoCount;
-+    stream >> methodCount;
-+    stream >> propertyCount;
-+    stream >> enumeratorCount;
-+    stream >> constructorCount;
-+    stream >> relatedMetaObjectCount;
-+    if (classInfoCount < 0 || methodCount < 0 ||
-+        propertyCount < 0 || enumeratorCount < 0 ||
-+        constructorCount < 0 || relatedMetaObjectCount < 0) {
-+        stream.setStatus(QDataStream::ReadCorruptData);
-+        return;
-+    }
-+
-+    // Read the items of class information.
-+    for (index = 0; index < classInfoCount; ++index) {
-+        if (stream.status() != QDataStream::Ok)
-+            return;
-+        QByteArray value;
-+        stream >> name;
-+        stream >> value;
-+        addClassInfo(name, value);
-+    }
-+
-+    // Read the member methods.
-+    for (index = 0; index < methodCount; ++index) {
-+        if (stream.status() != QDataStream::Ok)
-+            return;
-+        stream >> name;
-+        addMethod(name);
-+        QMetaMethodBuilderPrivate *method = &(d->methods[index]);
-+        stream >> method->returnType;
-+        stream >> method->parameterNames;
-+        stream >> method->tag;
-+        stream >> method->attributes;
-+        if (method->methodType() == QMetaMethod::Constructor) {
-+            // Cannot add a constructor in this set of methods.
-+            stream.setStatus(QDataStream::ReadCorruptData);
-+            return;
-+        }
-+    }
-+
-+    // Read the properties.
-+    for (index = 0; index < propertyCount; ++index) {
-+        if (stream.status() != QDataStream::Ok)
-+            return;
-+        QByteArray type;
-+        stream >> name;
-+        stream >> type;
-+        addProperty(name, type);
-+        QMetaPropertyBuilderPrivate *property = &(d->properties[index]);
-+        stream >> property->flags;
-+        stream >> property->notifySignal;
-+        if (property->notifySignal < -1 ||
-+            property->notifySignal >= d->methods.size()) {
-+            // Notify signal method index is out of range.
-+            stream.setStatus(QDataStream::ReadCorruptData);
-+            return;
-+        }
-+        if (property->notifySignal >= 0 &&
-+            d->methods[property->notifySignal].methodType() != QMetaMethod::Signal) {
-+            // Notify signal method index does not refer to a signal.
-+            stream.setStatus(QDataStream::ReadCorruptData);
-+            return;
-+        }
-+    }
-+
-+    // Read the enumerators.
-+    for (index = 0; index < enumeratorCount; ++index) {
-+        if (stream.status() != QDataStream::Ok)
-+            return;
-+        stream >> name;
-+        addEnumerator(name);
-+        QMetaEnumBuilderPrivate *enumerator = &(d->enumerators[index]);
-+        stream >> enumerator->isFlag;
-+        stream >> enumerator->keys;
-+        stream >> enumerator->values;
-+        if (enumerator->keys.size() != enumerator->values.size()) {
-+            // Mismatch between number of keys and number of values.
-+            stream.setStatus(QDataStream::ReadCorruptData);
-+            return;
-+        }
-+    }
-+
-+    // Read the constructor methods.
-+    for (index = 0; index < constructorCount; ++index) {
-+        if (stream.status() != QDataStream::Ok)
-+            return;
-+        stream >> name;
-+        addConstructor(name);
-+        QMetaMethodBuilderPrivate *method = &(d->constructors[index]);
-+        stream >> method->returnType;
-+        stream >> method->parameterNames;
-+        stream >> method->tag;
-+        stream >> method->attributes;
-+        if (method->methodType() != QMetaMethod::Constructor) {
-+            // The type must be Constructor.
-+            stream.setStatus(QDataStream::ReadCorruptData);
-+            return;
-+        }
-+    }
-+
-+    // Read the related meta objects.
-+#ifdef Q_NO_DATA_RELOCATION
-+    //the related meta objects will be function pointers
-+    //which you have to add to the builder manually.
-+    //e.g.
-+    //builder2.addRelatedMetaObject(QLocale::getStaticMetaObject);
-+#else
-+    for (index = 0; index < relatedMetaObjectCount; ++index) {
-+        if (stream.status() != QDataStream::Ok)
-+            return;
-+        stream >> name;
-+        cl = resolveClassName(references, name);
-+        if (!cl) {
-+            stream.setStatus(QDataStream::ReadCorruptData);
-+            return;
-+        }
-+        addRelatedMetaObject(cl);
-+    }
-+#endif
-+
-+    // Read the extra data block, which is reserved for future use.
-+    stream >> name;
-+}
-+
-+#endif // !QT_NO_DATASTREAM
-+
-+/*!
-+    \class QMetaMethodBuilder
-+    \internal
-+    \brief The QMetaMethodBuilder class enables modifications to a method definition on a meta object builder.
-+*/
-+
-+QMetaMethodBuilderPrivate *QMetaMethodBuilder::d_func() const
-+{
-+    // Positive indices indicate methods, negative indices indicate constructors.
-+    if (_mobj && _index >= 0 && _index < _mobj->d->methods.size())
-+        return &(_mobj->d->methods[_index]);
-+    else if (_mobj && -_index >= 1 && -_index <= _mobj->d->constructors.size())
-+        return &(_mobj->d->constructors[(-_index) - 1]);
-+    else
-+        return 0;
-+}
-+
-+/*!
-+    \fn QMetaMethodBuilder::QMetaMethodBuilder()
-+    \internal
-+*/
-+
-+/*!
-+    Returns the index of this method within its QMetaObjectBuilder.
-+*/
-+int QMetaMethodBuilder::index() const
-+{
-+    if (_index >= 0)
-+        return _index;          // Method, signal, or slot
-+    else
-+        return (-_index) - 1;   // Constructor
-+}
-+
-+/*!
-+    Returns the type of this method (signal, slot, method, or constructor).
-+*/
-+QMetaMethod::MethodType QMetaMethodBuilder::methodType() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->methodType();
-+    else
-+        return QMetaMethod::Method;
-+}
-+
-+/*!
-+    Returns the signature of this method.
-+
-+    \sa parameterNames(), returnType()
-+*/
-+QByteArray QMetaMethodBuilder::signature() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->signature;
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Returns the return type for this method; empty if the method's
-+    return type is \c{void}.
-+
-+    \sa setReturnType(), signature()
-+*/
-+QByteArray QMetaMethodBuilder::returnType() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->returnType;
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Sets the return type for this method to \a value.  If \a value
-+    is empty, then the method's return type is \c{void}.  The \a value
-+    will be normalized before it is added to the method.
-+
-+    \sa returnType(), signature()
-+*/
-+void QMetaMethodBuilder::setReturnType(const QByteArray& value)
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        d->returnType = QMetaObject::normalizedType(value);
-+}
-+
-+/*!
-+    Returns the list of parameter names for this method.
-+
-+    \sa setParameterNames()
-+*/
-+QList<QByteArray> QMetaMethodBuilder::parameterNames() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->parameterNames;
-+    else
-+        return QList<QByteArray>();
-+}
-+
-+/*!
-+    Sets the list of parameter names for this method to \a value.
-+
-+    \sa parameterNames()
-+*/
-+void QMetaMethodBuilder::setParameterNames(const QList<QByteArray>& value)
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        d->parameterNames = value;
-+}
-+
-+/*!
-+    Returns the tag associated with this method.
-+
-+    \sa setTag()
-+*/
-+QByteArray QMetaMethodBuilder::tag() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->tag;
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Sets the tag associated with this method to \a value.
-+
-+    \sa setTag()
-+*/
-+void QMetaMethodBuilder::setTag(const QByteArray& value)
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        d->tag = value;
-+}
-+
-+/*!
-+    Returns the access specification of this method (private, protected,
-+    or public).  The default value is QMetaMethod::Public for methods,
-+    slots, and constructors.  The default value is QMetaMethod::Protected
-+    for signals.
-+
-+    \sa setAccess()
-+*/
-+QMetaMethod::Access QMetaMethodBuilder::access() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->access();
-+    else
-+        return QMetaMethod::Public;
-+}
-+
-+/*!
-+    Sets the access specification of this method (private, protected,
-+    or public) to \a value.  If the method is a signal, this function
-+    will be ignored.
-+
-+    \sa access()
-+*/
-+void QMetaMethodBuilder::setAccess(QMetaMethod::Access value)
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d && d->methodType() != QMetaMethod::Signal)
-+        d->setAccess(value);
-+}
-+
-+/*!
-+    Returns the additional attributes for this method.
-+
-+    \sa setAttributes()
-+*/
-+int QMetaMethodBuilder::attributes() const
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        return (d->attributes >> 4);
-+    else
-+        return 0;
-+}
-+
-+/*!
-+    Sets the additional attributes for this method to \a value.
-+
-+    \sa attributes()
-+*/
-+void QMetaMethodBuilder::setAttributes(int value)
-+{
-+    QMetaMethodBuilderPrivate *d = d_func();
-+    if (d)
-+        d->attributes = ((d->attributes & 0x0f) | (value << 4));
-+}
-+
-+/*!
-+    \class QMetaPropertyBuilder
-+    \internal
-+    \brief The QMetaPropertyBuilder class enables modifications to a property definition on a meta object builder.
-+*/
-+
-+QMetaPropertyBuilderPrivate *QMetaPropertyBuilder::d_func() const
-+{
-+    if (_mobj && _index >= 0 && _index < _mobj->d->properties.size())
-+        return &(_mobj->d->properties[_index]);
-+    else
-+        return 0;
-+}
-+
-+/*!
-+    \fn QMetaPropertyBuilder::QMetaPropertyBuilder()
-+    \internal
-+*/
-+
-+/*!
-+    \fn int QMetaPropertyBuilder::index() const
-+
-+    Returns the index of this property within its QMetaObjectBuilder.
-+*/
-+
-+/*!
-+    Returns the name associated with this property.
-+
-+    \sa type()
-+*/
-+QByteArray QMetaPropertyBuilder::name() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->name;
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Returns the type associated with this property.
-+
-+    \sa name()
-+*/
-+QByteArray QMetaPropertyBuilder::type() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->type;
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Returns true if this property has a notify signal; false otherwise.
-+
-+    \sa notifySignal(), setNotifySignal(), removeNotifySignal()
-+*/
-+bool QMetaPropertyBuilder::hasNotifySignal() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Notify);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns the notify signal associated with this property.
-+
-+    \sa hasNotifySignal(), setNotifySignal(), removeNotifySignal()
-+*/
-+QMetaMethodBuilder QMetaPropertyBuilder::notifySignal() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d && d->notifySignal >= 0)
-+        return QMetaMethodBuilder(_mobj, d->notifySignal);
-+    else
-+        return QMetaMethodBuilder();
-+}
-+
-+/*!
-+    Sets the notify signal associated with this property to \a value.
-+
-+    \sa hasNotifySignal(), notifySignal(), removeNotifySignal()
-+*/
-+void QMetaPropertyBuilder::setNotifySignal(const QMetaMethodBuilder& value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d) {
-+        if (value._mobj) {
-+            d->notifySignal = value._index;
-+            d->setFlag(Notify, true);
-+        } else {
-+            d->notifySignal = -1;
-+            d->setFlag(Notify, false);
-+        }
-+    }
-+}
-+
-+/*!
-+    Removes the notify signal from this property.
-+
-+    \sa hasNotifySignal(), notifySignal(), setNotifySignal()
-+*/
-+void QMetaPropertyBuilder::removeNotifySignal()
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d) {
-+        d->notifySignal = -1;
-+        d->setFlag(Notify, false);
-+    }
-+}
-+
-+/*!
-+    Returns true if this property is readable; otherwise returns false.
-+    The default value is true.
-+
-+    \sa setReadable(), isWritable()
-+*/
-+bool QMetaPropertyBuilder::isReadable() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Readable);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if this property is writable; otherwise returns false.
-+    The default value is true.
-+
-+    \sa setWritable(), isReadable()
-+*/
-+bool QMetaPropertyBuilder::isWritable() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Writable);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if this property can be reset to a default value; otherwise
-+    returns false.  The default value is false.
-+
-+    \sa setResettable()
-+*/
-+bool QMetaPropertyBuilder::isResettable() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Resettable);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if this property is designable; otherwise returns false.
-+    This default value is false.
-+
-+    \sa setDesignable(), isScriptable(), isStored()
-+*/
-+bool QMetaPropertyBuilder::isDesignable() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Designable);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if the property is scriptable; otherwise returns false.
-+    This default value is true.
-+
-+    \sa setScriptable(), isDesignable(), isStored()
-+*/
-+bool QMetaPropertyBuilder::isScriptable() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Scriptable);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if the property is stored; otherwise returns false.
-+    This default value is false.
-+
-+    \sa setStored(), isDesignable(), isScriptable()
-+*/
-+bool QMetaPropertyBuilder::isStored() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Stored);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if the property is editable; otherwise returns false.
-+    This default value is false.
-+
-+    \sa setEditable(), isDesignable(), isScriptable(), isStored()
-+*/
-+bool QMetaPropertyBuilder::isEditable() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Editable);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if this property is designated as the \c USER
-+    property, i.e., the one that the user can edit or that is
-+    significant in some other way.  Otherwise it returns
-+    false.  This default value is false.
-+
-+    \sa setUser(), isDesignable(), isScriptable()
-+*/
-+bool QMetaPropertyBuilder::isUser() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(User);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if the property has a C++ setter function that
-+    follows Qt's standard "name" / "setName" pattern. Designer and uic
-+    query hasStdCppSet() in order to avoid expensive
-+    QObject::setProperty() calls. All properties in Qt [should] follow
-+    this pattern.  The default value is false.
-+
-+    \sa setStdCppSet()
-+*/
-+bool QMetaPropertyBuilder::hasStdCppSet() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(StdCppSet);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if the property is an enumerator or flag type;
-+    otherwise returns false.  This default value is false.
-+
-+    \sa setEnumOrFlag()
-+*/
-+bool QMetaPropertyBuilder::isEnumOrFlag() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(EnumOrFlag);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Returns true if the property has the dynamic flag set;
-+    otherwise returns false.  The default value is false.
-+
-+    \sa setDynamic()
-+*/
-+bool QMetaPropertyBuilder::isDynamic() const
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->flag(Dynamic);
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Sets this property to readable if \a value is true.
-+
-+    \sa isReadable(), setWritable()
-+*/
-+void QMetaPropertyBuilder::setReadable(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Readable, value);
-+}
-+
-+/*!
-+    Sets this property to writable if \a value is true.
-+
-+    \sa isWritable(), setReadable()
-+*/
-+void QMetaPropertyBuilder::setWritable(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Writable, value);
-+}
-+
-+/*!
-+    Sets this property to resettable if \a value is true.
-+
-+    \sa isResettable()
-+*/
-+void QMetaPropertyBuilder::setResettable(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Resettable, value);
-+}
-+
-+/*!
-+    Sets this property to designable if \a value is true.
-+
-+    \sa isDesignable(), setScriptable(), setStored()
-+*/
-+void QMetaPropertyBuilder::setDesignable(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Designable, value);
-+}
-+
-+/*!
-+    Sets this property to scriptable if \a value is true.
-+
-+    \sa isScriptable(), setDesignable(), setStored()
-+*/
-+void QMetaPropertyBuilder::setScriptable(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Scriptable, value);
-+}
-+
-+/*!
-+    Sets this property to storable if \a value is true.
-+
-+    \sa isStored(), setDesignable(), setScriptable()
-+*/
-+void QMetaPropertyBuilder::setStored(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Stored, value);
-+}
-+
-+/*!
-+    Sets this property to editable if \a value is true.
-+
-+    \sa isEditable(), setDesignable(), setScriptable(), setStored()
-+*/
-+void QMetaPropertyBuilder::setEditable(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Editable, value);
-+}
-+
-+/*!
-+    Sets the \c USER flag on this property to \a value.
-+
-+    \sa isUser(), setDesignable(), setScriptable()
-+*/
-+void QMetaPropertyBuilder::setUser(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(User, value);
-+}
-+
-+/*!
-+    Sets the C++ setter flag on this property to \a value, which is
-+    true if the property has a C++ setter function that follows Qt's
-+    standard "name" / "setName" pattern.
-+
-+    \sa hasStdCppSet()
-+*/
-+void QMetaPropertyBuilder::setStdCppSet(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(StdCppSet, value);
-+}
-+
-+/*!
-+    Sets this property to be of an enumerator or flag type if
-+    \a value is true.
-+
-+    \sa isEnumOrFlag()
-+*/
-+void QMetaPropertyBuilder::setEnumOrFlag(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(EnumOrFlag, value);
-+}
-+
-+/*!
-+    Sets this property to have the dynamic flag if \a value is
-+    true.
-+
-+    \sa isDynamic()
-+*/
-+void QMetaPropertyBuilder::setDynamic(bool value)
-+{
-+    QMetaPropertyBuilderPrivate *d = d_func();
-+    if (d)
-+        d->setFlag(Dynamic, value);
-+}
-+
-+/*!
-+    \class QMetaEnumBuilder
-+    \internal
-+    \brief The QMetaEnumBuilder class enables modifications to an enumerator definition on a meta object builder.
-+*/
-+
-+QMetaEnumBuilderPrivate *QMetaEnumBuilder::d_func() const
-+{
-+    if (_mobj && _index >= 0 && _index < _mobj->d->enumerators.size())
-+        return &(_mobj->d->enumerators[_index]);
-+    else
-+        return 0;
-+}
-+
-+/*!
-+    \fn QMetaEnumBuilder::QMetaEnumBuilder()
-+    \internal
-+*/
-+
-+/*!
-+    \fn int QMetaEnumBuilder::index() const
-+
-+    Returns the index of this enumerator within its QMetaObjectBuilder.
-+*/
-+
-+/*!
-+    Returns the name of the enumerator (without the scope).
-+*/
-+QByteArray QMetaEnumBuilder::name() const
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->name;
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Returns true if this enumerator is used as a flag; otherwise returns
-+    false.
-+
-+    \sa setIsFlag()
-+*/
-+bool QMetaEnumBuilder::isFlag() const
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->isFlag;
-+    else
-+        return false;
-+}
-+
-+/*!
-+    Sets this enumerator to be used as a flag if \a value is true.
-+
-+    \sa isFlag()
-+*/
-+void QMetaEnumBuilder::setIsFlag(bool value)
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d)
-+        d->isFlag = value;
-+}
-+
-+/*!
-+    Returns the number of keys.
-+
-+    \sa key(), addKey()
-+*/
-+int QMetaEnumBuilder::keyCount() const
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d)
-+        return d->keys.size();
-+    else
-+        return 0;
-+}
-+
-+/*!
-+    Returns the key with the given \a index, or an empty QByteArray
-+    if no such key exists.
-+
-+    \sa keyCount(), addKey(), value()
-+*/
-+QByteArray QMetaEnumBuilder::key(int index) const
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d && index >= 0 && index < d->keys.size())
-+        return d->keys[index];
-+    else
-+        return QByteArray();
-+}
-+
-+/*!
-+    Returns the value with the given \a index; or returns -1 if there
-+    is no such value.
-+
-+    \sa keyCount(), addKey(), key()
-+*/
-+int QMetaEnumBuilder::value(int index) const
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d && index >= 0 && index < d->keys.size())
-+        return d->values[index];
-+    else
-+        return -1;
-+}
-+
-+/*!
-+    Adds a new key called \a name to this enumerator, associated
-+    with \a value.  Returns the index of the new key.
-+
-+    \sa keyCount(), key(), value(), removeKey()
-+*/
-+int QMetaEnumBuilder::addKey(const QByteArray& name, int value)
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d) {
-+        int index = d->keys.size();
-+        d->keys += name;
-+        d->values += value;
-+        return index;
-+    } else {
-+        return -1;
-+    }
-+}
-+
-+/*!
-+    Removes the key at \a index from this enumerator.
-+
-+    \sa addKey()
-+*/
-+void QMetaEnumBuilder::removeKey(int index)
-+{
-+    QMetaEnumBuilderPrivate *d = d_func();
-+    if (d && index >= 0 && index < d->keys.size()) {
-+        d->keys.removeAt(index);
-+        d->values.removeAt(index);
-+    }
-+}
-+
-+QTM_END_NAMESPACE
-diff --git a/src/serviceframework/ipc/qmetaobjectbuilder_47_p.h b/src/serviceframework/ipc/qmetaobjectbuilder_47_p.h
-new file mode 100644
-index 0000000..5f25e0f
---- /dev/null
-+++ b/src/serviceframework/ipc/qmetaobjectbuilder_47_p.h
-@@ -0,0 +1,338 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-+** All rights reserved.
-+** Contact: Nokia Corporation (qt-info@nokia.com)
-+**
-+** This file is part of the Qt Mobility Components.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** No Commercial Usage
-+** This file contains pre-release code and may not be distributed.
-+** You may use this file in accordance with the terms and conditions
-+** contained in the Technology Preview License Agreement accompanying
-+** this package.
-+**
-+** 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, Nokia gives you certain additional
-+** rights.  These rights are described in the Nokia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** If you have questions regarding the use of this file, please contact
-+** Nokia at qt-info@nokia.com.
-+**
-+**
-+**
-+**
-+**
-+**
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QMETAOBJECTBUILDER_H
-+#define QMETAOBJECTBUILDER_H
-+
-+//
-+//  W A R N I N G
-+//  -------------
-+//
-+// This file is not part of the Qt API.  It exists for the convenience
-+// of moc.  This header file may change from version to version without notice,
-+// or even be removed.
-+//
-+// We mean it.
-+//
-+
-+#include <qmobilityglobal.h>
-+#include <QtCore/qobject.h>
-+#include <QtCore/qmetaobject.h>
-+#include <QtCore/qdatastream.h>
-+#include <QtCore/qmap.h>
-+
-+QTM_BEGIN_NAMESPACE
-+
-+class QMetaObjectBuilderPrivate;
-+class QMetaMethodBuilder;
-+class QMetaMethodBuilderPrivate;
-+class QMetaPropertyBuilder;
-+class QMetaPropertyBuilderPrivate;
-+class QMetaEnumBuilder;
-+class QMetaEnumBuilderPrivate;
-+
-+#ifdef IGNORE_METAOBJECTBUILDER_EXPORT
-+  class QMetaObjectBuilder
-+#else
-+  class QM_AUTOTEST_EXPORT QMetaObjectBuilder
-+#endif
-+{
-+public:
-+    enum AddMember
-+    {
-+        ClassName               = 0x00000001,
-+        SuperClass              = 0x00000002,
-+        Methods                 = 0x00000004,
-+        Signals                 = 0x00000008,
-+        Slots                   = 0x00000010,
-+        Constructors            = 0x00000020,
-+        Properties              = 0x00000040,
-+        Enumerators             = 0x00000080,
-+        ClassInfos              = 0x00000100,
-+        RelatedMetaObjects      = 0x00000200,
-+        StaticMetacall          = 0x00000400,
-+        PublicMethods           = 0x00000800,
-+        ProtectedMethods        = 0x00001000,
-+        PrivateMethods          = 0x00002000,
-+        AllMembers              = 0x7FFFFFFF,
-+        AllPrimaryMembers       = 0x7FFFFBFC
-+    };
-+    Q_DECLARE_FLAGS(AddMembers, AddMember)
-+
-+    enum MetaObjectFlag {
-+        DynamicMetaObject = 0x01
-+    };
-+    Q_DECLARE_FLAGS(MetaObjectFlags, MetaObjectFlag)
-+
-+    QMetaObjectBuilder();
-+    explicit QMetaObjectBuilder(const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers);
-+    virtual ~QMetaObjectBuilder();
-+
-+    QByteArray className() const;
-+    void setClassName(const QByteArray& name);
-+
-+    const QMetaObject *superClass() const;
-+    void setSuperClass(const QMetaObject *meta);
-+
-+    MetaObjectFlags flags() const;
-+    void setFlags(MetaObjectFlags);
-+
-+    int methodCount() const;
-+    int constructorCount() const;
-+    int propertyCount() const;
-+    int enumeratorCount() const;
-+    int classInfoCount() const;
-+    int relatedMetaObjectCount() const;
-+
-+    QMetaMethodBuilder addMethod(const QByteArray& signature);
-+    QMetaMethodBuilder addMethod(const QByteArray& signature, const QByteArray& returnType);
-+    QMetaMethodBuilder addMethod(const QMetaMethod& prototype);
-+
-+    QMetaMethodBuilder addSlot(const QByteArray& signature);
-+    QMetaMethodBuilder addSignal(const QByteArray& signature);
-+
-+    QMetaMethodBuilder addConstructor(const QByteArray& signature);
-+    QMetaMethodBuilder addConstructor(const QMetaMethod& prototype);
-+
-+    QMetaPropertyBuilder addProperty(const QByteArray& name, const QByteArray& type, int notifierId=-1);
-+    QMetaPropertyBuilder addProperty(const QMetaProperty& prototype);
-+
-+    QMetaEnumBuilder addEnumerator(const QByteArray& name);
-+    QMetaEnumBuilder addEnumerator(const QMetaEnum& prototype);
-+
-+    int addClassInfo(const QByteArray& name, const QByteArray& value);
-+
-+#ifdef Q_NO_DATA_RELOCATION
-+    int addRelatedMetaObject(const QMetaObjectAccessor &meta);
-+#else
-+    int addRelatedMetaObject(const QMetaObject *meta);
-+#endif
-+
-+    void addMetaObject(const QMetaObject *prototype, QMetaObjectBuilder::AddMembers members = AllMembers);
-+
-+    QMetaMethodBuilder method(int index) const;
-+    QMetaMethodBuilder constructor(int index) const;
-+    QMetaPropertyBuilder property(int index) const;
-+    QMetaEnumBuilder enumerator(int index) const;
-+    const QMetaObject *relatedMetaObject(int index) const;
-+
-+    QByteArray classInfoName(int index) const;
-+    QByteArray classInfoValue(int index) const;
-+
-+    void removeMethod(int index);
-+    void removeConstructor(int index);
-+    void removeProperty(int index);
-+    void removeEnumerator(int index);
-+    void removeClassInfo(int index);
-+    void removeRelatedMetaObject(int index);
-+
-+    int indexOfMethod(const QByteArray& signature);
-+    int indexOfSignal(const QByteArray& signature);
-+    int indexOfSlot(const QByteArray& signature);
-+    int indexOfConstructor(const QByteArray& signature);
-+    int indexOfProperty(const QByteArray& name);
-+    int indexOfEnumerator(const QByteArray& name);
-+    int indexOfClassInfo(const QByteArray& name);
-+
-+    typedef int (*StaticMetacallFunction)(QMetaObject::Call, int, void **);
-+
-+    QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction() const;
-+    void setStaticMetacallFunction(QMetaObjectBuilder::StaticMetacallFunction value);
-+
-+    QMetaObject *toMetaObject() const;
-+    QByteArray toRelocatableData(bool * = 0) const;
-+    static void fromRelocatableData(QMetaObject *, const QMetaObject *, const QByteArray &);
-+
-+#ifndef QT_NO_DATASTREAM
-+    void serialize(QDataStream& stream) const;
-+    void deserialize
-+        (QDataStream& stream,
-+         const QMap<QByteArray, const QMetaObject *>& references);
-+#endif
-+
-+private:
-+    Q_DISABLE_COPY(QMetaObjectBuilder)
-+
-+    QMetaObjectBuilderPrivate *d;
-+
-+    friend class QMetaMethodBuilder;
-+    friend class QMetaPropertyBuilder;
-+    friend class QMetaEnumBuilder;
-+};
-+
-+#ifdef IGNORE_METAOBJECTBUILDER_EXPORT
-+  class QMetaMethodBuilder
-+#else
-+  class QM_AUTOTEST_EXPORT QMetaMethodBuilder
-+#endif
-+{
-+public:
-+    QMetaMethodBuilder() : _mobj(0), _index(0) {}
-+
-+    int index() const;
-+
-+    QMetaMethod::MethodType methodType() const;
-+    QByteArray signature() const;
-+
-+    QByteArray returnType() const;
-+    void setReturnType(const QByteArray& value);
-+
-+    QList<QByteArray> parameterNames() const;
-+    void setParameterNames(const QList<QByteArray>& value);
-+
-+    QByteArray tag() const;
-+    void setTag(const QByteArray& value);
-+
-+    QMetaMethod::Access access() const;
-+    void setAccess(QMetaMethod::Access value);
-+
-+    int attributes() const;
-+    void setAttributes(int value);
-+
-+private:
-+    const QMetaObjectBuilder *_mobj;
-+    int _index;
-+
-+    friend class QMetaObjectBuilder;
-+    friend class QMetaPropertyBuilder;
-+
-+    QMetaMethodBuilder(const QMetaObjectBuilder *mobj, int index)
-+        : _mobj(mobj), _index(index) {}
-+
-+    QMetaMethodBuilderPrivate *d_func() const;
-+};
-+
-+#ifdef IGNORE_METAOBJECTBUILDER_EXPORT
-+  class QMetaPropertyBuilder
-+#else
-+  class QM_AUTOTEST_EXPORT QMetaPropertyBuilder
-+#endif
-+{
-+public:
-+    QMetaPropertyBuilder() : _mobj(0), _index(0) {}
-+
-+    int index() const { return _index; }
-+
-+    QByteArray name() const;
-+    QByteArray type() const;
-+
-+    bool hasNotifySignal() const;
-+    QMetaMethodBuilder notifySignal() const;
-+    void setNotifySignal(const QMetaMethodBuilder& value);
-+    void removeNotifySignal();
-+
-+    bool isReadable() const;
-+    bool isWritable() const;
-+    bool isResettable() const;
-+    bool isDesignable() const;
-+    bool isScriptable() const;
-+    bool isStored() const;
-+    bool isEditable() const;
-+    bool isUser() const;
-+    bool hasStdCppSet() const;
-+    bool isEnumOrFlag() const;
-+    bool isDynamic() const;
-+
-+    void setReadable(bool value);
-+    void setWritable(bool value);
-+    void setResettable(bool value);
-+    void setDesignable(bool value);
-+    void setScriptable(bool value);
-+    void setStored(bool value);
-+    void setEditable(bool value);
-+    void setUser(bool value);
-+    void setStdCppSet(bool value);
-+    void setEnumOrFlag(bool value);
-+    void setDynamic(bool value);
-+
-+private:
-+    const QMetaObjectBuilder *_mobj;
-+    int _index;
-+
-+    friend class QMetaObjectBuilder;
-+
-+    QMetaPropertyBuilder(const QMetaObjectBuilder *mobj, int index)
-+        : _mobj(mobj), _index(index) {}
-+
-+    QMetaPropertyBuilderPrivate *d_func() const;
-+};
-+
-+#ifdef IGNORE_METAOBJECTBUILDER_EXPORT
-+  class QMetaEnumBuilder
-+#else
-+  class QM_AUTOTEST_EXPORT QMetaEnumBuilder
-+#endif
-+{
-+public:
-+    QMetaEnumBuilder() : _mobj(0), _index(0) {}
-+
-+    int index() const { return _index; }
-+
-+    QByteArray name() const;
-+
-+    bool isFlag() const;
-+    void setIsFlag(bool value);
-+
-+    int keyCount() const;
-+    QByteArray key(int index) const;
-+    int value(int index) const;
-+
-+    int addKey(const QByteArray& name, int value);
-+    void removeKey(int index);
-+
-+private:
-+    const QMetaObjectBuilder *_mobj;
-+    int _index;
-+
-+    friend class QMetaObjectBuilder;
-+
-+    QMetaEnumBuilder(const QMetaObjectBuilder *mobj, int index)
-+        : _mobj(mobj), _index(index) {}
-+
-+    QMetaEnumBuilderPrivate *d_func() const;
-+};
-+
-+Q_DECLARE_OPERATORS_FOR_FLAGS(QMetaObjectBuilder::AddMembers)
-+Q_DECLARE_OPERATORS_FOR_FLAGS(QMetaObjectBuilder::MetaObjectFlags)
-+
-+QTM_END_NAMESPACE
-+
-+#endif
-diff --git a/src/serviceframework/ipc/qmetaobjectbuilder_p.h b/src/serviceframework/ipc/qmetaobjectbuilder_p.h
-index 5f25e0f..7f29ddc 100644
---- a/src/serviceframework/ipc/qmetaobjectbuilder_p.h
-+++ b/src/serviceframework/ipc/qmetaobjectbuilder_p.h
-@@ -69,6 +69,8 @@ class QMetaPropertyBuilderPrivate;
- class QMetaEnumBuilder;
- class QMetaEnumBuilderPrivate;
- 
-+typedef const QMetaObject& (*QMetaObjectAccessor)();
-+
- #ifdef IGNORE_METAOBJECTBUILDER_EXPORT
-   class QMetaObjectBuilder
- #else
-@@ -172,7 +174,7 @@ public:
-     int indexOfEnumerator(const QByteArray& name);
-     int indexOfClassInfo(const QByteArray& name);
- 
--    typedef int (*StaticMetacallFunction)(QMetaObject::Call, int, void **);
-+    typedef QMetaObjectExtraData::StaticMetacallFunction StaticMetacallFunction;
- 
-     QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction() const;
-     void setStaticMetacallFunction(QMetaObjectBuilder::StaticMetacallFunction value);
-@@ -269,7 +271,8 @@ public:
-     bool isUser() const;
-     bool hasStdCppSet() const;
-     bool isEnumOrFlag() const;
--    bool isDynamic() const;
-+    bool isConstant() const;
-+    bool isFinal() const;
- 
-     void setReadable(bool value);
-     void setWritable(bool value);
-@@ -281,7 +284,8 @@ public:
-     void setUser(bool value);
-     void setStdCppSet(bool value);
-     void setEnumOrFlag(bool value);
--    void setDynamic(bool value);
-+    void setConstant(bool value);
-+    void setFinal(bool value);
- 
- private:
-     const QMetaObjectBuilder *_mobj;
-diff --git a/tests/auto/qmetaobjectbuilder/qmetaobjectbuilder.pro b/tests/auto/qmetaobjectbuilder/qmetaobjectbuilder.pro
-index 4cbc03a..fa6123b 100644
---- a/tests/auto/qmetaobjectbuilder/qmetaobjectbuilder.pro
-+++ b/tests/auto/qmetaobjectbuilder/qmetaobjectbuilder.pro
-@@ -9,7 +9,11 @@ QT = core
- include(../../../common.pri)
- 
- # Input 
--SOURCES += tst_qmetaobjectbuilder.cpp
-+contains(QT_MAJOR_VERSION, 4):lessThan(QT_MINOR_VERSION, 8) {
-+    SOURCES += tst_qmetaobjectbuilder_47.cpp
-+} else {
-+    SOURCES += tst_qmetaobjectbuilder.cpp
-+}
- 
- CONFIG += mobility
- MOBILITY = serviceframework
-diff --git a/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
-index 48ba43c..470d9e5 100644
---- a/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
-+++ b/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
-@@ -149,9 +149,9 @@ void tst_QMetaObjectBuilder::mocVersionCheck()
-     // whenenver moc changes.  Once QMetaObjectBuilder has been
-     // updated, this test can be changed to check for the next version.
-     int version = int(QObject::staticMetaObject.d.data[0]);
--    QVERIFY(version == 4 || version == 5);
-+    QVERIFY(version == 4 || version == 5 || version == 6);
-     version = int(staticMetaObject.d.data[0]);
--    QVERIFY(version == 4 || version == 5);
-+    QVERIFY(version == 4 || version == 5 || version == 6);
- }
- 
- void tst_QMetaObjectBuilder::create()
-@@ -555,7 +555,8 @@ void tst_QMetaObjectBuilder::property()
-     QVERIFY(!nullProp.isUser());
-     QVERIFY(!nullProp.hasStdCppSet());
-     QVERIFY(!nullProp.isEnumOrFlag());
--    QVERIFY(!nullProp.isDynamic());
-+    QVERIFY(!nullProp.isConstant());
-+    QVERIFY(!nullProp.isFinal());
-     QCOMPARE(nullProp.index(), 0);
- 
-     // Add a property and check its attributes.
-@@ -573,7 +574,8 @@ void tst_QMetaObjectBuilder::property()
-     QVERIFY(!prop1.isUser());
-     QVERIFY(!prop1.hasStdCppSet());
-     QVERIFY(!prop1.isEnumOrFlag());
--    QVERIFY(!prop1.isDynamic());
-+    QVERIFY(!prop1.isConstant());
-+    QVERIFY(!prop1.isFinal());
-     QCOMPARE(prop1.index(), 0);
-     QCOMPARE(builder.propertyCount(), 1);
- 
-@@ -592,7 +594,8 @@ void tst_QMetaObjectBuilder::property()
-     QVERIFY(!prop2.isUser());
-     QVERIFY(!prop2.hasStdCppSet());
-     QVERIFY(!prop2.isEnumOrFlag());
--    QVERIFY(!prop2.isDynamic());
-+    QVERIFY(!prop2.isConstant());
-+    QVERIFY(!prop2.isFinal());
-     QCOMPARE(prop2.index(), 1);
-     QCOMPARE(builder.propertyCount(), 2);
- 
-@@ -614,7 +617,8 @@ void tst_QMetaObjectBuilder::property()
-     prop1.setUser(true);
-     prop1.setStdCppSet(true);
-     prop1.setEnumOrFlag(true);
--    prop1.setDynamic(true);
-+    prop1.setConstant(true);
-+    prop1.setFinal(true);
- 
-     // Check that prop1 is changed, but prop2 is not.
-     QCOMPARE(prop1.name(), QByteArray("foo"));
-@@ -629,7 +633,8 @@ void tst_QMetaObjectBuilder::property()
-     QVERIFY(prop1.isUser());
-     QVERIFY(prop1.hasStdCppSet());
-     QVERIFY(prop1.isEnumOrFlag());
--    QVERIFY(prop1.isDynamic());
-+    QVERIFY(prop1.isConstant());
-+    QVERIFY(prop1.isFinal());
-     QVERIFY(prop2.isReadable());
-     QVERIFY(prop2.isWritable());
-     QCOMPARE(prop2.name(), QByteArray("bar"));
-@@ -642,7 +647,8 @@ void tst_QMetaObjectBuilder::property()
-     QVERIFY(!prop2.isUser());
-     QVERIFY(!prop2.hasStdCppSet());
-     QVERIFY(!prop2.isEnumOrFlag());
--    QVERIFY(!prop2.isDynamic());
-+    QVERIFY(!prop2.isConstant());
-+    QVERIFY(!prop2.isFinal());
- 
-     // Remove prop1 and check that prop2 becomes index 0.
-     builder.removeProperty(0);
-@@ -658,7 +664,8 @@ void tst_QMetaObjectBuilder::property()
-     QVERIFY(!prop2.isUser());
-     QVERIFY(!prop2.hasStdCppSet());
-     QVERIFY(!prop2.isEnumOrFlag());
--    QVERIFY(!prop2.isDynamic());
-+    QVERIFY(!prop2.isConstant());
-+    QVERIFY(!prop2.isFinal());
-     QCOMPARE(prop2.index(), 0);
- 
-     // Perform index-based lookup again.
-@@ -682,7 +689,8 @@ void tst_QMetaObjectBuilder::property()
-             prop2.setUser(false); \
-             prop2.setStdCppSet(false); \
-             prop2.setEnumOrFlag(false); \
--            prop2.setDynamic(false); \
-+            prop2.setConstant(false); \
-+            prop2.setFinal(false); \
-         } while (0)
- #define COUNT_FLAGS() \
-         ((prop2.isReadable() ? 1 : 0) + \
-@@ -695,7 +703,8 @@ void tst_QMetaObjectBuilder::property()
-          (prop2.isUser() ? 1 : 0) + \
-          (prop2.hasStdCppSet() ? 1 : 0) + \
-          (prop2.isEnumOrFlag() ? 1 : 0) + \
--         (prop2.isDynamic() ? 1 : 0)) 
-+         (prop2.isConstant() ? 1 : 0) + \
-+         (prop2.isFinal() ? 1 : 0))
- #define CHECK_FLAG(setFunc,isFunc) \
-         do { \
-             CLEAR_FLAGS(); \
-@@ -714,7 +723,8 @@ void tst_QMetaObjectBuilder::property()
-     CHECK_FLAG(setUser, isUser);
-     CHECK_FLAG(setStdCppSet, hasStdCppSet);
-     CHECK_FLAG(setEnumOrFlag, isEnumOrFlag);
--    CHECK_FLAG(setDynamic, isDynamic);
-+    CHECK_FLAG(setConstant, isConstant);
-+    CHECK_FLAG(setFinal, isFinal);
- 
-     // Check that nothing else changed.
-     QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Properties));
-@@ -958,9 +968,9 @@ void tst_QMetaObjectBuilder::relatedMetaObject()
-     QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::RelatedMetaObjects));
- }
- 
--static int smetacall(QMetaObject::Call, int, void **)
-+static void smetacall(QObject *, QMetaObject::Call, int, void **)
- {
--    return 0;
-+    return;
- }
- 
- void tst_QMetaObjectBuilder::staticMetacall()
-@@ -1263,8 +1273,8 @@ bool tst_QMetaObjectBuilder::sameMetaObject
-         if (extra1 && extra2) {
-             if (extra1->static_metacall != extra2->static_metacall)
-                 return false;
--            //objects1 = extra1->objects;
--            //objects2 = extra1->objects;
-+            objects1 = extra1->objects;
-+            objects2 = extra1->objects;
-         }
-     } else if (meta1->d.data[0] == meta2->d.data[0] && meta1->d.data[0] == 1) {
-         objects1 = (const QMetaObject **)(meta1->d.extradata);
-diff --git a/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder_47.cpp b/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder_47.cpp
-new file mode 100644
-index 0000000..96a7eca
---- /dev/null
-+++ b/tests/auto/qmetaobjectbuilder/tst_qmetaobjectbuilder_47.cpp
-@@ -0,0 +1,1283 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-+** All rights reserved.
-+** Contact: Nokia Corporation (qt-info@nokia.com)
-+**
-+** This file is part of the test suite of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** No Commercial Usage
-+** This file contains pre-release code and may not be distributed.
-+** You may use this file in accordance with the terms and conditions
-+** contained in the Technology Preview License Agreement accompanying
-+** this package.
-+**
-+** 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, Nokia gives you certain additional
-+** rights.  These rights are described in the Nokia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** If you have questions regarding the use of this file, please contact
-+** Nokia at qt-info@nokia.com.
-+**
-+**
-+**
-+**
-+**
-+**
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+//TESTED_COMPONENT=src/serviceframework
-+
-+#include <qmobilityglobal.h>
-+#include <QtTest/QtTest>
-+#include <QtCore/qlocale.h>
-+#include <qmetaobjectbuilder_47_p.h>
-+
-+QTM_USE_NAMESPACE
-+
-+class tst_QMetaObjectBuilder : public QObject
-+{
-+    Q_OBJECT
-+public:
-+    tst_QMetaObjectBuilder() {}
-+    ~tst_QMetaObjectBuilder() {}
-+
-+private slots:
-+    void mocVersionCheck();
-+    void create();
-+    void className();
-+    void superClass();
-+    void flags();
-+    void method();
-+    void slot();
-+    void signal();
-+    void constructor();
-+    void property();
-+    void notifySignal();
-+    void enumerator();
-+    void classInfo();
-+    void relatedMetaObject();
-+    void staticMetacall();
-+    void copyMetaObject();
-+    void serialize();
-+    void removeNotifySignal();
-+
-+private:
-+    static bool checkForSideEffects
-+        (const QMetaObjectBuilder& builder,
-+         QMetaObjectBuilder::AddMembers members);
-+    static bool sameMetaObject
-+        (const QMetaObject *meta1, const QMetaObject *meta2);
-+};
-+
-+#ifdef Q_NO_DATA_RELOCATION
-+const QMetaObject *meta;
-+#endif
-+
-+// Dummy class that has something of every type of thing moc can generate.
-+class SomethingOfEverything : public QObject
-+{
-+    Q_OBJECT
-+    Q_CLASSINFO("ci_foo", "ABC")
-+    Q_CLASSINFO("ci_bar", "DEF")
-+    Q_PROPERTY(QString prop READ prop WRITE setProp NOTIFY propChanged)
-+    Q_PROPERTY(QString prop2 READ prop WRITE setProp)
-+    Q_PROPERTY(SomethingEnum eprop READ eprop)
-+    Q_PROPERTY(SomethingFlagEnum fprop READ fprop)
-+    Q_PROPERTY(QLocale::Language language READ language)
-+    Q_ENUMS(SomethingEnum)
-+    Q_FLAGS(SomethingFlagEnum)
-+public:
-+    Q_INVOKABLE SomethingOfEverything() {}
-+    ~SomethingOfEverything() {}
-+
-+    enum SomethingEnum
-+    {
-+        GHI,
-+        JKL = 10
-+    };
-+
-+    enum SomethingFlagEnum
-+    {
-+        XYZ = 1,
-+        UVW = 8
-+    };
-+
-+    Q_INVOKABLE Q_SCRIPTABLE void method1() {}
-+
-+    QString prop() const { return QString(); }
-+    void setProp(const QString& v) { Q_UNUSED(v); }
-+
-+    SomethingOfEverything::SomethingEnum eprop() const { return GHI; }
-+    SomethingOfEverything::SomethingFlagEnum fprop() const { return XYZ; }
-+    QLocale::Language language() const { return QLocale::English; }
-+
-+public slots:
-+    void slot1(const QString&) {}
-+    void slot2(int, const QString&) {}
-+
-+private slots:
-+    void slot3() {}
-+
-+protected slots:
-+    Q_SCRIPTABLE void slot4(int) {}
-+    void slot5(int a, const QString& b) { Q_UNUSED(a); Q_UNUSED(b); }
-+
-+signals:
-+    void sig1();
-+    void sig2(int x, const QString& y);
-+    void propChanged(const QString&);
-+};
-+
-+void tst_QMetaObjectBuilder::mocVersionCheck()
-+{
-+    // This test will fail when the moc version number is changed.
-+    // It is intended as a reminder to also update QMetaObjectBuilder
-+    // whenenver moc changes.  Once QMetaObjectBuilder has been
-+    // updated, this test can be changed to check for the next version.
-+    int version = int(QObject::staticMetaObject.d.data[0]);
-+    QVERIFY(version == 4 || version == 5 || version == 6);
-+    version = int(staticMetaObject.d.data[0]);
-+    QVERIFY(version == 4 || version == 5 || version == 6);
-+}
-+
-+void tst_QMetaObjectBuilder::create()
-+{
-+    QMetaObjectBuilder builder;
-+    QVERIFY(builder.className().isEmpty());
-+    QVERIFY(builder.superClass() == &QObject::staticMetaObject);
-+    QCOMPARE(builder.methodCount(), 0);
-+    QCOMPARE(builder.constructorCount(), 0);
-+    QCOMPARE(builder.propertyCount(), 0);
-+    QCOMPARE(builder.enumeratorCount(), 0);
-+    QCOMPARE(builder.classInfoCount(), 0);
-+    QCOMPARE(builder.relatedMetaObjectCount(), 0);
-+    QVERIFY(builder.staticMetacallFunction() == 0);
-+}
-+
-+void tst_QMetaObjectBuilder::className()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Change the class name.
-+    builder.setClassName("Foo");
-+    QCOMPARE(builder.className(), QByteArray("Foo"));
-+
-+    // Change it again.
-+    builder.setClassName("Bar");
-+    QCOMPARE(builder.className(), QByteArray("Bar"));
-+
-+    // Clone the class name off a static QMetaObject.
-+    builder.addMetaObject(&QObject::staticMetaObject, QMetaObjectBuilder::ClassName);
-+    QCOMPARE(builder.className(), QByteArray("QObject"));
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::ClassName));
-+}
-+
-+void tst_QMetaObjectBuilder::superClass()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Change the super class.
-+    builder.setSuperClass(&QObject::staticMetaObject);
-+    QVERIFY(builder.superClass() == &QObject::staticMetaObject);
-+
-+    // Change it again.
-+    builder.setSuperClass(&staticMetaObject);
-+    QVERIFY(builder.superClass() == &staticMetaObject);
-+
-+    // Clone the super class off a static QMetaObject.
-+    builder.addMetaObject(&QObject::staticMetaObject, QMetaObjectBuilder::SuperClass);
-+    QVERIFY(builder.superClass() == 0);
-+    builder.addMetaObject(&staticMetaObject, QMetaObjectBuilder::SuperClass);
-+    QVERIFY(builder.superClass() == staticMetaObject.superClass());
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::SuperClass));
-+}
-+
-+void tst_QMetaObjectBuilder::flags()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Check default
-+    QVERIFY(builder.flags() == 0);
-+
-+    // Set flags
-+    builder.setFlags(QMetaObjectBuilder::DynamicMetaObject);
-+    QVERIFY(builder.flags() == QMetaObjectBuilder::DynamicMetaObject);
-+}
-+
-+void tst_QMetaObjectBuilder::method()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Check null method
-+    QMetaMethodBuilder nullMethod;
-+    QCOMPARE(nullMethod.signature(), QByteArray());
-+    QVERIFY(nullMethod.methodType() == QMetaMethod::Method);
-+    QVERIFY(nullMethod.returnType().isEmpty());
-+    QVERIFY(nullMethod.parameterNames().isEmpty());
-+    QVERIFY(nullMethod.tag().isEmpty());
-+    QVERIFY(nullMethod.access() == QMetaMethod::Public);
-+    QCOMPARE(nullMethod.attributes(), 0);
-+    QCOMPARE(nullMethod.index(), 0);
-+
-+    // Add a method and check its attributes.
-+    QMetaMethodBuilder method1 = builder.addMethod("foo(const QString&, int)");
-+    QCOMPARE(method1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(method1.methodType() == QMetaMethod::Method);
-+    QVERIFY(method1.returnType().isEmpty());
-+    QVERIFY(method1.parameterNames().isEmpty());
-+    QVERIFY(method1.tag().isEmpty());
-+    QVERIFY(method1.access() == QMetaMethod::Public);
-+    QCOMPARE(method1.attributes(), 0);
-+    QCOMPARE(method1.index(), 0);
-+    QCOMPARE(builder.methodCount(), 1);
-+
-+    // Add another method and check again.
-+    QMetaMethodBuilder method2 = builder.addMethod("bar(QString)", "int");
-+    QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(method2.methodType() == QMetaMethod::Method);
-+    QCOMPARE(method2.returnType(), QByteArray("int"));
-+    QVERIFY(method2.parameterNames().isEmpty());
-+    QVERIFY(method2.tag().isEmpty());
-+    QVERIFY(method2.access() == QMetaMethod::Public);
-+    QCOMPARE(method2.attributes(), 0);
-+    QCOMPARE(method2.index(), 1);
-+    QCOMPARE(builder.methodCount(), 2);
-+
-+    // Perform index-based lookup.
-+    QCOMPARE(builder.indexOfMethod("foo(const QString&, int)"), 0);
-+    QCOMPARE(builder.indexOfMethod("bar(QString)"), 1);
-+    QCOMPARE(builder.indexOfMethod("baz()"), -1);
-+
-+    // Modify the attributes on method1.
-+    method1.setReturnType("int");
-+    method1.setParameterNames(QList<QByteArray>() << "a" << "b");
-+    method1.setTag("tag");
-+    method1.setAccess(QMetaMethod::Private);
-+    method1.setAttributes(42);
-+
-+    // Check that method1 is changed, but method2 is not.
-+    QCOMPARE(method1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(method1.methodType() == QMetaMethod::Method);
-+    QCOMPARE(method1.returnType(), QByteArray("int"));
-+    QCOMPARE(method1.parameterNames(), QList<QByteArray>() << "a" << "b");
-+    QCOMPARE(method1.tag(), QByteArray("tag"));
-+    QVERIFY(method1.access() == QMetaMethod::Private);
-+    QCOMPARE(method1.attributes(), 42);
-+    QCOMPARE(method1.index(), 0);
-+    QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(method2.methodType() == QMetaMethod::Method);
-+    QCOMPARE(method2.returnType(), QByteArray("int"));
-+    QVERIFY(method2.parameterNames().isEmpty());
-+    QVERIFY(method2.tag().isEmpty());
-+    QVERIFY(method2.access() == QMetaMethod::Public);
-+    QCOMPARE(method2.attributes(), 0);
-+    QCOMPARE(method2.index(), 1);
-+    QCOMPARE(builder.methodCount(), 2);
-+
-+    // Modify the attributes on method2.
-+    method2.setReturnType("QString");
-+    method2.setParameterNames(QList<QByteArray>() << "c");
-+    method2.setTag("Q_FOO");
-+    method2.setAccess(QMetaMethod::Protected);
-+    method2.setAttributes(24);
-+
-+    // This time check that only method2 changed.
-+    QCOMPARE(method1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(method1.methodType() == QMetaMethod::Method);
-+    QCOMPARE(method1.returnType(), QByteArray("int"));
-+    QCOMPARE(method1.parameterNames(), QList<QByteArray>() << "a" << "b");
-+    QCOMPARE(method1.tag(), QByteArray("tag"));
-+    QVERIFY(method1.access() == QMetaMethod::Private);
-+    QCOMPARE(method1.attributes(), 42);
-+    QCOMPARE(method1.index(), 0);
-+    QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(method2.methodType() == QMetaMethod::Method);
-+    QCOMPARE(method2.returnType(), QByteArray("QString"));
-+    QCOMPARE(method2.parameterNames(), QList<QByteArray>() << "c");
-+    QCOMPARE(method2.tag(), QByteArray("Q_FOO"));
-+    QVERIFY(method2.access() == QMetaMethod::Protected);
-+    QCOMPARE(method2.attributes(), 24);
-+    QCOMPARE(method2.index(), 1);
-+    QCOMPARE(builder.methodCount(), 2);
-+
-+    // Remove method1 and check that method2 becomes index 0.
-+    builder.removeMethod(0);
-+    QCOMPARE(builder.methodCount(), 1);
-+    method2 = builder.method(0);
-+    QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(method2.methodType() == QMetaMethod::Method);
-+    QCOMPARE(method2.returnType(), QByteArray("QString"));
-+    QCOMPARE(method2.parameterNames(), QList<QByteArray>() << "c");
-+    QCOMPARE(method2.tag(), QByteArray("Q_FOO"));
-+    QVERIFY(method2.access() == QMetaMethod::Protected);
-+    QCOMPARE(method2.attributes(), 24);
-+    QCOMPARE(method2.index(), 0);
-+
-+    // Perform index-based lookup again.
-+    QCOMPARE(builder.indexOfMethod("foo(const QString&, int)"), -1);
-+    QCOMPARE(builder.indexOfMethod("bar(QString)"), 0);
-+    QCOMPARE(builder.indexOfMethod("baz()"), -1);
-+    QCOMPARE(builder.method(0).signature(), QByteArray("bar(QString)"));
-+    QCOMPARE(builder.method(9).signature(), QByteArray());
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Methods));
-+}
-+
-+void tst_QMetaObjectBuilder::slot()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Add a slot and check its attributes.
-+    QMetaMethodBuilder method1 = builder.addSlot("foo(const QString&, int)");
-+    QCOMPARE(method1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(method1.methodType() == QMetaMethod::Slot);
-+    QVERIFY(method1.returnType().isEmpty());
-+    QVERIFY(method1.parameterNames().isEmpty());
-+    QVERIFY(method1.tag().isEmpty());
-+    QVERIFY(method1.access() == QMetaMethod::Public);
-+    QCOMPARE(method1.attributes(), 0);
-+    QCOMPARE(method1.index(), 0);
-+    QCOMPARE(builder.methodCount(), 1);
-+
-+    // Add another slot and check again.
-+    QMetaMethodBuilder method2 = builder.addSlot("bar(QString)");
-+    QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(method2.methodType() == QMetaMethod::Slot);
-+    QVERIFY(method2.returnType().isEmpty());
-+    QVERIFY(method2.parameterNames().isEmpty());
-+    QVERIFY(method2.tag().isEmpty());
-+    QVERIFY(method2.access() == QMetaMethod::Public);
-+    QCOMPARE(method2.attributes(), 0);
-+    QCOMPARE(method2.index(), 1);
-+    QCOMPARE(builder.methodCount(), 2);
-+
-+    // Perform index-based lookup
-+    QCOMPARE(builder.indexOfSlot("foo(const QString &, int)"), 0);
-+    QCOMPARE(builder.indexOfSlot("bar(QString)"), 1);
-+    QCOMPARE(builder.indexOfSlot("baz()"), -1);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Methods));
-+}
-+
-+void tst_QMetaObjectBuilder::signal()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Add a signal and check its attributes.
-+    QMetaMethodBuilder method1 = builder.addSignal("foo(const QString&, int)");
-+    QCOMPARE(method1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(method1.methodType() == QMetaMethod::Signal);
-+    QVERIFY(method1.returnType().isEmpty());
-+    QVERIFY(method1.parameterNames().isEmpty());
-+    QVERIFY(method1.tag().isEmpty());
-+    QVERIFY(method1.access() == QMetaMethod::Protected);
-+    QCOMPARE(method1.attributes(), 0);
-+    QCOMPARE(method1.index(), 0);
-+    QCOMPARE(builder.methodCount(), 1);
-+
-+    // Add another signal and check again.
-+    QMetaMethodBuilder method2 = builder.addSignal("bar(QString)");
-+    QCOMPARE(method2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(method2.methodType() == QMetaMethod::Signal);
-+    QVERIFY(method2.returnType().isEmpty());
-+    QVERIFY(method2.parameterNames().isEmpty());
-+    QVERIFY(method2.tag().isEmpty());
-+    QVERIFY(method2.access() == QMetaMethod::Protected);
-+    QCOMPARE(method2.attributes(), 0);
-+    QCOMPARE(method2.index(), 1);
-+    QCOMPARE(builder.methodCount(), 2);
-+
-+    // Perform index-based lookup
-+    QCOMPARE(builder.indexOfSignal("foo(const QString &, int)"), 0);
-+    QCOMPARE(builder.indexOfSignal("bar(QString)"), 1);
-+    QCOMPARE(builder.indexOfSignal("baz()"), -1);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Methods));
-+}
-+
-+void tst_QMetaObjectBuilder::constructor()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Add a constructor and check its attributes.
-+    QMetaMethodBuilder ctor1 = builder.addConstructor("foo(const QString&, int)");
-+    QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(ctor1.methodType() == QMetaMethod::Constructor);
-+    QVERIFY(ctor1.returnType().isEmpty());
-+    QVERIFY(ctor1.parameterNames().isEmpty());
-+    QVERIFY(ctor1.tag().isEmpty());
-+    QVERIFY(ctor1.access() == QMetaMethod::Public);
-+    QCOMPARE(ctor1.attributes(), 0);
-+    QCOMPARE(ctor1.index(), 0);
-+    QCOMPARE(builder.constructorCount(), 1);
-+
-+    // Add another constructor and check again.
-+    QMetaMethodBuilder ctor2 = builder.addConstructor("bar(QString)");
-+    QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(ctor2.methodType() == QMetaMethod::Constructor);
-+    QVERIFY(ctor2.returnType().isEmpty());
-+    QVERIFY(ctor2.parameterNames().isEmpty());
-+    QVERIFY(ctor2.tag().isEmpty());
-+    QVERIFY(ctor2.access() == QMetaMethod::Public);
-+    QCOMPARE(ctor2.attributes(), 0);
-+    QCOMPARE(ctor2.index(), 1);
-+    QCOMPARE(builder.constructorCount(), 2);
-+
-+    // Perform index-based lookup.
-+    QCOMPARE(builder.indexOfConstructor("foo(const QString&, int)"), 0);
-+    QCOMPARE(builder.indexOfConstructor("bar(QString)"), 1);
-+    QCOMPARE(builder.indexOfConstructor("baz()"), -1);
-+    QCOMPARE(builder.constructor(1).signature(), QByteArray("bar(QString)"));
-+    QCOMPARE(builder.constructor(9).signature(), QByteArray());
-+
-+    // Modify the attributes on ctor1.
-+    ctor1.setReturnType("int");
-+    ctor1.setParameterNames(QList<QByteArray>() << "a" << "b");
-+    ctor1.setTag("tag");
-+    ctor1.setAccess(QMetaMethod::Private);
-+    ctor1.setAttributes(42);
-+
-+    // Check that ctor1 is changed, but ctor2 is not.
-+    QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(ctor1.methodType() == QMetaMethod::Constructor);
-+    QCOMPARE(ctor1.returnType(), QByteArray("int"));
-+    QCOMPARE(ctor1.parameterNames(), QList<QByteArray>() << "a" << "b");
-+    QCOMPARE(ctor1.tag(), QByteArray("tag"));
-+    QVERIFY(ctor1.access() == QMetaMethod::Private);
-+    QCOMPARE(ctor1.attributes(), 42);
-+    QCOMPARE(ctor1.index(), 0);
-+    QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(ctor2.methodType() == QMetaMethod::Constructor);
-+    QVERIFY(ctor2.returnType().isEmpty());
-+    QVERIFY(ctor2.parameterNames().isEmpty());
-+    QVERIFY(ctor2.tag().isEmpty());
-+    QVERIFY(ctor2.access() == QMetaMethod::Public);
-+    QCOMPARE(ctor2.attributes(), 0);
-+    QCOMPARE(ctor2.index(), 1);
-+    QCOMPARE(builder.constructorCount(), 2);
-+
-+    // Modify the attributes on ctor2.
-+    ctor2.setReturnType("QString");
-+    ctor2.setParameterNames(QList<QByteArray>() << "c");
-+    ctor2.setTag("Q_FOO");
-+    ctor2.setAccess(QMetaMethod::Protected);
-+    ctor2.setAttributes(24);
-+
-+    // This time check that only ctor2 changed.
-+    QCOMPARE(ctor1.signature(), QByteArray("foo(QString,int)"));
-+    QVERIFY(ctor1.methodType() == QMetaMethod::Constructor);
-+    QCOMPARE(ctor1.returnType(), QByteArray("int"));
-+    QCOMPARE(ctor1.parameterNames(), QList<QByteArray>() << "a" << "b");
-+    QCOMPARE(ctor1.tag(), QByteArray("tag"));
-+    QVERIFY(ctor1.access() == QMetaMethod::Private);
-+    QCOMPARE(ctor1.attributes(), 42);
-+    QCOMPARE(ctor1.index(), 0);
-+    QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(ctor2.methodType() == QMetaMethod::Constructor);
-+    QCOMPARE(ctor2.returnType(), QByteArray("QString"));
-+    QCOMPARE(ctor2.parameterNames(), QList<QByteArray>() << "c");
-+    QCOMPARE(ctor2.tag(), QByteArray("Q_FOO"));
-+    QVERIFY(ctor2.access() == QMetaMethod::Protected);
-+    QCOMPARE(ctor2.attributes(), 24);
-+    QCOMPARE(ctor2.index(), 1);
-+    QCOMPARE(builder.constructorCount(), 2);
-+
-+    // Remove ctor1 and check that ctor2 becomes index 0.
-+    builder.removeConstructor(0);
-+    QCOMPARE(builder.constructorCount(), 1);
-+    ctor2 = builder.constructor(0);
-+    QCOMPARE(ctor2.signature(), QByteArray("bar(QString)"));
-+    QVERIFY(ctor2.methodType() == QMetaMethod::Constructor);
-+    QCOMPARE(ctor2.returnType(), QByteArray("QString"));
-+    QCOMPARE(ctor2.parameterNames(), QList<QByteArray>() << "c");
-+    QCOMPARE(ctor2.tag(), QByteArray("Q_FOO"));
-+    QVERIFY(ctor2.access() == QMetaMethod::Protected);
-+    QCOMPARE(ctor2.attributes(), 24);
-+    QCOMPARE(ctor2.index(), 0);
-+
-+    // Perform index-based lookup again.
-+    QCOMPARE(builder.indexOfConstructor("foo(const QString&, int)"), -1);
-+    QCOMPARE(builder.indexOfConstructor("bar(QString)"), 0);
-+    QCOMPARE(builder.indexOfConstructor("baz()"), -1);
-+
-+    // Add constructor from prototype
-+    QMetaMethod prototype = SomethingOfEverything::staticMetaObject.constructor(0);
-+    QMetaMethodBuilder prototypeConstructor = builder.addMethod(prototype);
-+    QCOMPARE(builder.constructorCount(), 2);
-+
-+    QCOMPARE(prototypeConstructor.signature(), QByteArray("SomethingOfEverything()"));
-+    QVERIFY(prototypeConstructor.methodType() == QMetaMethod::Constructor);
-+    QCOMPARE(prototypeConstructor.returnType(), QByteArray());
-+    QVERIFY(prototypeConstructor.access() == QMetaMethod::Public);
-+    QCOMPARE(prototypeConstructor.index(), 1);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Constructors));
-+}
-+
-+void tst_QMetaObjectBuilder::property()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Null property builder
-+    QMetaPropertyBuilder nullProp;
-+    QCOMPARE(nullProp.name(), QByteArray());
-+    QCOMPARE(nullProp.type(), QByteArray());
-+    QVERIFY(!nullProp.hasNotifySignal());
-+    QVERIFY(!nullProp.isReadable());
-+    QVERIFY(!nullProp.isWritable());
-+    QVERIFY(!nullProp.isResettable());
-+    QVERIFY(!nullProp.isDesignable());
-+    QVERIFY(!nullProp.isScriptable());
-+    QVERIFY(!nullProp.isStored());
-+    QVERIFY(!nullProp.isEditable());
-+    QVERIFY(!nullProp.isUser());
-+    QVERIFY(!nullProp.hasStdCppSet());
-+    QVERIFY(!nullProp.isEnumOrFlag());
-+   QCOMPARE(nullProp.index(), 0);
-+
-+    // Add a property and check its attributes.
-+    QMetaPropertyBuilder prop1 = builder.addProperty("foo", "const QString &");
-+    QCOMPARE(prop1.name(), QByteArray("foo"));
-+    QCOMPARE(prop1.type(), QByteArray("QString"));
-+    QVERIFY(!prop1.hasNotifySignal());
-+    QVERIFY(prop1.isReadable());
-+    QVERIFY(prop1.isWritable());
-+    QVERIFY(!prop1.isResettable());
-+    QVERIFY(!prop1.isDesignable());
-+    QVERIFY(prop1.isScriptable());
-+    QVERIFY(!prop1.isStored());
-+    QVERIFY(!prop1.isEditable());
-+    QVERIFY(!prop1.isUser());
-+    QVERIFY(!prop1.hasStdCppSet());
-+    QVERIFY(!prop1.isEnumOrFlag());
-+
-+    QCOMPARE(prop1.index(), 0);
-+    QCOMPARE(builder.propertyCount(), 1);
-+
-+    // Add another property and check again.
-+    QMetaPropertyBuilder prop2 = builder.addProperty("bar", "int");
-+    QCOMPARE(prop2.name(), QByteArray("bar"));
-+    QCOMPARE(prop2.type(), QByteArray("int"));
-+    QVERIFY(!prop2.hasNotifySignal());
-+    QVERIFY(prop2.isReadable());
-+    QVERIFY(prop2.isWritable());
-+    QVERIFY(!prop2.isResettable());
-+    QVERIFY(!prop2.isDesignable());
-+    QVERIFY(prop2.isScriptable());
-+    QVERIFY(!prop2.isStored());
-+    QVERIFY(!prop2.isEditable());
-+    QVERIFY(!prop2.isUser());
-+    QVERIFY(!prop2.hasStdCppSet());
-+    QVERIFY(!prop2.isEnumOrFlag());
-+
-+    QCOMPARE(prop2.index(), 1);
-+    QCOMPARE(builder.propertyCount(), 2);
-+
-+    // Perform index-based lookup.
-+    QCOMPARE(builder.indexOfProperty("foo"), 0);
-+    QCOMPARE(builder.indexOfProperty("bar"), 1);
-+    QCOMPARE(builder.indexOfProperty("baz"), -1);
-+    QCOMPARE(builder.property(1).name(), QByteArray("bar"));
-+    QCOMPARE(builder.property(9).name(), QByteArray());
-+
-+    // Modify the attributes on prop1.
-+    prop1.setReadable(false);
-+    prop1.setWritable(false);
-+    prop1.setResettable(true);
-+    prop1.setDesignable(true);
-+    prop1.setScriptable(false);
-+    prop1.setStored(true);
-+    prop1.setEditable(true);
-+    prop1.setUser(true);
-+    prop1.setStdCppSet(true);
-+    prop1.setEnumOrFlag(true);
-+
-+    // Check that prop1 is changed, but prop2 is not.
-+    QCOMPARE(prop1.name(), QByteArray("foo"));
-+    QCOMPARE(prop1.type(), QByteArray("QString"));
-+    QVERIFY(!prop1.isReadable());
-+    QVERIFY(!prop1.isWritable());
-+    QVERIFY(prop1.isResettable());
-+    QVERIFY(prop1.isDesignable());
-+    QVERIFY(!prop1.isScriptable());
-+    QVERIFY(prop1.isStored());
-+    QVERIFY(prop1.isEditable());
-+    QVERIFY(prop1.isUser());
-+    QVERIFY(prop1.hasStdCppSet());
-+    QVERIFY(prop1.isEnumOrFlag());
-+    QVERIFY(prop2.isReadable());
-+    QVERIFY(prop2.isWritable());
-+    QCOMPARE(prop2.name(), QByteArray("bar"));
-+    QCOMPARE(prop2.type(), QByteArray("int"));
-+    QVERIFY(!prop2.isResettable());
-+    QVERIFY(!prop2.isDesignable());
-+    QVERIFY(prop2.isScriptable());
-+    QVERIFY(!prop2.isStored());
-+    QVERIFY(!prop2.isEditable());
-+    QVERIFY(!prop2.isUser());
-+    QVERIFY(!prop2.hasStdCppSet());
-+    QVERIFY(!prop2.isEnumOrFlag());
-+
-+    // Remove prop1 and check that prop2 becomes index 0.
-+    builder.removeProperty(0);
-+    QCOMPARE(builder.propertyCount(), 1);
-+    prop2 = builder.property(0);
-+    QCOMPARE(prop2.name(), QByteArray("bar"));
-+    QCOMPARE(prop2.type(), QByteArray("int"));
-+    QVERIFY(!prop2.isResettable());
-+    QVERIFY(!prop2.isDesignable());
-+    QVERIFY(prop2.isScriptable());
-+    QVERIFY(!prop2.isStored());
-+    QVERIFY(!prop2.isEditable());
-+    QVERIFY(!prop2.isUser());
-+    QVERIFY(!prop2.hasStdCppSet());
-+    QVERIFY(!prop2.isEnumOrFlag());
-+    QCOMPARE(prop2.index(), 0);
-+
-+    // Perform index-based lookup again.
-+    QCOMPARE(builder.indexOfProperty("foo"), -1);
-+    QCOMPARE(builder.indexOfProperty("bar"), 0);
-+    QCOMPARE(builder.indexOfProperty("baz"), -1);
-+
-+    // Check for side-effects between the flags on prop2.
-+    // Setting a flag to true shouldn't set any of the others to true.
-+    // This checks for cut-and-paste bugs in the implementation where
-+    // the flag code was pasted but the flag name was not changed.
-+#define CLEAR_FLAGS() \
-+        do { \
-+            prop2.setReadable(false); \
-+            prop2.setWritable(false); \
-+            prop2.setResettable(false); \
-+            prop2.setDesignable(false); \
-+            prop2.setScriptable(false); \
-+            prop2.setStored(false); \
-+            prop2.setEditable(false); \
-+            prop2.setUser(false); \
-+            prop2.setStdCppSet(false); \
-+            prop2.setEnumOrFlag(false); \
-+        } while (0)
-+#define COUNT_FLAGS() \
-+        ((prop2.isReadable() ? 1 : 0) + \
-+         (prop2.isWritable() ? 1 : 0) + \
-+         (prop2.isResettable() ? 1 : 0) + \
-+         (prop2.isDesignable() ? 1 : 0) + \
-+         (prop2.isScriptable() ? 1 : 0) + \
-+         (prop2.isStored() ? 1 : 0) + \
-+         (prop2.isEditable() ? 1 : 0) + \
-+         (prop2.isUser() ? 1 : 0) + \
-+         (prop2.hasStdCppSet() ? 1 : 0) + \
-+         (prop2.isEnumOrFlag() ? 1 : 0))
-+#define CHECK_FLAG(setFunc,isFunc) \
-+        do { \
-+            CLEAR_FLAGS(); \
-+            QCOMPARE(COUNT_FLAGS(), 0); \
-+            prop2.setFunc(true); \
-+            QVERIFY(prop2.isFunc()); \
-+            QCOMPARE(COUNT_FLAGS(), 1); \
-+        } while (0)
-+    CHECK_FLAG(setReadable, isReadable);
-+    CHECK_FLAG(setWritable, isWritable);
-+    CHECK_FLAG(setResettable, isResettable);
-+    CHECK_FLAG(setDesignable, isDesignable);
-+    CHECK_FLAG(setScriptable, isScriptable);
-+    CHECK_FLAG(setStored, isStored);
-+    CHECK_FLAG(setEditable, isEditable);
-+    CHECK_FLAG(setUser, isUser);
-+    CHECK_FLAG(setStdCppSet, hasStdCppSet);
-+    CHECK_FLAG(setEnumOrFlag, isEnumOrFlag);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Properties));
-+
-+    // Add property from prototype
-+    QMetaProperty prototype = SomethingOfEverything::staticMetaObject.property(1);
-+    QVERIFY(prototype.name() == QByteArray("prop"));
-+    QMetaPropertyBuilder prototypeProp = builder.addProperty(prototype);
-+    QCOMPARE(prototypeProp.name(), QByteArray("prop"));
-+    QVERIFY(prototypeProp.hasNotifySignal());
-+    QCOMPARE(prototypeProp.notifySignal().signature(), QByteArray("propChanged(QString)"));
-+    QCOMPARE(builder.methodCount(), 1);
-+    QCOMPARE(builder.method(0).signature(), QByteArray("propChanged(QString)"));
-+}
-+
-+void tst_QMetaObjectBuilder::notifySignal()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    QMetaPropertyBuilder prop = builder.addProperty("foo", "const QString &");
-+    builder.addSlot("setFoo(QString)");
-+    QMetaMethodBuilder notify = builder.addSignal("fooChanged(QString)");
-+
-+    QVERIFY(!prop.hasNotifySignal());
-+    QCOMPARE(prop.notifySignal().index(), 0);
-+
-+    prop.setNotifySignal(notify);
-+    QVERIFY(prop.hasNotifySignal());
-+    QCOMPARE(prop.notifySignal().index(), 1);
-+
-+    prop.setNotifySignal(QMetaMethodBuilder());
-+    QVERIFY(!prop.hasNotifySignal());
-+    QCOMPARE(prop.notifySignal().index(), 0);
-+
-+    prop.setNotifySignal(notify);
-+    prop.removeNotifySignal();
-+    QVERIFY(!prop.hasNotifySignal());
-+    QCOMPARE(prop.notifySignal().index(), 0);
-+
-+    QCOMPARE(builder.methodCount(), 2);
-+    QCOMPARE(builder.propertyCount(), 1);
-+
-+    // Check that nothing else changed except methods and properties.
-+    QVERIFY(checkForSideEffects
-+        (builder, QMetaObjectBuilder::Methods | QMetaObjectBuilder::Properties));
-+}
-+
-+void tst_QMetaObjectBuilder::enumerator()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Add an enumerator and check its attributes.
-+    QMetaEnumBuilder enum1 = builder.addEnumerator("foo");
-+    QCOMPARE(enum1.name(), QByteArray("foo"));
-+    QVERIFY(!enum1.isFlag());
-+    QCOMPARE(enum1.keyCount(), 0);
-+    QCOMPARE(enum1.index(), 0);
-+    QCOMPARE(builder.enumeratorCount(), 1);
-+
-+    // Add another enumerator and check again.
-+    QMetaEnumBuilder enum2 = builder.addEnumerator("bar");
-+    QCOMPARE(enum2.name(), QByteArray("bar"));
-+    QVERIFY(!enum2.isFlag());
-+    QCOMPARE(enum2.keyCount(), 0);
-+    QCOMPARE(enum2.index(), 1);
-+    QCOMPARE(builder.enumeratorCount(), 2);
-+
-+    // Perform index-based lookup.
-+    QCOMPARE(builder.indexOfEnumerator("foo"), 0);
-+    QCOMPARE(builder.indexOfEnumerator("bar"), 1);
-+    QCOMPARE(builder.indexOfEnumerator("baz"), -1);
-+    QCOMPARE(builder.enumerator(1).name(), QByteArray("bar"));
-+    QCOMPARE(builder.enumerator(9).name(), QByteArray());
-+
-+    // Modify the attributes on enum1.
-+    enum1.setIsFlag(true);
-+    QCOMPARE(enum1.addKey("ABC", 0), 0);
-+    QCOMPARE(enum1.addKey("DEF", 1), 1);
-+    QCOMPARE(enum1.addKey("GHI", -1), 2);
-+
-+    // Check that enum1 is changed, but enum2 is not.
-+    QCOMPARE(enum1.name(), QByteArray("foo"));
-+    QVERIFY(enum1.isFlag());
-+    QCOMPARE(enum1.keyCount(), 3);
-+    QCOMPARE(enum1.index(), 0);
-+    QCOMPARE(enum1.key(0), QByteArray("ABC"));
-+    QCOMPARE(enum1.key(1), QByteArray("DEF"));
-+    QCOMPARE(enum1.key(2), QByteArray("GHI"));
-+    QCOMPARE(enum1.key(3), QByteArray());
-+    QCOMPARE(enum1.value(0), 0);
-+    QCOMPARE(enum1.value(1), 1);
-+    QCOMPARE(enum1.value(2), -1);
-+    QCOMPARE(enum2.name(), QByteArray("bar"));
-+    QVERIFY(!enum2.isFlag());
-+    QCOMPARE(enum2.keyCount(), 0);
-+    QCOMPARE(enum2.index(), 1);
-+
-+    // Modify the attributes on enum2.
-+    enum2.setIsFlag(true);
-+    QCOMPARE(enum2.addKey("XYZ", 10), 0);
-+    QCOMPARE(enum2.addKey("UVW", 19), 1);
-+
-+    // This time check that only method2 changed.
-+    QCOMPARE(enum1.name(), QByteArray("foo"));
-+    QVERIFY(enum1.isFlag());
-+    QCOMPARE(enum1.keyCount(), 3);
-+    QCOMPARE(enum1.index(), 0);
-+    QCOMPARE(enum1.key(0), QByteArray("ABC"));
-+    QCOMPARE(enum1.key(1), QByteArray("DEF"));
-+    QCOMPARE(enum1.key(2), QByteArray("GHI"));
-+    QCOMPARE(enum1.key(3), QByteArray());
-+    QCOMPARE(enum1.value(0), 0);
-+    QCOMPARE(enum1.value(1), 1);
-+    QCOMPARE(enum1.value(2), -1);
-+    QCOMPARE(enum2.name(), QByteArray("bar"));
-+    QVERIFY(enum2.isFlag());
-+    QCOMPARE(enum2.keyCount(), 2);
-+    QCOMPARE(enum2.index(), 1);
-+    QCOMPARE(enum2.key(0), QByteArray("XYZ"));
-+    QCOMPARE(enum2.key(1), QByteArray("UVW"));
-+    QCOMPARE(enum2.key(2), QByteArray());
-+    QCOMPARE(enum2.value(0), 10);
-+    QCOMPARE(enum2.value(1), 19);
-+
-+    // Remove enum1 key
-+    enum1.removeKey(2);
-+    QCOMPARE(enum1.name(), QByteArray("foo"));
-+    QVERIFY(enum1.isFlag());
-+    QCOMPARE(enum1.keyCount(), 2);
-+    QCOMPARE(enum1.index(), 0);
-+    QCOMPARE(enum1.key(0), QByteArray("ABC"));
-+    QCOMPARE(enum1.key(1), QByteArray("DEF"));
-+    QCOMPARE(enum1.key(2), QByteArray());
-+    QCOMPARE(enum1.value(0), 0);
-+    QCOMPARE(enum1.value(1), 1);
-+    QCOMPARE(enum1.value(2), -1);
-+    QCOMPARE(enum2.name(), QByteArray("bar"));
-+    QVERIFY(enum2.isFlag());
-+    QCOMPARE(enum2.keyCount(), 2);
-+    QCOMPARE(enum2.index(), 1);
-+    QCOMPARE(enum2.key(0), QByteArray("XYZ"));
-+    QCOMPARE(enum2.key(1), QByteArray("UVW"));
-+    QCOMPARE(enum2.key(2), QByteArray());
-+    QCOMPARE(enum2.value(0), 10);
-+    QCOMPARE(enum2.value(1), 19);
-+
-+    // Remove enum1 and check that enum2 becomes index 0.
-+    builder.removeEnumerator(0);
-+    QCOMPARE(builder.enumeratorCount(), 1);
-+    enum2 = builder.enumerator(0);
-+    QCOMPARE(enum2.name(), QByteArray("bar"));
-+    QVERIFY(enum2.isFlag());
-+    QCOMPARE(enum2.keyCount(), 2);
-+    QCOMPARE(enum2.index(), 0);
-+    QCOMPARE(enum2.key(0), QByteArray("XYZ"));
-+    QCOMPARE(enum2.key(1), QByteArray("UVW"));
-+    QCOMPARE(enum2.key(2), QByteArray());
-+    QCOMPARE(enum2.value(0), 10);
-+    QCOMPARE(enum2.value(1), 19);
-+
-+    // Perform index-based lookup again.
-+    QCOMPARE(builder.indexOfEnumerator("foo"), -1);
-+    QCOMPARE(builder.indexOfEnumerator("bar"), 0);
-+    QCOMPARE(builder.indexOfEnumerator("baz"), -1);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::Enumerators));
-+}
-+
-+void tst_QMetaObjectBuilder::classInfo()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    // Add two items of class information and check their attributes.
-+    QCOMPARE(builder.addClassInfo("foo", "value1"), 0);
-+    QCOMPARE(builder.addClassInfo("bar", "value2"), 1);
-+    QCOMPARE(builder.classInfoName(0), QByteArray("foo"));
-+    QCOMPARE(builder.classInfoValue(0), QByteArray("value1"));
-+    QCOMPARE(builder.classInfoName(1), QByteArray("bar"));
-+    QCOMPARE(builder.classInfoValue(1), QByteArray("value2"));
-+    QCOMPARE(builder.classInfoName(9), QByteArray());
-+    QCOMPARE(builder.classInfoValue(9), QByteArray());
-+    QCOMPARE(builder.classInfoCount(), 2);
-+
-+    // Perform index-based lookup.
-+    QCOMPARE(builder.indexOfClassInfo("foo"), 0);
-+    QCOMPARE(builder.indexOfClassInfo("bar"), 1);
-+    QCOMPARE(builder.indexOfClassInfo("baz"), -1);
-+
-+    // Remove the first one and check again.
-+    builder.removeClassInfo(0);
-+    QCOMPARE(builder.classInfoName(0), QByteArray("bar"));
-+    QCOMPARE(builder.classInfoValue(0), QByteArray("value2"));
-+    QCOMPARE(builder.classInfoCount(), 1);
-+
-+    // Perform index-based lookup again.
-+    QCOMPARE(builder.indexOfClassInfo("foo"), -1);
-+    QCOMPARE(builder.indexOfClassInfo("bar"), 0);
-+    QCOMPARE(builder.indexOfClassInfo("baz"), -1);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::ClassInfos));
-+}
-+
-+#ifdef Q_NO_DATA_RELOCATION
-+const QMetaObject& staticMetaObjectGlobal() 
-+{
-+  return QObject::staticMetaObject;
-+}
-+
-+const QMetaObject& staticMetaObjectLocal() 
-+{
-+  return *meta;
-+}
-+#endif
-+
-+
-+void tst_QMetaObjectBuilder::relatedMetaObject()
-+{
-+    QMetaObjectBuilder builder;
-+    
-+    // Add two related meta objects and check their attributes.
-+#ifdef Q_NO_DATA_RELOCATION
-+    meta = &staticMetaObject;
-+    QCOMPARE(builder.addRelatedMetaObject(&staticMetaObjectGlobal), 0);    
-+    QCOMPARE(builder.addRelatedMetaObject(&staticMetaObjectLocal), 1);
-+#else
-+    QCOMPARE(builder.addRelatedMetaObject(&QObject::staticMetaObject), 0);
-+    QCOMPARE(builder.addRelatedMetaObject(&staticMetaObject), 1);
-+#endif
-+    QVERIFY(builder.relatedMetaObject(0) == &QObject::staticMetaObject);
-+    QVERIFY(builder.relatedMetaObject(1) == &staticMetaObject);
-+    QCOMPARE(builder.relatedMetaObjectCount(), 2);
-+
-+    // Remove the first one and check again.
-+    builder.removeRelatedMetaObject(0);
-+    QVERIFY(builder.relatedMetaObject(0) == &staticMetaObject);
-+    QCOMPARE(builder.relatedMetaObjectCount(), 1);
-+
-+    // Check that nothing else changed.
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::RelatedMetaObjects));
-+}
-+
-+static int smetacall(QMetaObject::Call, int, void **)
-+{
-+    return 0;
-+}
-+
-+void tst_QMetaObjectBuilder::staticMetacall()
-+{
-+    QMetaObjectBuilder builder;
-+    QVERIFY(!builder.staticMetacallFunction());
-+    builder.setStaticMetacallFunction(smetacall);
-+    QVERIFY(builder.staticMetacallFunction() == smetacall);
-+    QVERIFY(checkForSideEffects(builder, QMetaObjectBuilder::StaticMetacall));
-+}
-+
-+// Copy the entire contents of a static QMetaObject and then check
-+// that QMetaObjectBuilder will produce an exact copy as output.
-+void tst_QMetaObjectBuilder::copyMetaObject()
-+{
-+    QMetaObjectBuilder builder(&QObject::staticMetaObject);
-+    QMetaObject *meta = builder.toMetaObject();
-+    QVERIFY(sameMetaObject(meta, &QObject::staticMetaObject));
-+    qFree(meta);
-+
-+    QMetaObjectBuilder builder2(&staticMetaObject);
-+    meta = builder2.toMetaObject();
-+    QVERIFY(sameMetaObject(meta, &staticMetaObject));
-+    qFree(meta);
-+
-+    QMetaObjectBuilder builder3(&SomethingOfEverything::staticMetaObject);
-+    meta = builder3.toMetaObject();
-+    QVERIFY(sameMetaObject(meta, &SomethingOfEverything::staticMetaObject));
-+    qFree(meta);
-+}
-+
-+// Serialize and deserialize a meta object and check that
-+// it round-trips to the exact same value.
-+void tst_QMetaObjectBuilder::serialize()
-+{
-+    // Full QMetaObjectBuilder
-+    {
-+    QMetaObjectBuilder builder(&SomethingOfEverything::staticMetaObject);
-+    QMetaObject *meta = builder.toMetaObject();
-+
-+    QByteArray data;
-+    QDataStream stream(&data, QIODevice::WriteOnly | QIODevice::Append);
-+    builder.serialize(stream);
-+
-+    QMetaObjectBuilder builder2;
-+    QDataStream stream2(data);
-+    QMap<QByteArray, const QMetaObject *> references;
-+    references.insert(QByteArray("QLocale"), &QLocale::staticMetaObject);
-+    builder2.deserialize(stream2, references);
-+#ifdef Q_NO_DATA_RELOCATION
-+    //the related meta objects will be function pointers
-+    //which you have to add to the builder manually.
-+    builder2.addRelatedMetaObject(QLocale::getStaticMetaObject);
-+#endif
-+    builder2.setStaticMetacallFunction(builder.staticMetacallFunction());
-+    QMetaObject *meta2 = builder2.toMetaObject();
-+
-+    QVERIFY(sameMetaObject(meta, meta2));
-+    qFree(meta);
-+    qFree(meta2);
-+    }
-+
-+    // Partial QMetaObjectBuilder
-+    {
-+    QMetaObjectBuilder builder;
-+    builder.setClassName("Test");
-+    builder.addProperty("foo", "int");
-+
-+    QByteArray data;
-+    QDataStream stream(&data, QIODevice::WriteOnly | QIODevice::Append);
-+    builder.serialize(stream);
-+
-+    QMetaObjectBuilder builder2;
-+    QDataStream stream2(data);
-+    builder2.deserialize(stream2, QMap<QByteArray, const QMetaObject *>());
-+
-+    QCOMPARE(builder.superClass(), builder2.superClass());
-+    QCOMPARE(builder.className(), builder2.className());
-+    QCOMPARE(builder.propertyCount(), builder2.propertyCount());
-+    QCOMPARE(builder.property(0).name(), builder2.property(0).name());
-+    QCOMPARE(builder.property(0).type(), builder2.property(0).type());
-+    }
-+}
-+
-+// Check that removing a method updates notify signals appropriately
-+void tst_QMetaObjectBuilder::removeNotifySignal()
-+{
-+    QMetaObjectBuilder builder;
-+
-+    QMetaMethodBuilder method1 = builder.addSignal("foo(const QString&, int)");
-+    QMetaMethodBuilder method2 = builder.addSignal("bar(QString)");
-+
-+    // Setup property
-+    QMetaPropertyBuilder prop = builder.addProperty("prop", "const QString &");
-+    prop.setNotifySignal(method2);
-+    QVERIFY(prop.hasNotifySignal());
-+    QCOMPARE(prop.notifySignal().index(), 1);
-+
-+    // Remove non-notify signal
-+    builder.removeMethod(0);
-+    QVERIFY(prop.hasNotifySignal());
-+    QCOMPARE(prop.notifySignal().index(), 0);
-+
-+    // Remove notify signal
-+    builder.removeMethod(0);
-+    QVERIFY(!prop.hasNotifySignal());
-+}
-+
-+// Check that the only changes to a "builder" relative to the default
-+// state is specified by "members".
-+bool tst_QMetaObjectBuilder::checkForSideEffects
-+        (const QMetaObjectBuilder& builder,
-+         QMetaObjectBuilder::AddMembers members)
-+{
-+    if ((members & QMetaObjectBuilder::ClassName) == 0) {
-+        if (!builder.className().isEmpty())
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::SuperClass) == 0) {
-+        if (builder.superClass() != &QObject::staticMetaObject)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::Methods) == 0) {
-+        if (builder.methodCount() != 0)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::Constructors) == 0) {
-+        if (builder.constructorCount() != 0)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::Properties) == 0) {
-+        if (builder.propertyCount() != 0)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::Enumerators) == 0) {
-+        if (builder.enumeratorCount() != 0)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::ClassInfos) == 0) {
-+        if (builder.classInfoCount() != 0)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::RelatedMetaObjects) == 0) {
-+        if (builder.relatedMetaObjectCount() != 0)
-+            return false;
-+    }
-+
-+    if ((members & QMetaObjectBuilder::StaticMetacall) == 0) {
-+        if (builder.staticMetacallFunction() != 0)
-+            return false;
-+    }
-+
-+    return true;
-+}
-+
-+static bool sameMethod(const QMetaMethod& method1, const QMetaMethod& method2)
-+{
-+    if (QByteArray(method1.signature()) != QByteArray(method2.signature()))
-+        return false;
-+
-+    if (QByteArray(method1.typeName()) != QByteArray(method2.typeName()))
-+        return false;
-+
-+    if (method1.parameterNames() != method2.parameterNames())
-+        return false;
-+
-+    if (QByteArray(method1.tag()) != QByteArray(method2.tag()))
-+        return false;
-+
-+    if (method1.access() != method2.access())
-+        return false;
-+
-+    if (method1.methodType() != method2.methodType())
-+        return false;
-+
-+    if (method1.attributes() != method2.attributes())
-+        return false;
-+
-+    return true;
-+}
-+
-+static bool sameProperty(const QMetaProperty& prop1, const QMetaProperty& prop2)
-+{
-+    if (QByteArray(prop1.name()) != QByteArray(prop2.name()))
-+        return false;
-+
-+    if (QByteArray(prop1.typeName()) != QByteArray(prop2.typeName()))
-+        return false;
-+
-+    if (prop1.isReadable() != prop2.isReadable() ||
-+        prop1.isWritable() != prop2.isWritable() ||
-+        prop1.isResettable() != prop2.isResettable() ||
-+        prop1.isDesignable() != prop2.isDesignable() ||
-+        prop1.isScriptable() != prop2.isScriptable() ||
-+        prop1.isStored() != prop2.isStored() ||
-+        prop1.isEditable() != prop2.isEditable() ||
-+        prop1.isUser() != prop2.isUser() ||
-+        prop1.isFlagType() != prop2.isFlagType() ||
-+        prop1.isEnumType() != prop2.isEnumType() ||
-+        prop1.hasNotifySignal() != prop2.hasNotifySignal() ||
-+        prop1.hasStdCppSet() != prop2.hasStdCppSet())
-+        return false;
-+
-+    if (prop1.hasNotifySignal()) {
-+        if (prop1.notifySignalIndex() != prop2.notifySignalIndex())
-+            return false;
-+    }
-+
-+    return true;
-+}
-+
-+static bool sameEnumerator(const QMetaEnum& enum1, const QMetaEnum& enum2)
-+{
-+    if (QByteArray(enum1.name()) != QByteArray(enum2.name()))
-+        return false;
-+
-+    if (enum1.isFlag() != enum2.isFlag())
-+        return false;
-+
-+    if (enum1.keyCount() != enum2.keyCount())
-+        return false;
-+
-+    for (int index = 0; index < enum1.keyCount(); ++index) {
-+        if (QByteArray(enum1.key(index)) != QByteArray(enum2.key(index)))
-+            return false;
-+        if (enum1.value(index) != enum2.value(index))
-+            return false;
-+    }
-+
-+    if (QByteArray(enum1.scope()) != QByteArray(enum2.scope()))
-+        return false;
-+
-+    return true;
-+}
-+
-+// Determine if two meta objects are identical.
-+bool tst_QMetaObjectBuilder::sameMetaObject
-+        (const QMetaObject *meta1, const QMetaObject *meta2)
-+{
-+    int index;
-+
-+    if (strcmp(meta1->className(), meta2->className()) != 0)
-+        return false;
-+
-+    if (meta1->superClass() != meta2->superClass())
-+        return false;
-+
-+    if (meta1->constructorCount() != meta2->constructorCount() ||
-+        meta1->methodCount() != meta2->methodCount() ||
-+        meta1->enumeratorCount() != meta2->enumeratorCount() ||
-+        meta1->propertyCount() != meta2->propertyCount() ||
-+        meta1->classInfoCount() != meta2->classInfoCount())
-+        return false;
-+
-+    for (index = 0; index < meta1->constructorCount(); ++index) {
-+        if (!sameMethod(meta1->constructor(index), meta2->constructor(index)))
-+            return false;
-+    }
-+
-+    for (index = 0; index < meta1->methodCount(); ++index) {
-+        if (!sameMethod(meta1->method(index), meta2->method(index)))
-+            return false;
-+    }
-+
-+    for (index = 0; index < meta1->propertyCount(); ++index) {
-+        if (!sameProperty(meta1->property(index), meta2->property(index)))
-+            return false;
-+    }
-+
-+    for (index = 0; index < meta1->enumeratorCount(); ++index) {
-+        if (!sameEnumerator(meta1->enumerator(index), meta2->enumerator(index)))
-+            return false;
-+    }
-+
-+    for (index = 0; index < meta1->classInfoCount(); ++index) {
-+        if (QByteArray(meta1->classInfo(index).name()) !=
-+            QByteArray(meta2->classInfo(index).name()))
-+            return false;
-+        if (QByteArray(meta1->classInfo(index).value()) !=
-+            QByteArray(meta2->classInfo(index).value()))
-+            return false;
-+    }
-+
-+    const QMetaObject **objects1 = 0;
-+    const QMetaObject **objects2 = 0;
-+    if (meta1->d.data[0] == meta2->d.data[0] && meta1->d.data[0] >= 2) {
-+        QMetaObjectExtraData *extra1 = (QMetaObjectExtraData *)(meta1->d.extradata);
-+        QMetaObjectExtraData *extra2 = (QMetaObjectExtraData *)(meta2->d.extradata);
-+        if (extra1 && !extra2)
-+            return false;
-+        if (extra2 && !extra1)
-+            return false;
-+        if (extra1 && extra2) {
-+            if (extra1->static_metacall != extra2->static_metacall)
-+                return false;
-+            //objects1 = extra1->objects;
-+            //objects2 = extra1->objects;
-+        }
-+    } else if (meta1->d.data[0] == meta2->d.data[0] && meta1->d.data[0] == 1) {
-+        objects1 = (const QMetaObject **)(meta1->d.extradata);
-+        objects2 = (const QMetaObject **)(meta2->d.extradata);
-+    }
-+    if (objects1 && !objects2)
-+        return false;
-+    if (objects2 && !objects1)
-+        return false;
-+    if (objects1 && objects2) {
-+        while (*objects1 != 0 && *objects2 != 0) {
-+            if (*objects1 != *objects2)
-+                return false;
-+            ++objects1;
-+            ++objects2;
-+        }
-+    }
-+
-+    return true;
-+}
-+
-+QTEST_MAIN(tst_QMetaObjectBuilder)
-+
-+#include "tst_qmetaobjectbuilder_47.moc"
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/gcc-scope.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/gcc-scope.patch
deleted file mode 100644
index f01ee9f..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/gcc-scope.patch
+++ /dev/null
@@ -1,48 +0,0 @@ 
-
-Fixes issues like below
-
-| qaudiooutput_pulse.cpp: In member function 'bool QPulseAudioOutput::open()':
-| qaudiooutput_pulse.cpp:255:75: error: '::getpid' has not been declared
-| make[3]: *** [../../../build/Debug/qtmedia_pulse/qaudiooutput_pulse.o] Error 1
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
-Upstream-Status: Pending
-
-Index: qt-mobility-opensource-src-1.2.0/plugins/multimedia/pulseaudio/qaudiooutput_pulse.cpp
-===================================================================
---- qt-mobility-opensource-src-1.2.0.orig/plugins/multimedia/pulseaudio/qaudiooutput_pulse.cpp	2012-03-31 07:26:24.457018348 -0700
-+++ qt-mobility-opensource-src-1.2.0/plugins/multimedia/pulseaudio/qaudiooutput_pulse.cpp	2012-03-31 07:27:53.309022654 -0700
-@@ -46,7 +46,7 @@
- #include "qaudiodeviceinfo_pulse.h"
- #include "qpulseaudioengine.h"
- #include "qpulsehelpers.h"
--
-+#include <unistd.h>
- QT_BEGIN_NAMESPACE
- 
- const int PeriodTimeMs = 20;
-Index: qt-mobility-opensource-src-1.2.0/plugins/multimedia/pulseaudio/qaudioinput_pulse.cpp
-===================================================================
---- qt-mobility-opensource-src-1.2.0.orig/plugins/multimedia/pulseaudio/qaudioinput_pulse.cpp	2012-03-31 07:29:19.997026831 -0700
-+++ qt-mobility-opensource-src-1.2.0/plugins/multimedia/pulseaudio/qaudioinput_pulse.cpp	2012-03-31 07:29:39.541027625 -0700
-@@ -46,6 +46,7 @@
- #include "qaudiodeviceinfo_pulse.h"
- #include "qpulseaudioengine.h"
- #include "qpulsehelpers.h"
-+#include <unistd.h>
- 
- QT_BEGIN_NAMESPACE
- 
-Index: qt-mobility-opensource-src-1.2.0/plugins/multimedia/pulseaudio/qpulseaudioengine.cpp
-===================================================================
---- qt-mobility-opensource-src-1.2.0.orig/plugins/multimedia/pulseaudio/qpulseaudioengine.cpp	2012-03-31 07:33:24.805038719 -0700
-+++ qt-mobility-opensource-src-1.2.0/plugins/multimedia/pulseaudio/qpulseaudioengine.cpp	2012-03-31 07:33:46.889039783 -0700
-@@ -46,6 +46,7 @@
- #include "qaudiodeviceinfo_pulse.h"
- #include "qaudiooutput_pulse.h"
- #include "qpulsehelpers.h"
-+#include <unistd.h>
- 
- QT_BEGIN_NAMESPACE
- 
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-configure.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-configure.patch
deleted file mode 100644
index d61ec03..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-configure.patch
+++ /dev/null
@@ -1,17 +0,0 @@ 
-When building qt-mobility, the qa_configure stage failed because the catalogue /usr/lib
-is used in some Makefiles within configure tests. We manually removed this catalogue.
-
-Upstream-Status: Inappropriate [embedded]
-Signed-off-by: Dmitry Cherukhin <dima_ch@emcraft.com>
-
---- qt-mobility-opensource-src-1.2.0/configure.orig	2011-05-10 10:06:01.000000000 +0200
-+++ qt-mobility-opensource-src-1.2.0/configure	2011-11-08 12:34:56.347645968 +0100
-@@ -583,6 +583,8 @@
-     fi
- 
-     $QMAKE_EXEC $QMKSPEC "$relpath/config.tests/$2/$2.pro" 2>> "$CONFIG_LOG" >> "$CONFIG_LOG"
-+    cp Makefile Makefile.old
-+    sed -e 's@-L/usr/lib@@' <Makefile.old >Makefile
-     printf  " ."
-     "$MAKE" clean >> "$CONFIG_LOG"
-     printf "."
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-opengl.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-opengl.patch
deleted file mode 100644
index 1724995..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-opengl.patch
+++ /dev/null
@@ -1,38 +0,0 @@ 
-Upstream-Status: Inappropriate [configuration]
-
-diff --git a/examples/declarative-camera/declarative-camera.pro b/examples/declarative-camera/declarative-camera.pro
-index 8164fbc..54fd8ad 100644
---- a/examples/declarative-camera/declarative-camera.pro
-+++ b/examples/declarative-camera/declarative-camera.pro
-@@ -5,10 +5,10 @@ TEMPLATE=app
- 
- QT += declarative network
- 
--!maemo5 {
--    contains(QT_CONFIG, opengl) {
--        QT += opengl
--    }
-+contains(QT_CONFIG, opengl): !maemo5 {
-+   QT += opengl
-+} else {
-+   DEFINES += QT_NO_OPENGL
- }
- 
- win32 {
-diff --git a/examples/videographicsitem/videographicsitem.pro b/examples/videographicsitem/videographicsitem.pro
-index 8461beb..eedee2f 100644
---- a/examples/videographicsitem/videographicsitem.pro
-+++ b/examples/videographicsitem/videographicsitem.pro
-@@ -9,7 +9,11 @@ MOBILITY = multimedia
- 
- QMAKE_RPATHDIR += $$DESTDIR
- 
--!symbian:contains(QT_CONFIG, opengl): QT += opengl
-+contains(QT_CONFIG, opengl): !symbian {
-+   QT += opengl
-+} else {
-+   DEFINES += QT_NO_OPENGL
-+}
- 
- HEADERS   += videoplayer.h \
-              videoitem.h
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-xvideo.patch b/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-xvideo.patch
deleted file mode 100644
index 6046752..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-1.2.0/qt-mobility-no-xvideo.patch
+++ /dev/null
@@ -1,26 +0,0 @@ 
-QMake pro files don't explicitly define QT_NO_XVIDEO if the
-configuration lacks xvideo, but plugins code relies on this define.
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
-Upstream-Status: Inappropriate [configuration]
----
- plugins/multimedia/gstreamer/gstreamer.pro | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/plugins/multimedia/gstreamer/gstreamer.pro b/plugins/multimedia/gstreamer/gstreamer.pro
---- a/plugins/multimedia/gstreamer/gstreamer.pro
-+++ b/plugins/multimedia/gstreamer/gstreamer.pro
-@@ -19,6 +19,10 @@ LIBS += \
-     -lasound
- }
- 
-+unix:!contains(QT_CONFIG, xvideo) {
-+    DEFINES += QT_NO_XVIDEO
-+}
-+
- CONFIG += link_pkgconfig
- 
- PKGCONFIG += \
--- 
-1.8.1.2
-
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-embedded_1.2.0.bb b/meta-oe/recipes-qt/qt-mobility/qt-mobility-embedded_1.2.0.bb
deleted file mode 100644
index 355f183..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-embedded_1.2.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@ 
-SUMMARY = "Mobile device API extensions for Qt/Embedded 4.x"
-SECTION = "libs"
-qtm_embedded := "embedded"
-qtm_dir = "qtopia"
-qtm_glflags := "-=opengl"
-qtm_extra_config := "gstreamer-photography_enabled = no"
-
-inherit qt4e
-require qt-mobility_${PV}.inc
-
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility-x11_1.2.0.bb b/meta-oe/recipes-qt/qt-mobility/qt-mobility-x11_1.2.0.bb
deleted file mode 100644
index 380e3cb..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility-x11_1.2.0.bb
+++ /dev/null
@@ -1,10 +0,0 @@ 
-SUMMARY = "Mobile device API extensions for Qt/X11 4.x"
-DEPENDS = "libxv libxext"
-SECTION = "x11/libs"
-qtm_embedded := ""
-qtm_dir = "qt4"
-qtm_glflags := "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', '+=opengl', '-=opengl', d)} "
-qtm_extra_config := ""
-
-inherit qt4x11
-require qt-mobility_${PV}.inc
diff --git a/meta-oe/recipes-qt/qt-mobility/qt-mobility_1.2.0.inc b/meta-oe/recipes-qt/qt-mobility/qt-mobility_1.2.0.inc
deleted file mode 100644
index 377d9c7..0000000
--- a/meta-oe/recipes-qt/qt-mobility/qt-mobility_1.2.0.inc
+++ /dev/null
@@ -1,121 +0,0 @@ 
-HOMEPAGE = "http://qt-project.org/"
-
-# This creates the dependency on meta-multimedia, which is wrong, but hopefully
-# this will be moved to separate meta-qt4 soon
-DEPENDS += "gstreamer util-linux alsa-lib gst-plugins-base"
-
-inherit bluetooth
-
-PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'pulseaudio', 'pulseaudio', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'bluetooth', '${BLUEZ}', '', d)}"
-# This is all wrong, but nobody cares about qt-mobility anymore
-# add bluez5 just to silence:
-# qt-mobility-embedded-1.2.0: qt-mobility-embedded: invalid PACKAGECONFIG: bluez5 [invalid-packageconfig]
-# qt-mobility-x11-1.2.0: qt-mobility-x11: invalid PACKAGECONFIG: bluez5 [invalid-packageconfig]
-# but without --disable options it still autodetects bluez and pulseaudio from sysroot
-PACKAGECONFIG[bluez4] = ",,bluez4"
-PACKAGECONFIG[bluez5] = ",,bluez5"
-PACKAGECONFIG[pulseaudio] = ",,pulseaudio"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=fbc093901857fcd118f065f900982c24 \
-		    file://LGPL_EXCEPTION.txt;md5=411080a56ff917a5a1aa08c98acae354"
-
-FILESEXTRAPATHS =. "${FILE_DIRNAME}/qt-mobility-${PV}:"
-SRC_URI = "http://pkgs.fedoraproject.org/repo/pkgs/qt-mobility/qt-mobility-opensource-src-${PV}.tar.gz/ea5db5a8d3dd4709c2926dceda646bd8/qt-mobility-opensource-src-${PV}.tar.gz \
-           file://qt-mobility-configure.patch \
-           file://0001-gstvideoconnector-fixed-buffers-allocation.patch \
-           file://0002-Remove-unnecessary-rpaths-from-qml_device-example.patch \
-           file://qt-mobility-no-opengl.patch \
-           file://gcc-scope.patch \
-           file://qt-mobility-no-xvideo.patch \
-           file://fix_metaobjectbuilder_build_err.patch \
-           file://0001-fix-embedded-usage-doesn-t-work-outside-of-Qt.patch \
-           file://fix-compile-error-no-bluez.patch \
-	   "
-
-SRC_URI[md5sum]="ea5db5a8d3dd4709c2926dceda646bd8"
-SRC_URI[sha256sum]="ee3c88975e04139ac9589f76d4be646d44fcbc4c8c1cf2db621abc154cf0ba44"
-
-PR = "r8"
-
-S = "${WORKDIR}/qt-mobility-opensource-src-${PV}"
-
-qtm_bin		:= "/usr/bin/${qtm_dir}"
-qtm_lib		:= "/usr/lib"
-qtm_include	:= "/usr/include/${qtm_dir}"
-qtm_examples	:= "/usr/bin/${qtm_dir}/examples/QtMobility"
-qtm_demos	:= "/usr/bin/${qtm_dir}/demos/QtMobility"
-qtm_plugins	:= "/usr/lib/${qtm_dir}/plugins/QtMobility"
-qtm_data	:= "/usr/share/${qtm_dir}"
-qtm_imports	:= "/usr/lib/${qtm_dir}/imports"
-
-QTM_MODULES_LIST ?= "bearer contacts gallery location publishsubscribe messaging multimedia \
-systeminfo serviceframework sensors versit organizer feedback connectivity"
-
-do_configure_prepend() {
-	cp qtmobility.pro qtmobility.pro.old
-	sed -e 's@...QT_INSTALL_DATA.@${qtm_data}@' <qtmobility.pro.old >qtmobility.pro
-	for NAME in plugins/declarative/*/*.pro
-	do
-	    cp $NAME $NAME.old
-	    sed -e 's@...QT_INSTALL_IMPORTS.@${qtm_imports}@' <$NAME.old >$NAME
-	done
-	cp staticconfig.pri staticconfig.pri.old
-	echo "include(${STAGING_DATADIR}/${qtm_dir}/mkspecs/qconfig.pri)" >staticconfig.pri
-	cat staticconfig.pri.old >>staticconfig.pri
-
-        cat > features/platformconfig/oe.pri <<EOF
-qmf_enabled = no
-networkmanager_enabled = no
-corewlan_enabled = no
-immersion_enabled = no
-meegotouchfeedback_enabled = no
-maemo-icd_enabled = no
-maemo-icd-network-wlan_enabled = no
-maemo5-contacts_enabled = no
-maemo5-calendar_enabled = no
-maemo6-landmarks_enabled = no
-bme_enabled = no
-bluez_enabled = ${@bb.utils.contains('PACKAGECONFIG', 'bluez4', 'yes', 'no', d)}
-proj_enabled = no
-gstreamer-photography_enabled = no
-gstreamer-appsrc_enabled = yes
-blkid_enabled = yes
-pulseaudio_enabled = ${@bb.utils.contains('PACKAGECONFIG', 'pulseaudio', 'yes', 'no', d)}
-udev_enabled = yes
-iphb_enabled = no
-nfc_symbian_enabled = no
-sensord_enabled = no
-geoclue-master_enabled = no
-gypsy_enabled = no
-${qtm_extra_config}
-EOF
-
-	./configure -qmake-exec qmake2 -prefix /usr -staticconfig oe -examples -demos -modules "${QTM_MODULES_LIST}"
-	echo QT_MOBILITY_BIN = ${qtm_bin} >>./config.pri
-	echo QT_MOBILITY_LIB = ${qtm_lib} >>./config.pri
-	echo QT_MOBILITY_INCLUDE = ${qtm_include} >>./config.pri
-	echo QT_MOBILITY_PLUGINS = ${qtm_plugins} >>./config.pri
-	echo QT_MOBILITY_EXAMPLES = ${qtm_examples} >>./config.pri
-	echo QT_MOBILITY_DEMOS = ${qtm_demos} >>./config.pri
-	echo QT_CONFIG ${qtm_glflags} >>./config.pri
-	echo CONFIG += ${qtm_embedded} >>./config.pri
-}
-
-do_install() {
-	for NAME in */*.prf
-	do
-	    cp $NAME $NAME.old
-	    sed -e 's@/usr@${STAGING_BINDIR}/..@' <$NAME.old >$NAME
-	done
-	oe_runmake install INSTALL_ROOT=${D}
-}
-
-PACKAGES = "${PN}-dbg ${PN} ${PN}-dev"
-
-FILES_${PN}-dbg = "${qtm_bin}/.debug ${qtm_examples}/.debug ${qtm_demos}/.debug \
-                   ${qtm_lib}/.debug ${qtm_plugins}/*/.debug  ${qtm_imports}/*/.debug \
-                   ${qtm_imports}/*/*/.debug ${bindir}/.debug /usr/src/debug"
-FILES_${PN} = "${qtm_bin} ${qtm_examples} ${qtm_demos} ${qtm_lib}/*.so.1* ${qtm_plugins} ${qtm_imports}"
-FILES_${PN}-dev = "${exec_prefix}"
diff --git a/meta-oe/recipes-qt/qtserialport/qtserialport-e_5.1.0.bb b/meta-oe/recipes-qt/qtserialport/qtserialport-e_5.1.0.bb
deleted file mode 100644
index c466562..0000000
--- a/meta-oe/recipes-qt/qtserialport/qtserialport-e_5.1.0.bb
+++ /dev/null
@@ -1,5 +0,0 @@ 
-inherit qt4e
-
-require qtserialport.inc
-
-SRCREV = "22e45f0b0f956c025339d72ad53dca57ef684858"
diff --git a/meta-oe/recipes-qt/qtserialport/qtserialport.inc b/meta-oe/recipes-qt/qtserialport/qtserialport.inc
deleted file mode 100644
index dde49a5..0000000
--- a/meta-oe/recipes-qt/qtserialport/qtserialport.inc
+++ /dev/null
@@ -1,48 +0,0 @@ 
-SUMMARY = "Qt Serial Port Library"
-SECTION = "qt/libs"
-HOMEPAGE = "http://qt-project.org/wiki/QtSerialPort"
-
-LICENSE = "(LGPL-2.1 | GPL-3.0) & GFDL-1.3"
-LIC_FILES_CHKSUM = " \
-    file://LICENSE.FDL;md5=3801d7932fdc07fd9efe89f9854a6caa \
-    file://LICENSE.GPL;md5=d32239bcb673463ab874e80d47fae504 \
-    file://LICENSE.LGPL;md5=4fbd65380cdd255951079008b364516c \
-    "
-
-inherit pkgconfig
-
-SRC_URI = " \
-    git://gitorious.org/qt/qtserialport.git;branch=stable \
-"
-
-S = "${WORKDIR}/git"
-B = "${WORKDIR}/${BPN}-${PV}"
-
-QMAKE_PROFILES = "${S}/qtserialport.pro"
-EXTRA_OEMAKE += "INSTALL_ROOT=${D}"
-OE_QMAKE_QMAKE = "${WORKDIR}/qmake2"
-
-do_prepare_qmake_symlink() {
-    ln -sf "${STAGING_BINDIR_NATIVE}/qmake2" ${WORKDIR}
-}
-
-addtask prepare_qmake_symlink after do_generate_qt_config_file before do_configure
-
-do_configure_prepend() {
-    sed -i -e "s|\(Prefix\ =\).*|\1${prefix}|" ${WORKDIR}/qt.conf 
-    sed -i -r -e "/^(Binaries|Headers|Plugins|Mkspecs)/ d" ${WORKDIR}/qt.conf 
-}
-
-do_install() {
-    oe_runmake install DESTDIR=${D} INCLUDEDIR=${includedir}
-}
-
-FILES_${PN}-dev += " \
-    ${includedir}/QtSerialPort/* \
-    ${prefix}/mkspecs/* \
-    ${libdir}/*.prl \
-"
-
-FILES_${PN}-dbg += " \
-    ${libdir}/.debug/* \
-"
diff --git a/meta-oe/recipes-qt/qwt/files/qwt6-fix-linking-with-ld-gold.patch b/meta-oe/recipes-qt/qwt/files/qwt6-fix-linking-with-ld-gold.patch
deleted file mode 100644
index 1fdd9cf..0000000
--- a/meta-oe/recipes-qt/qwt/files/qwt6-fix-linking-with-ld-gold.patch
+++ /dev/null
@@ -1,34 +0,0 @@ 
-Upstream-Status: Pending
-
-diff -urpN qwt-6.0.1_orig/qwtbuild.pri qwt-6.0.1/qwtbuild.pri
---- qwt-6.0.1_orig/qwtbuild.pri	2011-08-02 00:33:53.000000000 +1000
-+++ qwt-6.0.1/qwtbuild.pri	2012-08-21 10:27:30.721990849 +1000
-@@ -67,3 +67,13 @@ unix {
-         error( "local build will conflict with $${QMAKE_LIBDIR_QT}/libqwt.*" )
-     }
- }
-+
-+######################################################################
-+# libs for building qwt
-+######################################################################
-+
-+unix {
-+    # Some linkers require explicit linking with librt (eg ld.gold)
-+    LIBS += -lrt
-+}
-+
-diff -urpN qwt-6.0.1_orig/qwt.prf qwt-6.0.1/qwt.prf
---- qwt-6.0.1_orig/qwt.prf	2011-08-02 00:33:51.000000000 +1000
-+++ qwt-6.0.1/qwt.prf	2012-08-21 11:19:49.435240439 +1000
-@@ -9,6 +9,11 @@
- 
- include ( ./qwtconfig.pri )
- 
-+unix {
-+
-+	LIBS += -lrt
-+}
-+
- contains(QWT_CONFIG, QwtDll) {
- 
-     DEFINES *= QWT_DLL
diff --git a/meta-oe/recipes-qt/qwt/files/qwt6.patch b/meta-oe/recipes-qt/qwt/files/qwt6.patch
deleted file mode 100644
index 4fb1a9b..0000000
--- a/meta-oe/recipes-qt/qwt/files/qwt6.patch
+++ /dev/null
@@ -1,86 +0,0 @@ 
-- add support for SUFFIX_STR
----
-diff --git a/examples/examples.pri b/examples/examples.pri
-index a6911c8..854ce89 100644
---- a/examples/examples.pri
-+++ b/examples/examples.pri
-@@ -13,9 +13,17 @@ include( $${QWT_ROOT}/qwtbuild.pri )
- 
- TEMPLATE     = app
- 
-+SUFFIX_STR =
-+CONFIG(debug, debug|release) {
-+    SUFFIX_STR = $${DEBUG_SUFFIX}
-+}
-+else {
-+    SUFFIX_STR = $${RELEASE_SUFFIX}
-+}
-+
- INCLUDEPATH += $${QWT_ROOT}/src
- DEPENDPATH  += $${QWT_ROOT}/src
--DESTDIR      = $${QWT_ROOT}/examples/bin
-+DESTDIR      = $${QWT_ROOT}/examples/bin$${SUFFIX_STR}
- 
- QMAKE_RPATHDIR *= $${QWT_ROOT}/lib
- 
-diff --git a/qwtconfig.pri b/qwtconfig.pri
-index b0d2110..be119b7 100644
---- a/qwtconfig.pri
-+++ b/qwtconfig.pri
-@@ -30,6 +30,13 @@ QWT_INSTALL_DOCS      = $${QWT_INSTALL_PREFIX}/doc
- QWT_INSTALL_HEADERS   = $${QWT_INSTALL_PREFIX}/include
- QWT_INSTALL_LIBS      = $${QWT_INSTALL_PREFIX}/lib
- 
-+DEBUG_SUFFIX        = 
-+RELEASE_SUFFIX      = 
-+
-+win32 {
-+    DEBUG_SUFFIX      = d
-+}
-+
- ######################################################################
- # Designer plugin
- ######################################################################
-diff --git a/src/src.pro b/src/src.pro
-index beb7125..ebf8ea6 100644
---- a/src/src.pro
-+++ b/src/src.pro
-@@ -13,8 +13,16 @@ QWT_ROOT = $${PWD}/..
- include( $${QWT_ROOT}/qwtconfig.pri )
- include( $${QWT_ROOT}/qwtbuild.pri )
- 
-+SUFFIX_STR =
-+CONFIG(debug, debug|release) {
-+    SUFFIX_STR = $${DEBUG_SUFFIX}
-+}
-+else {
-+    SUFFIX_STR = $${RELEASE_SUFFIX}
-+}
-+
- TEMPLATE          = lib
--TARGET            = $$qtLibraryTarget(qwt)
-+TARGET            = $$qtLibraryTarget(qwt)$${SUFFIX_STR}
- 
- DESTDIR           = $${QWT_ROOT}/lib
- 
-diff --git a/textengines/mathml/mathml.pro b/textengines/mathml/mathml.pro
-index b0ed9f9..403828b 100644
---- a/textengines/mathml/mathml.pro
-+++ b/textengines/mathml/mathml.pro
-@@ -12,7 +12,15 @@ message(Beside the Qwt license you also have to take care of its license. )
- 
- include( $${PWD}/../textengines.pri )
- 
--TARGET    = $$qtLibraryTarget(qwtmathml)
-+SUFFIX_STR =
-+CONFIG(debug, debug|release) {
-+    SUFFIX_STR = $${DEBUG_SUFFIX}
-+}
-+else {
-+    SUFFIX_STR = $${RELEASE_SUFFIX}
-+}
-+
-+TARGET    = $$qtLibraryTarget(qwtmathml$${SUFFIX_STR})
- QT       += xml
- 
- HEADERS = \
diff --git a/meta-oe/recipes-qt/qwt/qwt-e_6.0.1.bb b/meta-oe/recipes-qt/qwt/qwt-e_6.0.1.bb
deleted file mode 100644
index c801309..0000000
--- a/meta-oe/recipes-qt/qwt/qwt-e_6.0.1.bb
+++ /dev/null
@@ -1,14 +0,0 @@ 
-inherit qt4e
-
-require qwt.inc
-
-PR = "r1"
-
-SRC_URI[qwt.md5sum] = "ace68558eab873e2da7e641179c4ef0c"
-SRC_URI[qwt.sha256sum] = "3fe19dd5962d705632fc2ef616b009299de6cf1e702538296924dbfdc8003cb2"
-
-RPROVIDES_${PN}-dev = "libqwt-dev"
-
-# Conflicts with qwt, only one qwt* can be built in world
-# | Project ERROR: local build will conflict with sysroots/qemuarm/usr/lib/libqwt.*
-EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-oe/recipes-qt/qwt/qwt.inc b/meta-oe/recipes-qt/qwt/qwt.inc
deleted file mode 100644
index 60f73a6..0000000
--- a/meta-oe/recipes-qt/qwt/qwt.inc
+++ /dev/null
@@ -1,40 +0,0 @@ 
-DESCRIPTION = "Qt Widget Extension for Technical Applications"
-SECTION = "libs"
-
-# LGPLv2.1 + some exceptions
-LICENSE = "QWTv1.0"
-LIC_FILES_CHKSUM = "file://COPYING;md5=dac2743472b0462ff3cfb4af42051c88"
-
-SRC_URI = "${SOURCEFORGE_MIRROR}/qwt/qwt-${PV}.tar.bz2;name=qwt \
-           file://qwt6.patch \
-           file://qwt6-fix-linking-with-ld-gold.patch"
-
-S = "${WORKDIR}/qwt-${PV}"
-
-do_configure_prepend() {
-    sed -i -e 's:RELEASE_SUFFIX      = :RELEASE_SUFFIX      = ${QT_LIBINFIX}:' *.pri
-    sed -i -e 's:qtAddLibrary(qwt:qtAddLibrary(qwt)${QT_LIBINFIX}:g' *.prf
-    sed -e 's/# QWT_CONFIG     += QwtExamples/QWT_CONFIG     += QwtExamples/g' -i qwtconfig.pri
-    sed -i -e 's:/usr/local/qwt-$$QWT_VERSION:${D}${prefix}:g' ${S}/*.pri
-}
-
-do_install() {
-    oe_runmake -e install
-    install -d ${D}${datadir}/doc/${PN}
-    mv ${D}${prefix}/doc/* ${D}${datadir}/doc/${PN}/
-    rmdir ${D}${prefix}/doc
-    cd ${S}/examples
-    install -d ${D}/${bindir}
-    cd bin${QT_LIBINFIX}/
-    for i in * ; do
-        cp -pPR ${i} ${D}/${bindir}/${i}${QT_LIBINFIX}
-    done
-    install -d ${D}${libdir}/${QT_DIR_NAME}
-    mv ${D}${prefix}/plugins ${D}${libdir}/${QT_DIR_NAME}
-}
-
-PACKAGES_prepend = "${PN}-examples ${PN}-features ${PN}-plugins "
-FILES_${PN}-examples = "${bindir}/*"
-FILES_${PN}-features = "${prefix}/features"
-FILES_${PN}-plugins = "${libdir}/${QT_DIR_NAME}/plugins/designer/*.so"
-FILES_${PN}-dbg += "${libdir}/${QT_DIR_NAME}/plugins/designer/.debug"
diff --git a/meta-oe/recipes-qt/qwt/qwt_6.0.1.bb b/meta-oe/recipes-qt/qwt/qwt_6.0.1.bb
deleted file mode 100644
index f38816a..0000000
--- a/meta-oe/recipes-qt/qwt/qwt_6.0.1.bb
+++ /dev/null
@@ -1,10 +0,0 @@ 
-inherit qt4x11
-
-require qwt.inc
-
-PR = "r1"
-
-SRC_URI[qwt.md5sum] = "ace68558eab873e2da7e641179c4ef0c"
-SRC_URI[qwt.sha256sum] = "3fe19dd5962d705632fc2ef616b009299de6cf1e702538296924dbfdc8003cb2"
-
-RPROVIDES_${PN}-dev = "libqwt-dev"
diff --git a/meta-oe/recipes-support/maliit/maliit-framework_git.bb b/meta-oe/recipes-support/maliit/maliit-framework_git.bb
deleted file mode 100644
index 3eb7f30..0000000
--- a/meta-oe/recipes-support/maliit/maliit-framework_git.bb
+++ /dev/null
@@ -1,101 +0,0 @@ 
-SUMMARY = "A virtual keyboard for touch-screen based user interfaces"
-HOMEPAGE = "https://wiki.maliit.org/Main_Page"
-
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE.LGPL;md5=5c917f6ce94ceb8d8d5e16e2fca5b9ad"
-
-inherit autotools qt4x11 gtk-immodules-cache
-
-PNBLACKLIST[maliit-framework] ?= "BROKEN: Wasn't updated to work with B!=S, maybe incorrectly inherits autotools"
-
-DEPENDS = "libxcomposite dbus gtk+3 gtk+"
-
-SRC_URI = "git://github.com/maliit/framework.git;branch=master \
-    file://0001-Fix-MALIIT_INSTALL_PRF-to-allow-the-build-with-opene.patch \
-    file://0001-Fix-QT_IM_PLUGIN_PATH-to-allow-openembedded-to-build.patch \
-    file://0001-Link-to-libmaliit-1-0-in-inputcontext-plugin.patch \
-    file://0002-ut_maliit_glib_settings-fix-build-for-glib-2.36.patch \
-    file://maliit-server.desktop \
-"
-
-SRCREV = "750842dec74a9b17dca91ef779c4fc5a43c4d9dc"
-PV = "0.92.3+git${SRCPV}"
-PR = "r1"
-
-
-PACKAGES =+ "${PN}-gtk"
-GTKIMMODULES_PACKAGES = "${PN}-gtk"
-
-RDEPENDS_${PN} = "qt4-plugin-inputmethod-imsw-multi libqtsvg4"
-
-RRECOMMENDS_${PN} = "maliit-plugins"
-
-
-FILES_${PN} += "\
-    ${libdir}/maliit/plugins-*/factories/libmaliit-plugins-quick-factory-*.so \
-    ${libdir}/qt4/plugins/inputmethods/*.so \
-    ${datadir}/applications/maliit-server.desktop \
-"
-
-FILES_${PN}-dbg += "\
-    ${libdir}/maliit-framework-tests \
-    ${libdir}/gtk-*/*/immodules/.debug \
-    ${libdir}/maliit/plugins-*/factories/.debug \
-    ${libdir}/qt4/plugins/.debug \
-    ${libdir}/qt4/plugins/inputmethods/.debug \
-"
-
-FILES_${PN}-dev += "${datadir}/qt4"
-
-FILES_${PN}-gtk +="\
-    ${bindir}/maliit-exampleapp-gtk* \
-    \
-    ${libdir}/gtk-*/*/immodules/libim-maliit.so\
-"
-
-EXTRA_QMAKEVARS_PRE = "\
-    PREFIX=${prefix} \
-    LIBDIR=${libdir} \
-    QT_IM_PLUGIN_PATH=${libdir}/qt4/plugins/inputmethods \
-    MALIIT_INSTALL_PRF=${datadir}/qt4/mkspecs/features \
-    SCHEMADIR=${sysconfdir}/gconf/schemas \
-    CONFIG+=disable-gconf \
-    CONFIG+=disable-gtk-cache-update \
-    CONFIG+=local-install \
-    CONFIG+=nosdk \
-"
-
-EXTRA_OEMAKE += "INSTALL_ROOT=${D}"
-
-do_install_append() {
-    #Fix absolute paths
-    sed -i -e "s|/usr|${STAGING_DIR_TARGET}${prefix}|" ${D}/${datadir}/qt4/mkspecs/features/maliit-framework.prf
-    sed -i -e "s|/usr|${STAGING_DIR_TARGET}${prefix}|" ${D}/${datadir}/qt4/mkspecs/features/maliit-plugins.prf
-
-    install -d ${D}${datadir}/applications
-    install -m 644 ${WORKDIR}/maliit-server.desktop ${D}${datadir}/applications
-}
-
-pkg_postinst_${PN} () {
-#!/bin/sh
-# should run online
-if [ "x$D" != "x" ]; then
-    exit 1
-fi
-echo "export QT_IM_MODULE=Maliit" >> /etc/xprofile
-ln -s /usr/share/applications/maliit-server.desktop /etc/xdg/autostart/maliit-server.desktop
-}
-
-pkg_postrm_${PN} () {
-#!/bin/sh
-# should run online
-if [ "x$D" = "x" ]; then
-    exit 1
-fi
-if [ -e "/etc/xprofile" ]; then
-    sed -i -e "g|export QT_IM_MODULE=Maliit|d" /etc/xprofile
-fi
-rm -f /etc/xdg/autostart/maliit-server.desktop
-}
-
-S = "${WORKDIR}/git"
diff --git a/meta-oe/recipes-support/maliit/maliit-plugins_git.bb b/meta-oe/recipes-support/maliit/maliit-plugins_git.bb
deleted file mode 100644
index 3c040d8..0000000
--- a/meta-oe/recipes-support/maliit/maliit-plugins_git.bb
+++ /dev/null
@@ -1,35 +0,0 @@ 
-SUMMARY = "Plugins for a virtual keyboard for touch-screen based user interfaces"
-HOMEPAGE = "https://wiki.maliit.org/Main_Page"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f29b21caa8e460097bfad9c026a33621"
-
-inherit autotools qt4x11
-
-PNBLACKLIST[maliit-plugins] ?= "BROKEN: depends on broken maliit-framework"
-
-DEPENDS = "maliit-framework"
-
-RDEPENDS_${PN} += "qt4-plugin-iconengine-svgicon qt4-plugin-imageformat-svg"
-
-SRC_URI = "git://github.com/maliit/plugins.git;branch=master"
-
-SRCREV = "0760e585df494b394df1b887e5138ffef19c481f"
-PV = "0.92.3+git${SRCPV}"
-
-EXTRA_QMAKEVARS_PRE = "\
-    PREFIX=${prefix} \
-    LIBDIR=${libdir} \
-    CONFIG+=nodoc \
-"
-
-FILES_${PN} += "\
-    ${libdir}/maliit \
-    ${datadir} \
-"
-
-FILES_${PN}-dbg += "${libdir}/maliit/plugins-*/.debug"
-
-S= "${WORKDIR}/git"
-
-EXTRA_OEMAKE += "INSTALL_ROOT=${D}"