| { |
| "module": "waylandcompositor", |
| "condition": "module.gui", |
| "depends": [ |
| "gui-private" |
| ], |
| "testDir": "../../config.tests", |
| |
| "libraries": { |
| "wayland-server": { |
| "label": "wayland-server", |
| "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-server" }, |
| "-lwayland-server" |
| ] |
| }, |
| "wayland-egl": { |
| "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" |
| ] |
| }, |
| "wayland-kms": { |
| "label": "wayland-kms", |
| "test": { |
| "tail": [ |
| "extern \"C\" {", |
| "#include <math.h> /* may fail because of 'private:' in c++ type_traits.h */", |
| "#define private priv", |
| "#include <wayland-kms.h>", |
| "#undef private", |
| "}" |
| ], |
| "main": [ |
| "struct wl_resource *buffer = nullptr;", |
| "struct wl_kms_buffer *kmsBuffer = wayland_kms_buffer_get(buffer);" |
| ] |
| }, |
| "sources": [ |
| { "type": "pkgConfig", "args": "wayland-kms" }, |
| "-lwayland-kms" |
| ] |
| }, |
| "xcomposite": { |
| "headers": "X11/extensions/Xcomposite.h", |
| "test": { |
| "main": "XCompositeRedirectWindow((Display *)0,(Window) 0, CompositeRedirectManual);" |
| }, |
| "sources": [ |
| { "type": "pkgConfig", "args": "xcomposite" }, |
| "-lxcomposite" |
| ] |
| }, |
| "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": { |
| "type": "compile", |
| "test": "wayland_scanner", |
| "use": "wayland-server" |
| }, |
| "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": { |
| "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" |
| ] |
| }, |
| "use": "egl drm" |
| }, |
| "dmabuf-client-buffer": { |
| "label": "Linux Client dma-buf Buffer Sharing", |
| "type": "compile", |
| "test": { |
| "include": [ |
| "EGL/egl.h", |
| "EGL/eglext.h", |
| "drm_mode.h", |
| "drm_fourcc.h" |
| ], |
| "main": [ |
| "// test if DMA BUF is supported", |
| "#ifndef EGL_LINUX_DMA_BUF_EXT", |
| "#error DMA BUF Extension not available", |
| "#endif", |
| "// test if DMA BUF import modifier extension is supported", |
| "#ifndef EGL_EXT_image_dma_buf_import_modifiers", |
| "#error DMA BUF Import modifier extension not available", |
| "#endif", |
| "return 0;" |
| ] |
| }, |
| "use": "egl drm" |
| }, |
| "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;" |
| ] |
| } |
| } |
| }, |
| |
| "features": { |
| "wayland-server": { |
| "label": "Qt Wayland Compositor", |
| "condition": "!config.win32 && libs.wayland-server && tests.wayland-scanner", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-datadevice": { |
| "condition": "features.draganddrop || features.clipboard", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-egl": { |
| "label": "EGL", |
| "condition": "features.wayland-server && features.opengl && features.egl && libs.wayland-egl", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-brcm": { |
| "label": "Raspberry Pi", |
| "condition": "features.wayland-server && features.eglfs_brcm", |
| "output": [ "privateFeature" ] |
| }, |
| "xcomposite-egl": { |
| "label": "XComposite EGL", |
| "condition": "features.wayland-server && features.egl && features.opengl && libs.xcomposite", |
| "output": [ "privateFeature" ] |
| }, |
| "xcomposite-glx": { |
| "label": "XComposite EGL", |
| "condition": "features.wayland-server && features.opengl && !features.opengles2 && libs.xcomposite && libs.glx", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-drm-egl-server-buffer": { |
| "label": "DRM EGL", |
| "condition": "features.wayland-server && features.opengl && features.egl && tests.drm-egl-server", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-libhybris-egl-server-buffer": { |
| "label": "libhybris EGL", |
| "condition": "features.wayland-server && features.opengl && features.egl && tests.libhybris-egl-server", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-dmabuf-server-buffer": { |
| "label": "Linux dma-buf server buffer integration", |
| "condition": "features.wayland-server && features.opengl && features.egl && tests.dmabuf-server-buffer", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-dmabuf-client-buffer": { |
| "label": "Linux dma-buf client buffer integration", |
| "condition": "features.wayland-server && features.opengl && features.egl && tests.dmabuf-client-buffer", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-vulkan-server-buffer": { |
| "label": "Vulkan-based server buffer integration", |
| "condition": "features.wayland-server && features.vulkan && features.opengl && features.egl && tests.vulkan-server-buffer", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-shm-emulation-server-buffer": { |
| "label": "Shm emulation server buffer", |
| "condition": "features.wayland-server && features.opengl", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-layer-integration-vsp2": { |
| "label": "VSP2 hardware layer integration", |
| "condition": "features.wayland-server && features.eglfs_vsp2 && libs.wayland-kms", |
| "output": [ "privateFeature" ] |
| }, |
| "wayland-compositor-quick": { |
| "label": "QtQuick integration for wayland compositor", |
| "purpose": "Allows QtWayland compositor types to be used with QtQuick", |
| "condition": "features.wayland-server && module.quick", |
| "output": [ "publicFeature" ] |
| } |
| }, |
| |
| "summary": [ |
| "wayland-server", |
| { |
| "section": "Qt Wayland Compositor Layer Plugins", |
| "condition": "features.wayland-server", |
| "entries": [ |
| "wayland-layer-integration-vsp2" |
| ] |
| } |
| ] |
| } |