Qt5.2 and QtWebEngine build summary on ARM platforms
Submitted by prabindh on Fri, 01/15/2016 - 20:41 / /
Qt5.2 rc1 can be cross compiled for ARM with OpenGLES2 support, with sgxconfiguro (https://github.com/prabindh/sgxconfiguro). The steps below outline this method.
Extract qt5.2 sources from the source package. Then perform below steps.
cd qtbase
export PKG_CONFIG_SYSROOT_DIR=/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi
export PKG_CONFIG_DIR=
export PKG_CONFIG_LIBDIR=/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi/usr/lib/pkgconfig
export PKG_CONFIG_PATH=/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi/usr/lib/pkgconfig
export PKG_CONFIG=/home/prabindh/work1/arm-qt5-5.2a-gst/qt-everywhere-opensource-src-5.2.0-alpha/qtbase/x86-cross-pkg-config
export QMAKESPEC=
export PATH=/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/i686-arago-linux/usr/bin:/home/prabindh/work2/arm-qt5.2rc1/qt-everywhere-opensource-src-5.2.0-rc1/qtbase/bin:$PATH
./configure -prefix /home1/prabu/qt5.2rc1_install -release -make libs -xplatform linux-arm-gnueabi-ti-g++ -opengl es2 -glib -confirm-license -opensource -no-xcb -no-pch -force-pkg-config -make examples -verbose
The output of configure will be a configure summary with OpenGLES2 support properly configured as below:
=====
Configure summary
Building on: linux-g++ (i386, CPU features:)
Building for: linux-arm-gnueabi-ti-g++ (arm, CPU features:)
Platform notes:
- Also available for Linux: linux-kcc linux-icc linux-cxx
qmake vars .......... styles += mac fusion windows QT_CFLAGS_DBUS = -I/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi//usr/include/dbus-1.0 -I/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi//usr/lib/dbus-1.0/include QT_LIBS_DBUS = -ldbus-1 QT_CFLAGS_GLIB = -pthread -I/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi//usr/include/glib-2.0 -I/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi//usr/lib/glib-2.0/include QT_LIBS_GLIB = -pthread -lgthread-2.0 -lrt -lglib-2.0 QMAKE_CFLAGS_FONTCONFIG = -I/home/prabindh/ti-sdk-am335x-evm-06.00.00.00/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi//usr/include/freetype2 QMAKE_LIBS_FONTCONFIG = -lfontconfig -lfreetype QMAKE_INCDIR_LIBUDEV = QMAKE_LIBS_LIBUDEV = -ludev DEFINES += QT_NO_XCB DEFINES += QT_NO_XKBCOMMON sql-drivers = sql-plugins = sqlite qmake switches .........
Build options:
Configuration .......... accessibility alsa audio-backend c++11 clock-gettime clock-monotonic compile_examples concurrent cross_compile dbus egl eglfs evdev eventfd fontconfig full-config getaddrinfo getifaddrs glib iconv inotify ipv6ifname large-config largefile libudev linuxfb medium-config minimal-config mremap neon nis no-harfbuzz opengl opengles2 openssl pcre png qpa qpa reduce_exports reduce_relocations release rpath shared small-config system-freetype system-jpeg system-png system-zlib
Build parts ............ libs examples
Mode ................... release
Using C++11 ............ yes
Using PCH .............. no
Target compiler supports:
iWMMXt/Neon .......... no/yes
Qt modules and options:
Qt D-Bus ............... yes (loading dbus-1 at runtime)
Qt Concurrent .......... yes
Qt GUI ................. yes
Qt Widgets ............. yes
JavaScriptCore JIT ..... yes (To be decided by JavaScriptCore)
QML debugging .......... yes
Use system proxies ..... no
Support enabled for:
Accessibility .......... yes
ALSA ................... yes
CUPS ................... no
FontConfig ............. yes
FreeType ............... system
Iconv .................. yes
ICU .................... no
Image formats:
GIF .................. yes (plugin, using bundled copy)
JPEG ................. yes (plugin, using system library)
PNG .................. yes (in QtGui, using system library)
Glib ................... yes
GTK theme .............. no
Large File ............. yes
Networking:
getaddrinfo .......... yes
getifaddrs ........... yes
IPv6 ifname .......... yes
OpenSSL .............. yes (loading libraries at run-time)
NIS .................... yes
OpenGL ................. yes (OpenGL ES 2.x)
OpenVG ................. no
PCRE ................... yes (bundled copy)
pkg-config ............. yes
PulseAudio ............. no
QPA backends:
DirectFB ............. no
EGLFS ................ yes
KMS .................. no
LinuxFB .............. yes
XCB .................. no
Session management ..... yes
SQL drivers:
DB2 .................. no
InterBase ............ no
MySQL ................ no
OCI .................. no
ODBC ................. no
PostgreSQL ........... no
SQLite 2 ............. no
SQLite ............... yes (plugin, using bundled copy)
TDS .................. no
udev ................... yes
xkbcommon .............. no
zlib ................... yes (system library)
NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1.
Configure with '-qreal float' to create a build that is binary compatible with 5.1.
Info: creating cache file /home/prabindh/work2/arm-qt5.2rc1/qt-everywhere-opensource-src-5.2.0-rc1/qtbase/.qmake.cache
Qt is now configured for building. Just run 'make'.
====
Then perform
make && make install
Then perform the same steps for the below modules.
qtdeclarative
qtscript
qtsvg
QtWebEngine build:
After extracting qtwebengine preview package, perform qmake, followed by make.
For the AM335x based SDK root filesystem, the make step throws below errors.
No external chromium sources were found, falling back to /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/3rdparty/chromium
Using extra options found in /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/core/qtwebengine_extras.gypi
Using extra options found in /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/core/qmake_extras.gypi
Updating projects from gyp files...
Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gtk+-2.0' found
gyp: Call to './pkg-config-wrapper "/home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/3rdparty/chromium/arm-sysroot" "arm" --cflags gmodule-2.0 gtk+-2.0 gthread-2.0' returned exit status 1. while loading dependencies of /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/3rdparty/chromium/base/base.gyp while loading dependencies of /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/3rdparty/chromium/net/net.gyp while loading dependencies of /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/3rdparty/chromium/content/content.gyp while loading dependencies of /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/core/core_generated.gyp while loading dependencies of /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/core/core.gyp while trying to load /home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/core/core.gyp
Project ERROR: -- running gyp_qtwebengine failed --
make[2]: *** [sub-gyp_run-pro-make_first] Error 3
make[2]: Leaving directory `/home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src/core'
make[1]: *** [sub-core-make_first] Error 2
make[1]: Leaving directory `/home/prabindh/work2/arm-qt5.2rc1/qtwebengine-opensource-src-0.1.0-tp1/src'
make: *** [sub-src-make_first] Error 2
Looking into the build process, the below are dependencies for QtWebEngine for ARM cross compilation.
gtk
nss
gconf
x11
xfixes
pangocairo/ pangoft2
So need to get these in the filesystem first. Work in progress.
All Qt5 related forum comments are archived at - Qt5 Discus comments (http://gpupowered.org/node/35) page
-prabindh@yahoo.com, 2014