Patchwork qt4: fix generated sdk

login
register
mail settings
Submitter Eric BENARD
Date Sept. 10, 2011, 9:25 a.m.
Message ID <1315646701-28916-1-git-send-email-eric@eukrea.com>
Download mbox | patch
Permalink /patch/11281/
State New, archived
Headers show

Comments

Eric BENARD - Sept. 10, 2011, 9:25 a.m.
- qt4-tools-nativesdk : actually the qmkae binary which gets installed
comes from the native recipe. This patch fix this problem by laucnhing
configure twice : once to compile qmake using the right toolchain for
nativesdk, and a second time using the native qmake to compile all the
other tools for the nativesdk. Then we install the right qmake.

- mkspec : the link actually created in qt4-tools-nativesdk's
do_install point to nowhere so remove it and generate the link in
meta-toolchain-qte as it's the only place where we have all the variable
to create it.

- toolchain_create_sdk_env_script_append : we need to add OE_QMAKE_CFLAGS,
OE_QMAKE_CXXFLAGS and OE_QMAKE_LDFLAGS else the sdk won't find these
variables that are inserted by qmake in the Makefiles.

- with this patch, oe-core generates a working meta-toolchain-qte which
can compile a small example and is properly recognized by qtcreator (this
brings oe-core's meta-toolchain-qte to oe-dev's functional state).

Signed-off-by: Eric Bénard <eric@eukrea.com>
---
 meta/recipes-qt/meta/meta-toolchain-qte.bb  |    7 +++++++
 meta/recipes-qt/qt4/qt4-tools-nativesdk.inc |   22 +++++++++++-----------
 2 files changed, 18 insertions(+), 11 deletions(-)
Otavio Salvador - Sept. 10, 2011, 9:56 a.m.
On Sat, Sep 10, 2011 at 06:25, Eric Bénard <eric@eukrea.com> wrote:
> - qt4-tools-nativesdk : actually the qmkae binary which gets installed
> comes from the native recipe. This patch fix this problem by laucnhing
> configure twice : once to compile qmake using the right toolchain for
> nativesdk, and a second time using the native qmake to compile all the
> other tools for the nativesdk. Then we install the right qmake.
...
> - toolchain_create_sdk_env_script_append : we need to add OE_QMAKE_CFLAGS,
> OE_QMAKE_CXXFLAGS and OE_QMAKE_LDFLAGS else the sdk won't find these
> variables that are inserted by qmake in the Makefiles.
>
> - with this patch, oe-core generates a working meta-toolchain-qte which
> can compile a small example and is properly recognized by qtcreator (this
> brings oe-core's meta-toolchain-qte to oe-dev's functional state).
...

In this case we most probably can drop the qt.conf file from the SDK
directory, don't we?
Eric BENARD - Sept. 10, 2011, 9:59 a.m.
Hi Otavio,

Le 10/09/2011 11:56, Otavio Salvador a écrit :
> On Sat, Sep 10, 2011 at 06:25, Eric Bénard<eric@eukrea.com>  wrote:
>> - qt4-tools-nativesdk : actually the qmkae binary which gets installed
>> comes from the native recipe. This patch fix this problem by laucnhing
>> configure twice : once to compile qmake using the right toolchain for
>> nativesdk, and a second time using the native qmake to compile all the
>> other tools for the nativesdk. Then we install the right qmake.
> ...
>> - toolchain_create_sdk_env_script_append : we need to add OE_QMAKE_CFLAGS,
>> OE_QMAKE_CXXFLAGS and OE_QMAKE_LDFLAGS else the sdk won't find these
>> variables that are inserted by qmake in the Makefiles.
>>
>> - with this patch, oe-core generates a working meta-toolchain-qte which
>> can compile a small example and is properly recognized by qtcreator (this
>> brings oe-core's meta-toolchain-qte to oe-dev's functional state).
> ...
>
> In this case we most probably can drop the qt.conf file from the SDK
> directory, don't we?
>
no qt.conf gets installed in the sdk.

