[OE-core] [RFC PATCH 2/4] qt4: build qmake for the target
Paul Eggleton
paul.eggleton at linux.intel.com
Thu Feb 9 17:57:08 UTC 2012
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 <paul.eggleton at linux.intel.com>
---
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 <paul.eggleton at linux.intel.com>
+
+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 <paul.eggleton at linux.intel.com>
+
+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' \
--
1.7.5.4
More information about the Openembedded-core
mailing list