Qt5-Maemo5/Development

From Maemo Wiki
Jump to navigationJump to search

If you like to commit to the repositories, create an account on gitlab.com and ask in the TMO thread. See the group [1] page, for an overview of repositories.

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 https://gitlab.com/qt5-maemo5/qt5-maemo5.git
cd qt5-maemo5 && git remote set-url --push origin git@gitlab.com:qt5-maemo5/qt5-maemo5.git
git checkout maemo5
./init-repository -f --module-subset=all
 cd qtbase && git remote set-url --push origin git@gitlab.com:qt5-maemo5/qt5-maemo5-qtbase.git && cd ..
 cd qtdeclarative && git remote set-url --push origin git@gitlab.com:qt5-maemo5/qt5-maemo5-qtdeclarative.git && cd ..  
 cd qtmaemo5 && git remote set-url --push origin git@gitlab.com:qt5-maemo5/qt5-maemo5-qtmaemo5.git && cd ..
 cd debian && ./setupdebianlinks.sh && cd ..
#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 for a normal build within scratchbox (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 instead (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)

Deprecated

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