Eric
Otavio Salvador - Sept. 10, 2011, 10:03 a.m.
On Sat, Sep 10, 2011 at 06:59, Eric Bénard <eric@eukrea.com> wrote:
> Hi Otavio,
>
> Le 10/09/2011 11:56, Otavio Salvador a écrit :
...
>> In this case we most probably can drop the qt.conf file from the SDK
>> directory, don't we?
>>
> no qt.conf gets installed in the sdk.

But as qmake is generated for the sdk it has the proper patches and
thus qmake -query will report the right paths AFAIK making qt.conf a
duplication of this information. Am I missing something?
Otavio Salvador - Sept. 10, 2011, 10:31 a.m.
On Sat, Sep 10, 2011 at 07:03, Otavio Salvador <otavio@ossystems.com.br> wrote:
> But as qmake is generated for the sdk it has the proper patches and
> thus qmake -query will report the right paths AFAIK making qt.conf a
> duplication of this information. Am I missing something?

Just to let the mailing list posted ...

As we discussed on #oe I will be working at porting the O.S. Systems
qt.conf generation since this is required for CMake to properly work
with Qt applications.

Will post it next week :-)
Eric BENARD - Sept. 13, 2011, 5:44 a.m.
Hi Paul,

did you have time to test this patch ?
http://patches.openembedded.org/patch/11281/

