From patchwork Mon Jan 11 07:10:46 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Koen Kooi X-Patchwork-Id: 59445 Delivered-To: patch@linaro.org Received: by 10.112.130.2 with SMTP id oa2csp1939017lbb; Sun, 10 Jan 2016 23:11:17 -0800 (PST) X-Received: by 10.98.76.92 with SMTP id z89mr24094011pfa.91.1452496277151; Sun, 10 Jan 2016 23:11:17 -0800 (PST) Return-Path: Received: from mail.openembedded.org (mail.openembedded.org. [140.211.169.62]) by mx.google.com with ESMTP id 76si26482327pfq.64.2016.01.10.23.11.16; Sun, 10 Jan 2016 23:11:17 -0800 (PST) Received-SPF: pass (google.com: domain of openembedded-devel-bounces@lists.openembedded.org designates 140.211.169.62 as permitted sender) client-ip=140.211.169.62; Authentication-Results: mx.google.com; spf=pass (google.com: domain of openembedded-devel-bounces@lists.openembedded.org designates 140.211.169.62 as permitted sender) smtp.mailfrom=openembedded-devel-bounces@lists.openembedded.org; dkim=neutral (body hash did not verify) header.i=@linaro.org Received: from layers.openembedded.org (localhost [127.0.0.1]) by mail.openembedded.org (Postfix) with ESMTP id 5BEB973CBD; Mon, 11 Jan 2016 07:10:59 +0000 (UTC) X-Original-To: openembedded-devel@lists.openembedded.org Delivered-To: openembedded-devel@lists.openembedded.org Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by mail.openembedded.org (Postfix) with ESMTP id 00A3760761 for ; Mon, 11 Jan 2016 07:10:53 +0000 (UTC) Received: by mail-wm0-f47.google.com with SMTP id b14so252921097wmb.1 for ; Sun, 10 Jan 2016 23:10:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=IKOqxYcCN8sOTuUH0U1kgUIkL4q5EpXNEhtWbOHOMmE=; b=UxKSaIZSqI5YukzmXZ3cMDBIR8OFXcUsfYiG6vpX60ZeYSydGXJtLKSIfXxwhlbrJb Qyr/M2Ej4SPgrg8M7P+jaHHWZclVDJIjuk1gh4iRZwXhHTsGzEyTNb81airT38V9rcUk ptxV20oC2JQmtDH2WNeMvgA8YYmjWXfVcmn9Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=IKOqxYcCN8sOTuUH0U1kgUIkL4q5EpXNEhtWbOHOMmE=; b=V3aFEuaGP98HrYpF+7jsilumsvaEOHIZEgoaJWf6Tyifz/jqn+XjJI7rexwPAQhA8y IqWalc2+zaGxrWRGM0bPfvRZHyyE8NXtqM3yjp/MiXE1Tqq4rlJHcqgPhh2K5rhRCYBs aOkYLjaz6lMpTwSMC9/rtznGo+dw7DeaVfazDF4e8HQChTI/BuoyS60KX6LrpT7RhcDd JBXtAiJvOdO5etOZk5Uwef6mTSuEEQRr2UKPQ9U3f6Ck+vxF9NCM76bDms0FFFv1P3tI bL0f35W1Z2OgqRMhD0ce4yIfS3bkcWZM6RI7vd6urFeEyRMVuNMqaR+uZJ/zmMmvjh6H 8PPQ== X-Gm-Message-State: ALoCoQm1+En0iOVFDWFq1krXjQw9ElfNiu1nzWqYjxvQOQUNnTCnNSNuSH95NTKZeie41MoGvme78l3GPc895MWHsOD8a78zbg== X-Received: by 10.194.79.201 with SMTP id l9mr148538812wjx.151.1452496253424; Sun, 10 Jan 2016 23:10:53 -0800 (PST) Received: from thinkpad.localdomain (ip4da2a5ae.direct-adsl.nl. [77.162.165.174]) by smtp.gmail.com with ESMTPSA id r10sm93661757wjz.24.2016.01.10.23.10.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 10 Jan 2016 23:10:51 -0800 (PST) From: Koen Kooi To: openembedded-devel@lists.openembedded.org Date: Mon, 11 Jan 2016 08:10:46 +0100 Message-Id: <1452496246-18628-1-git-send-email-koen.kooi@linaro.org> X-Mailer: git-send-email 2.4.3 Cc: Koen Kooi Subject: [oe] [meta-oe][PATCH] various: delete qt4 recipes that break parsing due to missing classes X-BeenThere: openembedded-devel@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Using the OpenEmbedded metadata to build Distributions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: openembedded-devel@lists.openembedded.org MIME-Version: 1.0 Sender: openembedded-devel-bounces@lists.openembedded.org Errors-To: openembedded-devel-bounces@lists.openembedded.org Signed-off-by: Koen Kooi --- .../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 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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 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 -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 ---- - 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 -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 ---- - 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 - #include - -+#include -+#include -+#include -+ - //#include - //#include - #include - - #include "configdialog.h" --#include --#include --#include - #include - #include - --- -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 -Date: Fri, 11 Nov 2011 09:32:14 +0100 -Subject: [PATCH 2/2] qconsole, writethread: gcc 4.5 fixes - -Signed-off-by: Koen Kooi ---- - 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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 -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 -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 - -Change-Id: I867181d2b750f32f04376ce860f5dee6555d3e33 -Reviewed-by: Christian Kandeler ---- - 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 -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 -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 -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 ---- - 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 -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 - --#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 - #endif - --#ifndef QT_NO_DBUS -+#ifdef QTM_BLUEZ_BLUETOOTH - #include - #include - #include -@@ -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 - #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 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 - #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 - #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 ------------------------------------------------------- -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(buf + size); - if (buf) { - if (relocatable) { -- meta->d.stringdata = reinterpret_cast((intptr_t)size); -- meta->d.data = reinterpret_cast((intptr_t)pmetaSize); -+ meta->d.stringdata = reinterpret_cast((quintptr)size); -+ meta->d.data = reinterpret_cast((quintptr)pmetaSize); - } else { - meta->d.stringdata = str; - meta->d.data = reinterpret_cast(data); -@@ -1504,8 +1509,8 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output, - const char *buf = data.constData(); - const QMetaObject *dataMo = reinterpret_cast(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 -+ -+#ifndef Q_OS_WIN -+#include -+#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(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 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 keys; -+ QList values; -+}; -+ -+class QMetaObjectBuilderPrivate -+{ -+public: -+ QMetaObjectBuilderPrivate() -+ : flags(0) -+ { -+ superClass = &QObject::staticMetaObject; -+ staticMetacallFunction = 0; -+ } -+ -+ QByteArray className; -+ const QMetaObject *superClass; -+ QMetaObjectBuilder::StaticMetacallFunction staticMetacallFunction; -+ QList methods; -+ QList constructors; -+ QList properties; -+ QList classInfoNames; -+ QList classInfoValues; -+ QList enumerators; -+#ifdef Q_NO_DATA_RELOCATION -+ QList relatedMetaObjects; -+#else -+ QList 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& 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(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(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(pmeta); -+ size += dataIndex * sizeof(int); -+ char *str = reinterpret_cast(buf + size); -+ if (buf) { -+ if (relocatable) { -+ meta->d.stringdata = reinterpret_cast((intptr_t)size); -+ meta->d.data = reinterpret_cast((intptr_t)pmetaSize); -+ } else { -+ meta->d.stringdata = str; -+ meta->d.data = reinterpret_cast(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(buf + size); -+ size += sizeof(QMetaObjectExtraData); -+ ALIGN(size, QMetaObject *); -+#ifdef Q_NO_DATA_RELOCATION -+ QMetaObjectAccessor *objects = -+ reinterpret_cast(buf + size); -+#else -+ const QMetaObject **objects = -+ reinterpret_cast(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(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(qMalloc(size)); -+ buildMetaObject(d, buf, false); -+ return reinterpret_cast(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(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(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& 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& 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 QMetaMethodBuilder::parameterNames() const -+{ -+ QMetaMethodBuilderPrivate *d = d_func(); -+ if (d) -+ return d->parameterNames; -+ else -+ return QList(); -+} -+ -+/*! -+ Sets the list of parameter names for this method to \a value. -+ -+ \sa parameterNames() -+*/ -+void QMetaMethodBuilder::setParameterNames(const QList& 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 -+#include -+#include -+#include -+#include -+ -+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& 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 parameterNames() const; -+ void setParameterNames(const QList& 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 -+#include -+#include -+#include -+ -+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() << "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() << "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() << "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() << "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() << "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() << "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() << "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() << "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() << "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() << "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() << "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() << "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 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()); -+ -+ 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 - -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 - 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 - - 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 - - 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 - ---- 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 - 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 -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 - 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 <>./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}"