blob: c5b0f03ed758f1b092fb80b464b1dfd7cf61dbe9 [file] [log] [blame]
{
"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"
]
}
]
}