{ "module": "waylandclient", "condition": "module.gui", "depends": [ "gui-private" ], "testDir": "../../config.tests", "libraries": { "wayland-client": { "label": "Wayland client library", "headers": "wayland-version.h", "test": { "main": [ "#if WAYLAND_VERSION_MAJOR < 1", "# error Wayland 1.8.0 or higher required", "#endif", "#if WAYLAND_VERSION_MAJOR == 1", "# if WAYLAND_VERSION_MINOR < 8", "# error Wayland 1.8.0 or higher required", "# endif", "# if WAYLAND_VERSION_MINOR == 8", "# if WAYLAND_VERSION_MICRO < 0", "# error Wayland 1.8.0 or higher required", "# endif", "# endif", "#endif" ] }, "sources": [ { "type": "pkgConfig", "args": "wayland-client" }, "-lwayland-client" ] }, "wayland-cursor": { "label": "Wayland cursor library", "headers": "wayland-cursor.h", "test": { "main": "struct wl_cursor_image *image = 0;" }, "use": "wayland-client", "sources": [ { "type": "pkgConfig", "args": "wayland-cursor" }, "-lwayland-cursor" ] }, "wayland-egl": { "label": "Wayland EGL library", "headers": "wayland-egl.h", "test": { "main": "struct wl_egl_window *window = wl_egl_window_create(0, 100, 100);" }, "sources": [ { "type": "pkgConfig", "args": "wayland-egl" }, "-lwayland-egl", "-lEGL" ] }, "xcomposite": { "label": "XComposite", "headers": "X11/extensions/Xcomposite.h", "test": { "main": "XCompositeRedirectWindow((Display *)0,(Window) 0, CompositeRedirectManual);" }, "sources": [ { "type": "pkgConfig", "args": "xcomposite" }, "-lxcomposite" ] }, "glx": { "label": "GLX", "headers": "GL/glx.h", "test": { "main": [ "Display *dpy = XOpenDisplay(0);", "int items = 0;", "GLXFBConfig *fbc = glXChooseFBConfig(dpy, DefaultScreen(dpy), 0 , &items);" ] }, "sources": [ { "type": "pkgConfig", "args": "x11 gl" }, "-lX11 -lGl" ] } }, "tests": { "wayland-scanner": { "label": "wayland-scanner", "type": "compile", "test": "wayland_scanner", "use": "wayland-client" }, "drm-egl-server": { "label": "DRM EGL Server", "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h" ], "main": [ "#ifdef EGL_MESA_drm_image", "return 0;", "#else", "#error Requires EGL_MESA_drm_image to be defined", "return 1;", "#endif" ] }, "use": "egl" }, "libhybris-egl-server": { "label": "libhybris EGL Server", "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h", "hybris/eglplatformcommon/hybris_nativebufferext.h" ], "main": [ "#ifdef EGL_HYBRIS_native_buffer", "return 0;", "#else", "#error Requires EGL_HYBRIS_native_buffer to be defined", "return 1;", "#endif" ] }, "use": "egl" }, "dmabuf-server-buffer": { "label": "Linux dma-buf Buffer Sharing", "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h", "drm_fourcc.h" ], "main": [ "#ifdef EGL_LINUX_DMA_BUF_EXT", "return 0;", "#else", "#error Requires EGL_LINUX_DMA_BUF_EXT", "return 1;", "#endif" ] }, "libs": "-ldrm", "use": "egl" }, "vulkan-server-buffer": { "label": "Vulkan Buffer Sharing", "type": "compile", "test": { "head": [ "#define VK_USE_PLATFORM_WAYLAND_KHR 1" ], "include": [ "vulkan/vulkan.h" ], "main": [ "VkExportMemoryAllocateInfoKHR exportAllocInfo = {};", "exportAllocInfo.sType = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR;", "exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;", "return 0;" ] } }, "egl_1_5-wayland": { "label": "EGL 1.5 with Wayland Platform", "type": "compile", "test": { "include": [ "EGL/egl.h", "EGL/eglext.h", "wayland-client.h" ], "main": [ "eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);" ] }, "use": "egl" } }, "features": { "wayland-client": { "label": "Qt Wayland Client", "condition": "!config.win32 && libs.wayland-client && libs.wayland-cursor && tests.wayland-scanner", "output": [ "privateFeature" ] }, "wayland-datadevice": { "condition": "features.draganddrop || features.clipboard", "output": [ "privateFeature" ] }, "wayland-client-primary-selection": { "label": "primary-selection clipboard", "condition": "features.clipboard", "output": [ "privateFeature" ] }, "wayland-client-fullscreen-shell-v1": { "label": "fullscreen-shell-v1", "condition": "features.wayland-client", "output": [ "privateFeature" ] }, "wayland-client-ivi-shell": { "label": "ivi-shell", "condition": "features.wayland-client", "output": [ "privateFeature" ] }, "wayland-client-wl-shell": { "label": "wl-shell (deprecated)", "condition": "features.wayland-client", "output": [ "privateFeature" ] }, "wayland-client-xdg-shell": { "label": "xdg-shell", "condition": "features.wayland-client", "output": [ "privateFeature" ] }, "wayland-client-xdg-shell-v5": { "label": "xdg-shell unstable v5 (deprecated)", "condition": "features.wayland-client", "output": [ "privateFeature" ] }, "wayland-client-xdg-shell-v6": { "label": "xdg-shell unstable v6", "condition": "features.wayland-client", "output": [ "privateFeature" ] }, "egl-extension-platform-wayland": { "label": "EGL wayland platform extension", "condition": "features.wayland-client && features.opengl && features.egl && tests.egl_1_5-wayland", "output": [ "privateFeature" ] }, "wayland-egl": { "label": "EGL", "condition": "features.wayland-client && features.opengl && features.egl && libs.wayland-egl && (!config.qnx || features.egl-extension-platform-wayland)", "output": [ "privateFeature" ] }, "wayland-brcm": { "label": "Raspberry Pi", "condition": "features.wayland-client && features.eglfs_brcm", "output": [ "privateFeature" ] }, "xcomposite-egl": { "label": "XComposite EGL", "condition": "features.wayland-client && features.opengl && features.egl && features.xlib && libs.xcomposite && features.egl_x11", "output": [ "privateFeature" ] }, "xcomposite-glx": { "label": "XComposite GLX", "condition": "features.wayland-client && features.opengl && !features.opengles2 && features.xlib && libs.xcomposite && libs.glx", "output": [ "privateFeature" ] }, "wayland-drm-egl-server-buffer": { "label": "DRM EGL", "condition": "features.wayland-client && features.opengl && features.egl && tests.drm-egl-server && (!config.qnx || features.egl-extension-platform-wayland)", "output": [ "privateFeature" ] }, "wayland-libhybris-egl-server-buffer": { "label": "libhybris EGL", "condition": "features.wayland-client && features.opengl && features.egl && tests.libhybris-egl-server", "output": [ "privateFeature" ] }, "wayland-dmabuf-server-buffer": { "label": "Linux dma-buf server buffer integration", "condition": "features.wayland-client && features.opengl && features.egl && tests.dmabuf-server-buffer", "output": [ "privateFeature" ] }, "wayland-vulkan-server-buffer": { "label": "Vulkan-based server buffer integration", "condition": "features.wayland-client && features.vulkan && features.opengl && features.egl && tests.vulkan-server-buffer", "output": [ "privateFeature" ] }, "wayland-shm-emulation-server-buffer": { "label": "Shm emulation server buffer integration", "condition": "features.wayland-client && features.opengl", "output": [ "privateFeature" ] } }, "report": [ { "type": "note", "condition": "!libs.wayland-egl", "message": "No wayland-egl support detected. Cross-toolkit compatibility disabled." } ], "summary": [ { "section": "Qt Wayland Drivers", "condition": "features.wayland-client", "entries": [ "wayland-egl", "wayland-brcm", "xcomposite-egl", "xcomposite-glx", "wayland-drm-egl-server-buffer", "wayland-libhybris-egl-server-buffer", "wayland-dmabuf-server-buffer", "wayland-vulkan-server-buffer", "wayland-shm-emulation-server-buffer" ] }, { "section": "Qt Wayland Client Shell Integrations", "condition": "features.wayland-client", "entries": [ "wayland-client-xdg-shell", "wayland-client-xdg-shell-v5", "wayland-client-xdg-shell-v6", "wayland-client-ivi-shell", "wayland-client-wl-shell" ] }, "wayland-client" ] }