Qt5 Beta1/Beta2 on TI platforms (Beaglebone/ Beagleboard/ 37x/ 335x)

This page is outdated. Refer to http://gpupowered.org/node/16 for Qt5.0.0 version updates.

Note: Refer to Qt5 Alpha setup page, for setup of sgxconfiguro.
http://gpupowered.org/node/8

Introduction:
In addition to bugfixes, Qt5 Beta1/Beta2 is interesting compared to Alpha, due to the inclusion of Linuxfb platform package.

Pre-requisites for Qt5 build:

- Qt5 Beta1/Beta2 source package
http://releases.qt-project.org/qt5.0/beta1/
http://releases.qt-project.org/qt5.0/beta2/

- TI Graphics SDK (4.05 or later)
http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/gfxsd...
http://processors.wiki.ti.com/index.php/AM35x-OMAP35x_Graphics_SDK_Getti...
- Recent filesystem (GCC 4.5 or later)
- ARM cross Toolchain (GCC 4.5 or later), example from below:
http://people.linaro.org/~michaelh/incoming/binaries/

Configuring Qt5:

Configuring Qt5 is fairly easy - and can be done without messing with creating new mkspecs, if the below are met:

- a linaro toolchain (linux-arm-gnueabi-)
- sgxconfiguro is used (package config for TI Graphics SDK - egl and x11)
https://github.com/prabindh/sgxconfiguro
- force-pkg-config is used

If this does not seem clear, the older tried-and-tested-method of specifying all possible (and needed) paths in the qmake.conf as below will also work :

https://github.com/prabindh/qt-configs/tree/master/qt5.0_mar2012

The below method adopts the first approach and uses the standard Qt5 supplied linux-arm-gnueabi-g++ mkspec without change

$cd qtbase
$export PATH=/opt/linaro/gcc-linaro-arm-linux-gnueabi-2012.03-20120326_linux/bin:/home/prabindh/work1/arm-qt5-tar/qt-everywhere-opensource-src-5.0.0-beta1/qtbase/bin:
$export PKG_CONFIG=./x86-cross-ubuntu-pkg-config
$./configure -prefix /home1/prabu/qt5_install -release -make libs -xplatform linux-arm-gnueabi-g++ -opengl es2 -confirm-license -opensource -no-xcb -no-wayland -force-pkg-config -make examples -make demos -verbose

Note: All source changes are available in https://github.com/prabindh/qt-configs/tree/master/qt5_beta1. This is the same patchset used for Beta2 also.

Changes made for Beta1 / Beta2:
Compared to Alpha, several changes are required in building Beta1/ Beta2.

- GLchar is undefined in current gl2.h header from Graphics SDK package. Hence an updated gl2.h header is needed. Refer to gl2.h.patch in source archive for this simple patch (Note: If using Graphics SDK 4.08 or later, this issue is already fixed and updated header is part of package).

- Configuration needs to be done using the same steps as in Alpha build. Patch for configure script is also provided in github archive above.

- After correct configuration, OpenGL (ES2), eglfs, linuxfb and NEON should be enable in the configurations listed. Now the package can be built.

- During compilation of neon.S files, compilation error occurs due to inclusion of PCH files that are not available

arm-linux-gnueabi-gcc -c -include .pch/release-shared/QtGui <... > -o .obj/release-shared/pixman-arm-neon-asm.o ../3rdparty/pixman/pixman-arm-neon-asm.S
cc1: fatal error: .pch/release-shared/QtGui: No such file or directory
compilation terminated.
make[2]: *** [.obj/release-shared/pixman-arm-neon-asm.o] Error 1

To avoid this, reference to QtGui can be removed from the src/gui/Makefile itself as a temporary measure (changes will be overwritten on a rebuild), or configure needs to be done with "-no-pch" option.

Search for ".obj/release-shared/pixman-arm-neon-asm.o:" in src/gui/Makefile
Remove this "-include .pch/release-shared/QtGui"

- Once successfully built, Qt5 Beta1 can be installed to target filesystem.

If successfully built, the below plugins should be available in the folder

libqeglfs.so
libqlinuxfb.so [new in Qt5 Beta1]
libqminimalegl.so [new in Qt5 Beta1]
libqminimal.so

TODO:

Performance numbers on target