QT 5.3.2 linux embedded eglfs error:



  • Hi, during my OpenEmbedded do_compiler for qtbase, I receive the following errors for:

    CFG_ARCH="arm"
    CFG_CPUFEATURES=" neon"
    CFG_HOST_ARCH="arm"
    CFG_HOST_CPUFEATURES=" neon"
    System architecture: 'arm'
    Host architecture: 'arm'

    @out/work/armv7ahf-vfp-neon-linux-gnueabihf/qtbase/5.3.2-r0/qtbase-opensource-src-5.3.2/src/plugins/platforms/eglfs/qeglfsintegration.cpp:44:
    ../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qtextstream.h:54:2: error: #error qtextstream.h must be included before any header file that defines Status @

    and

    @out/work/armv7ahf-vfp-neon-linux-gnueabihf/qtbase/5.3.2-r0/qtbase-opensource-src-5.3.2/src/plugins/platforms/eglfs/qeglfsintegration.cpp:48:
    ../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qurl.h:140:9: error: expected identifier before numeric constant
    ../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qurl.h:140:9: error: expected '}' before numeric constant@

    My configure statement:

    @ ${S}/configure -v
    -opensource -confirm-license
    -sysroot ${STAGING_DIR_TARGET}
    -no-gcc-sysroot
    -prefix ${OE_QMAKE_PATH_PREFIX}
    -bindir ${OE_QMAKE_PATH_BINS}
    -libdir ${OE_QMAKE_PATH_LIBS}
    -datadir ${OE_QMAKE_PATH_DATA}
    -sysconfdir ${OE_QMAKE_PATH_SETTINGS}
    -docdir ${OE_QMAKE_PATH_DOCS}
    -headerdir ${OE_QMAKE_PATH_HEADERS}
    -archdatadir ${OE_QMAKE_PATH_ARCHDATA}
    -libexecdir ${OE_QMAKE_PATH_LIBEXECS}
    -plugindir ${OE_QMAKE_PATH_PLUGINS}
    -importdir ${OE_QMAKE_PATH_IMPORTS}
    -qmldir ${OE_QMAKE_PATH_QML}
    -translationdir ${OE_QMAKE_PATH_TRANSLATIONS}
    -testsdir ${OE_QMAKE_PATH_TESTS}
    -examplesdir ${OE_QMAKE_PATH_EXAMPLES}
    -hostbindir ${OE_QMAKE_PATH_HOST_BINS}
    -hostdatadir ${OE_QMAKE_PATH_HOST_DATA}
    -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
    -platform ${OE_QMAKESPEC}
    -icu
    -no-cups \
    -opengl es2
    -qpa eglfs
    -xplatform linux-oe-g++
    -shared
    -silent
    -no-pch
    -no-rpath \
    -pkg-config \
    -no-xcb
    -no-sql-db2
    -no-mtdev
    -no-gtkstyle
    -nomake tests
    -system-libjpeg
    -openssl-linked
    -nomake examples
    -no-xfixes
    -no-sql-mysql
    -make tools
    -qt-pcre
    -no-iconv
    -no-xkb
    -no-xkbcommon
    -no-fontconfig
    -no-kms
    -no-sql-sqlite
    -system-libpng
    -no-directfb
    -no-glib
    -freetype
    -no-sql-oci
    -no-xinerama
    -evdev
    -no-sql-sqlite2
    -no-accessibility
    -widgets
    -no-xrandr
    -no-linuxfb
    -no-libudev
    -no-xcursor
    -no-sql-psql
    -make libs
    -no-nis
    -no-openvg
    -no-xvideo
    -no-xsync
    -no-sql-tds
    -no-xshape
    -dbus
    -system-zlib
    -pulseaudio
    -no-xrender
    -no-mitshm
    -no-sm
    -no-xinput
    -no-sql-ibase
    -no-xinput2
    -no-alsa
    -no-sql-odbc
    -release
    -tslib 2>&1 \

    qmake5_base_do_configure
    

    }@

    I found that 'Patch 4' from here: https://codereview.qt-project.org/#/c/76606/ shows that a fix was added. I verified that all my source files included these fixes.

    I am not a QT expert, but am trying to learn on my way. Any recommendations or suggestions on where the problem is or how to resolve problem would be great.
    Thanks you.



  • Your EGL headers are likely pulling in Xlib headers which define a bunch of unfortunate names (None, Status, etc.). It sounds a bit weird since you are targetting EGL over fbdev here, not X.

    Check your eglplatform.h.



  • Hi agocs,

    Inside /src/3rdparty/angle/include/EGL/eglplatform.h, I found:
    @/* X11 (tentative) */
    #include <X11/Xlib.h>
    #include <X11/Xutil.h>@
    I removed these statements, but I still get the following error from do_compiler:
    @QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qtextstream.h:54:2: error: #error qtextstream.h must be included before any header file that defines Status@

    So I can resolve qtextstream.h error by adding #include "../../../corelib/io/qtextstream.h" to qeglfsscreen.h, qeglfswindow.h, and qeglfsintegration.cpp.

    The errors of qurl.h is something I am not sure how to hack up and resolve.
    There are roughly 50+ errors with qurl.h. It almost appears like the file is missing an #include statement:
    @../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qurl.h:139:9: error: expected identifier before numeric constant
    ../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qurl.h:139:9: error: expected '}' before numeric constant
    ../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qurl.h:139:9: error: expected unqualified-id before numeric constant
    ../../../../include/QtCore/../../../qtbase-opensource-src-5.3.2/src/corelib/io/qurl.h:171:26: error: 'UrlFormattingOption' was not declared in this scope@

    My qtbase.inc file with the configure '-eglfs' statemen is pulling, building, and installing QT5.3.2 from this GitHub repository:
    https://github.com/meta-qt5/meta-qt5/tree/master/recipes-qt/qt5
    Could repo be the problem?



  • Here are my build environment details:

    Target system: arm-linux-gnueabihf
    OS: Ubuntu-12.04
    Build system: x86_64-linux
    Embedded machine: am335x-cpm version 3

    Is there a configuration option of '-no-x11' that I can use to resolve this?



  • I've updated my linaro toolchain arm-linux-gnueabihf from version 4.7 to 4.8, but same errors show.

    I have tried to configure with -no-dbus and with only one graphics support. Still receive the same errors.

    Here is my updated configure statement:
    @ ${S}/configure -v
    -opensource -confirm-license
    -sysroot ${STAGING_DIR_TARGET}
    -no-gcc-sysroot
    -prefix ${OE_QMAKE_PATH_PREFIX}
    -bindir ${OE_QMAKE_PATH_BINS}
    -libdir ${OE_QMAKE_PATH_LIBS}
    -datadir ${OE_QMAKE_PATH_DATA}
    -sysconfdir ${OE_QMAKE_PATH_SETTINGS}
    -docdir ${OE_QMAKE_PATH_DOCS}
    -headerdir ${OE_QMAKE_PATH_HEADERS}
    -archdatadir ${OE_QMAKE_PATH_ARCHDATA}
    -libexecdir ${OE_QMAKE_PATH_LIBEXECS}
    -plugindir ${OE_QMAKE_PATH_PLUGINS}
    -importdir ${OE_QMAKE_PATH_IMPORTS}
    -qmldir ${OE_QMAKE_PATH_QML}
    -translationdir ${OE_QMAKE_PATH_TRANSLATIONS}
    -testsdir ${OE_QMAKE_PATH_TESTS}
    -examplesdir ${OE_QMAKE_PATH_EXAMPLES}
    -hostbindir ${OE_QMAKE_PATH_HOST_BINS}
    -hostdatadir ${OE_QMAKE_PATH_HOST_DATA}
    -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
    -platform ${TOPDIR}/out/sysroots/x86_64-linux/usr/lib/qt5/mkspecs/linux-oe-g++
    -xplatform linux-oe-g++
    -shared \
    -silent \
    -no-pch \
    -no-rpath \
    -pkg-config \
    -no-xcb
    -no-sql-db2
    -no-mtdev
    -no-gtkstyle
    -nomake tests
    -system-libjpeg
    -openssl-linked
    -nomake examples
    -no-xfixes
    -no-sql-mysql
    -opengl es2
    -eglfs \
    -nomake tools \
    -qt-pcre
    -iconv
    -no-xkb
    -no-xkbcommon
    -no-fontconfig
    -no-kms
    -no-sql-sqlite
    -system-libpng
    -no-tslib
    -icu
    -no-directfb
    -glib
    -freetype
    -no-sql-oci
    -no-xinerama
    -evdev
    -no-sql-sqlite2
    -accessibility
    -no-cups
    -widgets
    -no-xrandr
    -linuxfb
    -libudev
    -no-xcursor
    -no-sql-psql
    -make libs
    -nis
    -no-openvg
    -no-xvideo
    -no-xsync
    -no-sql-tds
    -no-xshape
    -dbus
    -system-zlib
    -pulseaudio
    -no-xrender
    -no-mitshm
    -sm
    -no-xinput
    -no-sql-ibase \
    -no-xinput2
    -alsa
    -no-sql-odbc
    -release @



  • This error occurs when you enable the eglfs configuration option in your build. This is happening because of QT couldn't auto detect the EGLNativeDisplayType, EGLNativePixmapType and EGLNativeWindowType. Pass the appropriate platform flags during building. Add CXX/C FLAG -DWL_EGL_PLATFORM If you building the qt for wayland-egl platform


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.