Hi, Jimmy,
The device files for iMX6 and iMX7 are in the Qt 5.10.1 source under /path_to/5.10.1/Src/qtbase/mkspecs/devices/ In this folder there are folders for linux-imx6-g++, linux-imx7-g++, linux-imx53qsb-g++. These each contain a qmake.conf and a qplatformdefs.h file. The interesting file is the qmake.conf. Here are the contents of the one for iMX6:
#
# qmake configuration for the Freescale iMX6 boards (single, dual and quad)
#
# The configuration below is set up for running with EGL on the framebuffer via
# the eglfs platform plugin and its eglfs_viv backend.
# Wayland is also fully functional out of the box. However, when writing Wayland
# *compositors* with Qt, the eglfs backend will have to be switched to
# eglfs_viv_wl by setting the QT_QPA_EGLFS_INTEGRATION environment variable.
#
# Below is an example configure line that assumes the SDK is in
# $HOME/imx6/toolchain. On device Qt is expected to be placed under
# /usr/local/qt5 whereas on the host 'make install' will copy the host tools and
# the target libraries to $HOME/imx6/qt5.
#
# ./configure -prefix /usr/local/qt5 -extprefix $HOME/imx6/qt5 -device linux-imx6-g++ \
# -device-option CROSS_COMPILE=$HOME/imx6/toolchain/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi- \
# -sysroot $HOME/imx6/toolchain/sysroots/cortexa9hf-vfp-neon-poky-linux-gnueabi \
# -nomake examples -nomake tests -v
#
include(../common/linux_device_pre.conf)
QMAKE_LIBS_EGL += -lEGL
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL
QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL
IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS += $$IMX6_CFLAGS
QMAKE_CXXFLAGS += $$IMX6_CFLAGS
DISTRO_OPTS += hard-float
# Preferred eglfs backend
EGLFS_DEVICE_INTEGRATION = eglfs_viv
include(../common/linux_arm_device_post.conf)
load(qt_config)
I made a tentative one for iMX8; Qt builds with the SDK associated with this distro:
DISTRO=fsl-imx-wayland MACHINE=imx8mqevk source fsl-setup-release.sh -b build-wayland
bitbake fsl-image-qt5-validation-imx
Not sure if it will fully work on the iMX8M EVK board by NXP (haven't figured out the correct combination of EGL/OPENGL - This is the heart of the detail I need to understand - BTW, I needed to define EGL_API_FB=1 to prevent Qt trying to pull in X11 which is not in fsl-imx-wayland, but I don't know if it is appropriate for this EVK board):
include(../common/linux_device_pre.conf)
QMAKE_AR = aarch64-poky-linux-ar cqs
#QMAKE_LIBS_EGL += -lEGL
#QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL -lGAL
#QMAKE_LIBS_OPENVG += -lOpenVG -lEGL -lGAL
#IMX6_CFLAGS = -march=armv7-a -mfpu=neon -DLINUX=1 -DEGL_API_FB=1
#IMX8_CFLAGS = -march=armv8-a -mtune=cortex-a53 -DLINUX=1
## Below needs -DEGL_API_FB=1, otherwise Qt will pull in X11!!!
IMX8_CFLAGS = -march=armv8-a -DLINUX=1 -DEGL_API_FB=1
QMAKE_CFLAGS += $$IMX8_CFLAGS
QMAKE_CXXFLAGS += $$IMX8_CFLAGS
#DISTRO_OPTS += hard-float
# Preferred eglfs backend
#EGLFS_DEVICE_INTEGRATION = eglfs_viv
# for wayland
EGLFS_DEVICE_INTEGRATION = eglfs_viv_wl
include(../common/linux_arm_device_post.conf)
load(qt_config)
Thanks for your help,
marion