Qt5-Maemo5/Development

If you like to commit to the repositories, create an account on gitorious.org and ask in the TMO thread.

Contents

Building Qt5 for the N900 (using scratchbox)

Prerequisites:

  • any scratchbox ARMEL target, tested with CSSU-thumb toolchain setup (gcc4.7.2-linaro)
  • Xlib-xcb.h and libX11-xcb.so build from http://maemo.org/packages/source/view/fremantle_sdk_free_source/libx11/1.1.99.6+0m5 (build with --with-xcb)
    • We would need to deliver libX11.so.6 too, but --with-xcb breaks keyboard support for system apps
    • Solution: we install a copy of libX11.so with XCB supoort, named libXc11.so and link against this copy, so system binaries don't load it (tested, works reliably)
      • apt-get install libxc11-xcb-dev (with frafl's temporary Qt5 repo enabled, see Qt5-Maemo5)
      • all "-lX11" (and "-lX11-xcb") in the Qt sources have been changed to "-lXc11" ("-lXc11-xcb" respectively)


Prepare your build environment

#clone the repo
git clone git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5.git
cd qt5-maemo5 && git remote set-url --push origin git@gitorious.org:+qt5-maemo5/qt/qt5-maemo5.git
git checkout maemo5
git clone git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtbase.git qtbase
cd qtbase && git checkout maemo5 && git remote set-url --push origin git@gitorious.org:+qt5-maemo5/qt/qt5-maemo5-qtbase.git && cd ..
git clone git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtdeclarative.git/qt/qt5-maemo5-qtdeclarative.git
cd qtdeclarative && git checkout maemo5 && git remote set-url --push origin git@gitorious.org:+qt5-maemo5/qt/qt5-maemo5-qtdeclarative.git && cd ..
./init-repository -f
git config --remove-section submodule.qtbase
git config --add submodule.qtbase.url git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtbase.git
git config --remove-section submodule.qtdeclarative
git config --add submodule.qtdeclarative.url git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtdeclarative.git
#If you want o build
git clone git://gitorious.org/qt5-maemo5/qt5-maemo5-qtmaemo5.git
#if you like to use the Thumb2 instructions check for -mthumb in QMAKE_CFLAGS
vim qtbase/mkspecs/devices/linux-maemo-n900-g++/qmake.conf

Now it's time to configure

configure within scratchbox instead (now standard)

 PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig/ PKG_CONFIG_SYSROOT_DIR=/ ./configure -no-c++11 -developer-build -opensource -nomake examples -nomake tests -gtkstyle -confirm-license -device linux-maemo-n900-g++ -qt-xcb -make libs -prefix /opt/qt5

configure for a build outside of scratchbox (should still work, see wiki history for additional prerequisites)

#-no-c++11 is only needed because of a single bug (related to gcc4.7?)
./configure -no-c++11 -developer-build -opensource -nomake examples -nomake tests -confirm-license -device linux-maemo-n900-g++ -device-option CROSS_COMPILE=/scratchbox/compilers/${COMPILER}/bin/arm-none-linux-gnueabi- -sysroot /scratchbox/users/${USER}/targets/${TARGET}/ -qt-xcb -make libs -prefix /opt/qt5

Finally, we build Qt

make module-qtbase module-qtdeclarative
#or, especially for additional modules, but works for base and declarative, too
cd qtSOMEMODULE
../qtbase/bin/qmake
make
#if debianized (i.e. debian exists)
dpkg-buildpackage -b
#attention: no prober clean rules in debian (to save some time)
#so remove debian/tmp to force prober reinstall

installation (build in scratchbox (s.a.))

cd qtbase && fakeroot make install && cd ..
cd qtjsbackend && fakeroot make install && cd ..
cd qtsvg && fakeroot make install && cd .. 
cd qtdeclarative && fakeroot make install && cd ..
ln -s /opt/qt5/bin/qmake /usr/bin/qmake-qt5

Building Qt5 for the N900 (using MADDE)

Prerequisites:

  • MADDE
  • The same as for scratchbox


MADDEROOT=/opt/QtSDK/Maemo/4.6.2
#see scratchbox
git clone ...
#-sysroots redirects everything to a path under ${MADDEROOT}
ln -s `pwd` ${MADDEROOT}/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim`pwd`
#**Remove** -mthumb in QMAKE_CFLAGS (does not work with current MADDE)
vim qtbase/mkspecs/devices/linux-maemo-n900-g++/qmake.conf

Now it's time to configure and build:

#change if your host is not x86_64
./configure -developer-build -opensource -nomake examples -nomake tests -confirm-license -device linux-maemo-n900-g++ -device-option CROSS_COMPILE=${MADDEROOT}/toolchains/arm-2007q3-51sb6-gdb71-arm-none-linux-gnueabi_linux_x86_64/bin/arm-none-linux-gnueabi- -sysroot ${MADDEROOT}/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim -qt-xcb -make libs -prefix /opt/qt5
make module-qtbase module-qtdeclarative