Editing Qt5-Maemo5/Development
Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
- | |||
- | |||
= 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) | + | ** We still run this build commands '''outside''' of scratchbox and only use the toolchain and sysroot (like with MADDE or for Raspberry Pi etc.) |
- | ** | + | * 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) moved to ${MADDEROOT}/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/usr/include/X11/ (/usr/lib resp.) |
- | ** | + | ** <strike>Binaries available here: [http://repos.fuhlbrueck.net/qt5-maemo5/pool/main/libx/libx11/ repos.fuhlbrueck.net/qt5-maemo5/pool/main/libx/libx11/]</strike> |
- | *** apt-get install libxc11-xcb-dev | + | *** This does not work, we need a libX11.so build with xcb support, however this stops the keyboard from working in other applications |
+ | ** We install a copy of libX11.so with XCB supoort, named libXc11.so and link against this copy | ||
+ | *** apt-get install -o Dpkg::Options::="--path-exclude=/usr/share/" libxc11-xcb-dev | ||
*** 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) | ||
=== Prepare your build environment === | === 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 | #clone the repo | ||
- | git clone | + | git clone git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5.git |
- | cd qt5-maemo5 && git remote set-url --push origin git@ | + | cd qt5-maemo5 && git remote set-url --push origin git@gitorious.org:+qt5-maemo5/qt/qt5-maemo5.git |
git checkout maemo5 | 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 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 | ||
- | |||
- | |||
- | |||
- | configure for a build | + | If you like to commit to the repository, create an account on gitorious.org and ask in this thread: http://talk.maemo.org/showthread.php?t=84782 |
+ | |||
+ | === 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?) | #-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 -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 === | === Finally, we build Qt === | ||
make module-qtbase module-qtdeclarative | make module-qtbase module-qtdeclarative | ||
- | + | ||
- | + | ||
- | + | === Use Qt5 === | |
+ | If you like to compile any Qt program with the newly created Qt build | ||
+ | ${GITROOT}/qtbase/bin/qmake | ||
+ | #qmake already knows about sysroot and toolchain as configured above | ||
make | make | ||
- | # | + | #copy results to N900 |
- | + | ||
- | + | ||
- | + | ||
- | + | Theoretically, you can even install this Qt build in scratchbox (untested): | |
- | cd qtbase && | + | #only the first step should require root privileges |
- | cd | + | ln -s /scratchbox/users/${USER}/targets/${TARGET}/opt/qt5 /opt/qt5 |
- | cd | + | cd ${GITROOT}/qtbase && make install |
- | + | cd ${GITROOT}/qtdeclarative && make install | |
- | + | cd ${GITROOT}/qtjsbackend && make install | |
+ | #... (some more as needed by qtdeclarative, e.g. qtsvg) | ||
+ | /scratchbox/login | ||
+ | #change target to the target TARGET | ||
+ | cd /your/qt/program/ | ||
+ | /opt/qt5/bin/qmake | ||
+ | make | ||
= Building Qt5 for the N900 (using MADDE) = | = Building Qt5 for the N900 (using MADDE) = | ||
- | |||
Prerequisites: | Prerequisites: | ||
* [[MADDE]] | * [[MADDE]] | ||
- | * | + | * 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) moved to ${MADDEROOT}/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/usr/include/X11/ (/usr/lib resp.) |
- | + | ** Binaries available here: [http://repos.fuhlbrueck.net/qt5-maemo5/pool/main/libx/libx11/ repos.fuhlbrueck.net/qt5-maemo5/pool/main/libx/libx11/] | |
+ | If you want to help porting Qt5 to Maemo5 do: | ||
MADDEROOT=/opt/QtSDK/Maemo/4.6.2 | MADDEROOT=/opt/QtSDK/Maemo/4.6.2 | ||
- | + | git clone git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5.git | |
- | git clone ... | + | cd qt5-maemo5 && git remote set-url --push origin git@gitorious.org:+qt5-maemo5/qt |
+ | checkout maemo5 | ||
+ | git clone git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtbase.git qtbase | ||
+ | git config --add submodule.qtbase.url git://gitorious.org/+qt5-maemo5/qt/qt5-maemo5-qtbase.git | ||
+ | cd qtbase && checkout maemo5 && git remote set-url --push origin git@gitorious.org:+qt5-maemo5/qt/qt5-maemo5-qtbase.git && cd .. | ||
+ | ./init-repository -f | ||
#-sysroots redirects everything to a path under ${MADDEROOT} | #-sysroots redirects everything to a path under ${MADDEROOT} | ||
ln -s `pwd` ${MADDEROOT}/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim`pwd` | ln -s `pwd` ${MADDEROOT}/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim`pwd` | ||
Line 67: | Line 99: | ||
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: |
#change if your host is not x86_64 | #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 | + | ./configure -developer-build -opensource -nomake examples -nomake tests -no-gtkstyle -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 | |
+ | |||
+ | If you like to commit to the repository, create an account on gitorious.org and ask in this thread: http://talk.maemo.org/showthread.php?t=84782 | ||
+ | |||
+ | = Testing Qt5 on the N900 = | ||
+ | # as root, e.g. with sudo gainroot | ||
+ | #not endless bandwidth, so use with care: | ||
+ | echo "deb http://repos.fuhlbrueck.net/qt5-maemo5 fremantle main" >> /etc/apt/sources.list.d/hildon-application-manager.list | ||
+ | #libX11-xcb1 is not optified, but tiny | ||
+ | apt-get install libx11-xcb1 qt5-base qt5-declarative | ||
+ | #only for now: | ||
+ | ldconfig /opt/qt5/lib | ||
+ | |||
+ | # as a normal user | ||
+ | # get some example | ||
+ | wget http://repos.fuhlbrueck.net/qt5-maemo5-examples/EXAMPLE | ||
+ | chmod 755 EXAMPLE | ||
+ | ./EXAMPLE | ||
+ | #don't be confused, if it shows some debug output | ||
+ | #report any errors to http://talk.maemo.org/showthread.php?t=84782 |
Learn more about Contributing to the wiki.