From patchwork Thu Feb 9 17:57:08 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RFC,2/4] qt4: build qmake for the target Date: Thu, 09 Feb 2012 17:57:08 -0000 From: Paul Eggleton X-Patchwork-Id: 21053 Message-Id: To: openembedded-core@lists.openembedded.org, philip@balister.org, eric@eukrea.com qmake was not being built at all (since we had the host version from qt4-native) and the default is to build for the host machine within configure. With a minor hack we can build qmake for the target as well, which is useful if you want to build Qt 4 software on an actual device. Also move do_compile() from qt-${PV}.inc up to qt4.inc as both versions have the exact same content. Signed-off-by: Paul Eggleton --- meta/recipes-qt/qt4/files/target_qmake.patch | 16 ++++++++ meta/recipes-qt/qt4/qt-4.7.4.inc | 11 +----- meta/recipes-qt/qt4/qt-4.8.0.inc | 12 +----- meta/recipes-qt/qt4/qt-4.8.0/qmake_pri_fixes.patch | 40 ++++++++++++++++++++ meta/recipes-qt/qt4/qt4-embedded_4.7.4.bb | 2 +- meta/recipes-qt/qt4/qt4-x11-free_4.7.4.bb | 2 +- meta/recipes-qt/qt4/qt4.inc | 25 +++++++++++- 7 files changed, 83 insertions(+), 25 deletions(-) create mode 100644 meta/recipes-qt/qt4/files/target_qmake.patch create mode 100644 meta/recipes-qt/qt4/qt-4.8.0/qmake_pri_fixes.patch diff --git a/meta/recipes-qt/qt4/files/target_qmake.patch b/meta/recipes-qt/qt4/files/target_qmake.patch new file mode 100644 index 0000000..a4650c8 --- /dev/null +++ b/meta/recipes-qt/qt4/files/target_qmake.patch @@ -0,0 +1,16 @@ +Allow building a separate qmake for the target + +Signed-off-by: Paul Eggleton + +Upstream-Status: Inappropriate [config] + +--- qt-everywhere-opensource-src-4.8.0.orig/qmake/qmake.pro ++++ qt-everywhere-opensource-src-4.8.0/qmake/qmake.pro +@@ -7,6 +7,7 @@ CONFIG += console bootstrap + CONFIG -= qt shared app_bundle uic + DEFINES += QT_BUILD_QMAKE QT_BOOTSTRAPPED + DESTDIR = ../bin/ ++TARGET = qmake2 + + OBJECTS_DIR = . + MOC_DIR = . diff --git a/meta/recipes-qt/qt4/qt-4.7.4.inc b/meta/recipes-qt/qt4/qt-4.7.4.inc index 9ddb055..216472c 100644 --- a/meta/recipes-qt/qt4/qt-4.7.4.inc +++ b/meta/recipes-qt/qt4/qt-4.7.4.inc @@ -15,6 +15,7 @@ SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}. file://blacklist-diginotar-certs.diff \ file://fix-translations.patch \ file://add_nostrip_for_debug_packages.diff \ + file://target_qmake.patch \ file://g++.conf \ file://linux.conf \ file://fix-qtbug-20925.patch \ @@ -43,13 +44,3 @@ do_configure_prepend() { ${S}/configure } -do_compile() { - # Fixup missing wsegl header in some SGX SDKs - if ! [ -e ${STAGING_INCDIR}/wsegl.h ] ; then - cp src/3rdparty/powervr/wsegl.h src/plugins/gfxdrivers/powervr/QWSWSEGL/ - fi - - unset CFLAGS CXXFLAGS - - oe_runmake ${EXTRA_ENV} -} diff --git a/meta/recipes-qt/qt4/qt-4.8.0.inc b/meta/recipes-qt/qt4/qt-4.8.0.inc index e251f0a..f7984bd 100644 --- a/meta/recipes-qt/qt4/qt-4.8.0.inc +++ b/meta/recipes-qt/qt4/qt-4.8.0.inc @@ -15,6 +15,8 @@ SRC_URI = "http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-${PV}. file://add_nostrip_for_debug_packages.diff \ file://qmake_cxx_eval.patch \ file://webkit_no_werror.patch \ + file://target_qmake.patch \ + file://qmake_pri_fixes.patch \ file://g++.conf \ file://linux.conf \ " @@ -50,13 +52,3 @@ do_configure_prepend() { unset LD } -do_compile() { - # Fixup missing wsegl header in some SGX SDKs - if ! [ -e ${STAGING_INCDIR}/wsegl.h ] ; then - cp src/3rdparty/powervr/wsegl.h src/plugins/gfxdrivers/powervr/QWSWSEGL/ - fi - - unset CFLAGS CXXFLAGS - - oe_runmake ${EXTRA_ENV} -} diff --git a/meta/recipes-qt/qt4/qt-4.8.0/qmake_pri_fixes.patch b/meta/recipes-qt/qt4/qt-4.8.0/qmake_pri_fixes.patch new file mode 100644 index 0000000..6fe853a --- /dev/null +++ b/meta/recipes-qt/qt4/qt-4.8.0/qmake_pri_fixes.patch @@ -0,0 +1,40 @@ +qmake: fix source file references in qmake.pri + +Fix duplicate entries in SOURCES and HEADERS, and fix the source file +list for the split of qlocale.cpp. + +Signed-off-by: Paul Eggleton + +Upstream-Status: Pending + +--- qt-everywhere-opensource-src-4.8.0.orig/qmake/qmake.pri ++++ qt-everywhere-opensource-src-4.8.0/qmake/qmake.pri +@@ -22,8 +22,7 @@ SOURCES += project.cpp property.cpp main + generators/symbian/initprojectdeploy_symbian.cpp \ + generators/integrity/gbuild.cpp \ + windows/registry.cpp \ +- symbian/epocroot.cpp \ +- generators/integrity/gbuild.cpp ++ symbian/epocroot.cpp + + HEADERS += project.h property.h generators/makefile.h \ + generators/unix/unixmake.h meta.h option.h cachekeys.h \ +@@ -40,8 +39,7 @@ HEADERS += project.h property.h generato + generators/symbian/initprojectdeploy_symbian.h \ + generators/integrity/gbuild.h \ + windows/registry_p.h \ +- symbian/epocroot_p.h \ +- generators/integrity/gbuild.h ++ symbian/epocroot_p.h + + contains(QT_EDITION, OpenSource) { + DEFINES += QMAKE_OPENSOURCE_EDITION +@@ -72,6 +70,8 @@ bootstrap { #Qt code + qlist.cpp \ + qlinkedlist.cpp \ + qlocale.cpp \ ++ qlocale_tools.cpp \ ++ qlocale_unix.cpp \ + qmalloc.cpp \ + qmap.cpp \ + qmetatype.cpp \ diff --git a/meta/recipes-qt/qt4/qt4-embedded_4.7.4.bb b/meta/recipes-qt/qt4/qt4-embedded_4.7.4.bb index 9b66d03..a1fcafb 100644 --- a/meta/recipes-qt/qt4/qt4-embedded_4.7.4.bb +++ b/meta/recipes-qt/qt4/qt4-embedded_4.7.4.bb @@ -1,7 +1,7 @@ require qt-${PV}.inc require qt4-embedded.inc -PR = "${INC_PR}.6" +PR = "${INC_PR}.7" QT_CONFIG_FLAGS_append_armv6 = " -no-neon " diff --git a/meta/recipes-qt/qt4/qt4-x11-free_4.7.4.bb b/meta/recipes-qt/qt4/qt4-x11-free_4.7.4.bb index 6dedf00..e7f848e 100644 --- a/meta/recipes-qt/qt4/qt4-x11-free_4.7.4.bb +++ b/meta/recipes-qt/qt4/qt4-x11-free_4.7.4.bb @@ -1,7 +1,7 @@ require qt4-x11-free.inc require qt-${PV}.inc -PR = "${INC_PR}.6" +PR = "${INC_PR}.7" QT_CONFIG_FLAGS_append_armv6 = " -no-neon " diff --git a/meta/recipes-qt/qt4/qt4.inc b/meta/recipes-qt/qt4/qt4.inc index ea868ff..53854b1 100644 --- a/meta/recipes-qt/qt4/qt4.inc +++ b/meta/recipes-qt/qt4/qt4.inc @@ -142,8 +142,8 @@ RRECOMMENDS_${QT_BASE_NAME}-qmlviewer += " \ RRECOMMENDS_${QT_BASE_NAME}-doc += " \ ${QT_BASE_NAME}-demos-doc" -FILES_${QT_BASE_NAME}-tools = "${bindir}/qttracereplay ${bindir}/qdoc* ${bindir}/moc ${bindir}/uic* ${bindir}/rcc" -FILES_${QT_BASE_NAME}-tools-dbg = "${bindir}/.debug/qttracereplay ${bindir}/.debug/qdoc* ${bindir}/.debug/uic* ${bindir}/.debug/moc ${bindir}/.debug/rcc" +FILES_${QT_BASE_NAME}-tools = "${bindir}/qttracereplay ${bindir}/qdoc* ${bindir}/qmake ${bindir}/moc ${bindir}/uic* ${bindir}/rcc" +FILES_${QT_BASE_NAME}-tools-dbg = "${bindir}/.debug/qttracereplay ${bindir}/.debug/qdoc* ${bindir}/.debug/qmake ${bindir}/.debug/uic* ${bindir}/.debug/moc ${bindir}/.debug/rcc" FILES_${QT_BASE_NAME}-assistant = "${bindir}/*assistant* ${bindir}/qcollectiongenerator ${bindir}/qhelpconverter ${bindir}/qhelpgenerator" FILES_${QT_BASE_NAME}-assistant-dbg = "${bindir}/.debug/*assistant* ${bindir}/.debug/qcollectiongenerator ${bindir}/.debug/qhelpconverter ${bindir}/.debug/qhelpgenerator" FILES_${QT_BASE_NAME}-common = "${bindir}/qtconfig" @@ -236,6 +236,24 @@ do_configure() { -I${STAGING_INCDIR}/freetype2 } +do_compile() { + # Fixup missing wsegl header in some SGX SDKs + if ! [ -e ${STAGING_INCDIR}/wsegl.h ] ; then + cp src/3rdparty/powervr/wsegl.h src/plugins/gfxdrivers/powervr/QWSWSEGL/ + fi + + unset CFLAGS CXXFLAGS + + oe_runmake ${EXTRA_ENV} + + # Build target qmake + export QMAKESPEC="${S}/mkspecs/linux-oe-g++" + cd ${S}/qmake + ${OE_QMAKE_QMAKE} + oe_runmake CC="${CC}" CXX="${CXX}" + cd ${S} +} + python populate_packages_prepend() { translation_dir = bb.data.expand('${datadir}/${QT_DIR_NAME}/translations/', d) translation_name = bb.data.expand('${QT_BASE_NAME}-translation-%s', d) @@ -295,8 +313,9 @@ python populate_packages_prepend() { do_install() { oe_runmake install INSTALL_ROOT=${D} - # These are host binaries, we should only use them in staging + # Install a proper target version of qmake rm ${D}/${bindir}/qmake + install -m 0755 bin/qmake2 ${D}${bindir}/qmake # fix pkgconfig, libtool and prl files sed -i -e 's#-L${S}/lib/\?##g' \