Important: Please read the Qt Code of Conduct -

qtwayland: compilation errors while cross-building the xcomposite-egl plugin

  • I believe I'm almost there!

    Until now I succeeded in cross-building almost all the Qt 5.7 modules on Ubuntu 14 for Raspberry Pi 2 "Pixel" edition (and by that I mean: qtbase, qt3d, qtcanvas3d, qtcharts, qtconnectivity, qtdatavis3d, qtdeclarative, qtgamepad, qtgraphicaleffects, qtimageformats, qtlocation, qtmultimedia, qtpurchasing, qtquickcontrols, qtquickcontrols2, qtscript, qtscxml, qtsensors, qtserialbus, qtserialport, qtsvg, qttools, qttranslations, qtvirtualkeyboard, qtwebchannel, qtwebengine, qtwebsockets, qtwebview, qtx11extras, qtxmlpatterns), but qtwayland.

    To get there I followed a mix of instructions provided on 3 web sites. I got compilation problems with most of the Qt modules but they were due to missing libraries (both bins and devs packages on the pi) most of the time. Some also required packages to be installed on the host itself.

    Nevertheless, for qtwaland the problems seem harder to resolve. I followed the instructions on the ICS site. The output of "qmake CONFIG+=wayland-compositor" gives:
    Info: creating stash file /home/bart/src/qt57/qtwayland/.qmake.stash
    Info: creating cache file /home/bart/src/qt57/qtwayland/.qmake.cache
    Checking for wayland... yes
    Checking for xkbcommon... yes
    Checking for wayland_cursor... yes
    Checking for wayland_scanner... yes
    Checking for wayland_egl... yes
    Checking for brcm_egl... yes
    Checking for glx... yes
    Checking for xcomposite... yes
    Checking for drm_egl_server... no
    Checking for libhybris_egl_server... no

    Before getting there I got some problems with wayland-scanner but they were due to versions mismatch between the host's and the pi's. The problem I have now is related to the compilation of the xcomposite-egl plugin. I get this compilation error:
    ../../../hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp: In member function 'void QtWaylandClient::QWaylandXCompositeEGLWindow::createEglSurface()':
    ../../../hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp:126:93: error: invalid conversion from 'Window {aka long unsigned int}' to 'EGLNativeWindowType {aka void*}' [-fpermissive]
    m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, m_xWindow,0);
    In file included from ../../../hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglclientbufferintegration.h:57:0,
    from ../../../hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.h:46,
    from ../../../hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp:40:
    /mnt/raspberry-rootfs/opt/vc/include/EGL/egl.h:265:31: error: initializing argument 3 of 'void* eglCreateWindowSurface(EGLDisplay, EGLConfig, EGLNativeWindowType, const EGLint*)' [-fpermissive]
    EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
    make[4]: *** [.obj/qwaylandxcompositeeglwindow.o] Error 1

    At this point I'm not sure if the error is due to a missing library on the pi. That is why I installed extra packages on the pi, mostly anything related to egl and xcb compositors. But it seems it is not enough.

    Does anyone have a hint about the cause of the above compilation errors?
    As an alternative, it may be acceptable to know how I can disable the building of the xcomposite-egl plugin in qtwayland.

Log in to reply