Qt5-Maemo5/Development
m (moved Qt5-Maemo5-Development to Qt5-Maemo5/Development: structure) |
(removed usage of prebuilt libs to its own page) |
||
Line 1: | Line 1: | ||
+ | If you like to commit to the repositories, create an account on gitorious.org and ask in the [http://talk.maemo.org/showthread.php?t=84782 TMO thread]. | ||
+ | |||
= Building Qt5 for the N900 (using scratchbox) = | = Building Qt5 for the N900 (using scratchbox) = | ||
Prerequisites: | Prerequisites: | ||
* any scratchbox ARMEL target, tested with [[CSSU-thumb toolchain setup (gcc4.7.2-linaro)]] | * 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) | |
- | * 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]]) | |
- | ** | + | |
- | *** apt-get install | + | |
*** all "-lX11" (and "-lX11-xcb") in the Qt sources have been changed to "-lX'''c'''11" ("-lX'''c'''11-xcb" respectively) | *** all "-lX11" (and "-lX11-xcb") in the Qt sources have been changed to "-lX'''c'''11" ("-lX'''c'''11-xcb" respectively) | ||
Line 40: | Line 40: | ||
git config --remove-section submodule.qtdeclarative | git config --remove-section submodule.qtdeclarative | ||
git config --add submodule.qtdeclarative.url git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtdeclarative.git | 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 | #if you like to use the Thumb2 instructions check for -mthumb in QMAKE_CFLAGS | ||
vim qtbase/mkspecs/devices/linux-maemo-n900-g++/qmake.conf | vim qtbase/mkspecs/devices/linux-maemo-n900-g++/qmake.conf | ||
- | |||
- | |||
=== Now it's time to configure === | === Now it's time to configure === | ||
Line 56: | Line 56: | ||
=== Finally, we build Qt === | === Finally, we build Qt === | ||
make module-qtbase module-qtdeclarative | 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.)) | installation (build '''in''' scratchbox (s.a.)) | ||
Line 62: | Line 70: | ||
cd qtsvg && fakeroot make install && cd .. | cd qtsvg && fakeroot make install && cd .. | ||
cd qtdeclarative && fakeroot make install && cd .. | cd qtdeclarative && fakeroot make install && cd .. | ||
- | ln -s /opt/ | + | ln -s /opt/qt5/bin/qmake /usr/bin/qmake-qt5 |
= Building Qt5 for the N900 (using MADDE) = | = Building Qt5 for the N900 (using MADDE) = | ||
Line 83: | Line 91: | ||
./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 | ./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 | make module-qtbase module-qtdeclarative | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- |
Revision as of 16:43, 5 August 2013
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
GITROOT=`pwd`/qt5-maemo5/ USER=YourScratchboxUserName TARGET=FREMANTLE_ARMEL_GCC472 COMPILER=linaro-4.7-2012.07-fremantle-armv7a #make some dynamic links relative rm /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libdl.so ln -s ../../libdl.so.2 /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libdl.so rm /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libm.so ln -s ../../libm.so.6 /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libm.so #make our X11 copy Xc11 also relative rm /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libXc11.so.6.2.0 ln -s ../../opt/maemo/usr/lib/libXc11.so.6.2.0 /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libXc11.so.6.2.0 rm /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libXc11-xcb.so.1.0.0 ln -s ../../opt/maemo/usr/lib/libXc11-xcb.so.1.0.0 /scratchbox/users/${USER}/targets/${TARGET}/usr/lib/libXc11-xcb.so.1.0.0 #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 for a build outside of scratchbox (standard for now)
#-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
configure within scratchbox instead (experimental)
PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig/ PKG_CONFIG_SYSROOT_DIR=/ ./configure -no-c++11 -developer-build -opensource -nomake examples -nomake tests -confirm-license -device linux-maemo-n900-g++ -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