Le 10/09/2011 12:31, Otavio Salvador a écrit :
> On Sat, Sep 10, 2011 at 07:03, Otavio Salvador<otavio@ossystems.com.br>  wrote:
>> But as qmake is generated for the sdk it has the proper patches and
>> thus qmake -query will report the right paths AFAIK making qt.conf a
>> duplication of this information. Am I missing something?
>
> Just to let the mailing list posted ...
>
> As we discussed on #oe I will be working at porting the O.S. Systems
> qt.conf generation since this is required for CMake to properly work
> with Qt applications.
>
one more detail : this patch is fine when not using cmake so can be integrated
as is as it fix meta-toolchain-qte (the right path are set by both this patch 
and the environment-setup script on the toolchain.

One more question : is there interest in a patch that move "qtopia" paths to 
more standard "qt4" paths ?

Thanks,
Eric
Otavio Salvador - Sept. 13, 2011, 2:12 p.m.
On Tue, Sep 13, 2011 at 02:44, Eric Bénard <eric@eukrea.com> wrote:
...
>> As we discussed on #oe I will be working at porting the O.S. Systems
>> qt.conf generation since this is required for CMake to properly work
>> with Qt applications.
>>
> one more detail : this patch is fine when not using cmake so can be
> integrated
> as is as it fix meta-toolchain-qte (the right path are set by both this
> patch and the environment-setup script on the toolchain.

Yes; indeed. This wasn't clear from my message, sorry for that.

> One more question : is there interest in a patch that move "qtopia" paths to
> more standard "qt4" paths ?

I think it would be nice to have.

By the way, it seems you have a typo in the commit log; qmake is
written wrongly.
Paul Eggleton - Sept. 13, 2011, 5:25 p.m.
Hi Eric,

On Tuesday 13 September 2011 06:44:30 Eric Bénard wrote:
> Hi Paul,
> 
> did you have time to test this patch ?
> http://patches.openembedded.org/patch/11281/

I hadn't because it looked to me as if there was a newer patch coming; I 
hadn't realised you still wanted it merged. I'll test your v2 patch this 
evening.

Cheers,
Paul

Patch

diff --git a/meta/recipes-qt/meta/meta-toolchain-qte.bb b/meta/recipes-qt/meta/meta-toolchain-qte.bb
index 72d58db..735ccd1 100644
--- a/meta/recipes-qt/meta/meta-toolchain-qte.bb
+++ b/meta/recipes-qt/meta/meta-toolchain-qte.bb
@@ -10,6 +10,9 @@  QT_DIR_NAME = "qtopia"
 QT_TOOLS_PREFIX = "${SDKPATHNATIVE}${bindir_nativesdk}"
 
 toolchain_create_sdk_env_script_append() {
+    echo 'export OE_QMAKE_CFLAGS="$CFLAGS"' >> $script
+    echo 'export OE_QMAKE_CXXFLAGS="$CXXFLAGS"' >> $script
+    echo 'export OE_QMAKE_LDFLAGS="$LDFLAGS"' >> $script
     echo 'export OE_QMAKE_CC=${TARGET_PREFIX}gcc' >> $script
     echo 'export OE_QMAKE_CXX=${TARGET_PREFIX}g++' >> $script
     echo 'export OE_QMAKE_LINK=${TARGET_PREFIX}g++' >> $script
@@ -24,4 +27,8 @@  toolchain_create_sdk_env_script_append() {
     echo 'export OE_QMAKE_QDBUSXML2CPP=${QT_TOOLS_PREFIX}/qdbusxml2cpp4' >> $script
     echo 'export OE_QMAKE_QT_CONFIG=${SDKTARGETSYSROOT}/${datadir}/${QT_DIR_NAME}/mkspecs/qconfig.pri' >> $script
     echo 'export QMAKESPEC=${SDKTARGETSYSROOT}/${datadir}/${QT_DIR_NAME}/mkspecs/linux-g++' >> $script
+
+    # make a symbolic link to mkspecs for compatibility with Nokia's SDK
+    # and QTCreator
+    (cd ${SDK_OUTPUT}/${QT_TOOLS_PREFIX}/..; ln -s ${SDKTARGETSYSROOT}/usr/share/qtopia/mkspecs mkspecs;)
 }
diff --git a/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc b/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc
index 068528e..0ae0af6 100644
--- a/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc
+++ b/meta/recipes-qt/qt4/qt4-tools-nativesdk.inc
@@ -51,10 +51,6 @@  EXTRA_OECONF = "-prefix ${prefix} \
 EXTRA_OEMAKE = " "
 
 do_configure() {
-    if [ ! -e bin/qmake ]; then
-        ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
-    fi
-
     if [ ! -e mkspecs/${TARGET_OS}-oe-g++ ]; then
         ln -sf linux-g++ mkspecs/${TARGET_OS}-oe-g++
     fi
@@ -62,7 +58,16 @@  do_configure() {
     cp ../g++.conf mkspecs/common
     cp ../linux.conf mkspecs/common
 
-    (echo o; echo yes) | ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
+    # first launch configure to get qmake compiled for the nativesdk
+    (echo o; echo yes) | CC="${CC}" CXX="${CXX}" ./configure ${EXTRA_OECONF} || true
+
+    # then backup the binary and start again with a qmake which can run on the build host
+    mv bin/qmake bin/qmake_nativesdk
+    if [ ! -e bin/qmake ]; then
+        ln -sf ${STAGING_BINDIR_NATIVE}/qmake2 bin/qmake
+    fi
+
+    (echo o; echo yes) | CC="${CC}" CXX="${CXX}" ./configure ${EXTRA_OECONF} || die "Configuring qt failed. EXTRA_OECONF was ${EXTRA_OECONF}"
 }
 
 TOBUILD = "\
@@ -91,7 +96,7 @@  do_compile() {
 
 do_install() {
     install -d ${D}${bindir}
-    install -m 0755 bin/qmake ${D}${bindir}/qmake2
+    install -m 0755 bin/qmake_nativesdk ${D}${bindir}/qmake2
     for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do
         install -m 0755 bin/${i} ${D}${bindir}/${i}4
     done
@@ -101,9 +106,4 @@  do_install() {
     for i in moc uic uic3 rcc lrelease lupdate qdbuscpp2xml qdbusxml2cpp; do \
         ln -s ${i}4 ${i}; \
     done)
-
-    # make a symbolic link to mkspecs for compatibility with Nokia's SDK
-    # and QTCreator
-    (cd ${D}${bindir}/..; ln -s ${TARGET_SYS}/usr/share/qtopia/mkspecs mkspecs;)
 }
-