Revision control
++ # Copyright (C) 2022 The Qt Company Ltd.
++ # SPDX-License-Identifier: BSD-3-Clause
++
++
++
++ #### Inputs
++
++ # input freetype
++ set(INPUT_freetype "undefined" CACHE STRING "")
++ set_property(CACHE INPUT_freetype PROPERTY STRINGS undefined no qt system)
++
++ # input harfbuzz
++ set(INPUT_harfbuzz "undefined" CACHE STRING "")
++ set_property(CACHE INPUT_harfbuzz PROPERTY STRINGS undefined no qt system)
++
++ # input libjpeg
++ set(INPUT_libjpeg "undefined" CACHE STRING "")
++ set_property(CACHE INPUT_libjpeg PROPERTY STRINGS undefined no qt system)
++
++ # input libmd4c
++ set(INPUT_libmd4c "undefined" CACHE STRING "")
++ set_property(CACHE INPUT_libmd4c PROPERTY STRINGS undefined no qt system)
++
++ # input libpng
++ set(INPUT_libpng "undefined" CACHE STRING "")
++ set_property(CACHE INPUT_libpng PROPERTY STRINGS undefined no qt system)
++
++
++
++ #### Libraries
++ if(LINUX OR HPUX OR FREEBSD OR NETBSD OR OPENBSD OR SOLARIS OR HURD)
++ set(X11_SUPPORTED 1)
++ else()
++ set(X11_SUPPORTED 0)
++ endif()
++ qt_feature_vcpkg_scope(gui)
++ qt_find_package(ATSPI2 MODULE PROVIDED_TARGETS PkgConfig::ATSPI2 MODULE_NAME gui QMAKE_LIB atspi)
++ qt_find_package(DirectFB PROVIDED_TARGETS PkgConfig::DirectFB MODULE_NAME gui QMAKE_LIB directfb)
++ qt_find_package(Libdrm MODULE PROVIDED_TARGETS Libdrm::Libdrm MODULE_NAME gui QMAKE_LIB drm)
++ qt_find_package(PlatformGraphics
++ PROVIDED_TARGETS PlatformGraphics::PlatformGraphics
++ MODULE_NAME gui QMAKE_LIB platform_graphics)
++ qt_find_package(EGL MODULE PROVIDED_TARGETS EGL::EGL MODULE_NAME gui QMAKE_LIB egl)
++
++ qt_find_package(WrapSystemFreetype 2.2.0 MODULE
++ PROVIDED_TARGETS WrapSystemFreetype::WrapSystemFreetype MODULE_NAME gui QMAKE_LIB freetype
++ VCPKG_PORT freetype
++ VCPKG_ADD_TO_FEATURE freetype
++ )
++ if(QT_FEATURE_system_zlib)
++ qt_add_qmake_lib_dependency(freetype zlib)
++ endif()
++ qt_find_package(WrapFontconfig PROVIDED_TARGETS WrapFontconfig::WrapFontconfig MODULE_NAME gui
++ QMAKE_LIB fontconfig
++ VCPKG_PORT fontconfig
++ VCPKG_ADD_TO_FEATURE fontconfig
++ VCPKG_PLATFORM "linux"
++ )
++ qt_add_qmake_lib_dependency(fontconfig freetype)
++ qt_find_package(gbm MODULE PROVIDED_TARGETS gbm::gbm MODULE_NAME gui QMAKE_LIB gbm)
++ qt_find_package(WrapSystemHarfbuzz 2.6.0 MODULE
++ PROVIDED_TARGETS WrapSystemHarfbuzz::WrapSystemHarfbuzz MODULE_NAME gui QMAKE_LIB harfbuzz
++ VCPKG_PORT harfbuzz
++ VCPKG_ADD_TO_FEATURE harfbuzz
++ )
++ qt_find_package(Libinput MODULE
++ PROVIDED_TARGETS Libinput::Libinput MODULE_NAME gui QMAKE_LIB libinput)
++ qt_find_package_extend_sbom(TARGETS Libinput::Libinput
++ COPYRIGHTS
++ "Copyright © 2006-2009 Simon Thum"
++ "Copyright © 2008-2012 Kristian Høgsberg"
++ "Copyright © 2010-2012 Intel Corporation"
++ "Copyright © 2010-2011 Benjamin Franzke"
++ "Copyright © 2011-2012 Collabora, Ltd."
++ "Copyright © 2013-2014 Jonas Ådahl"
++ "Copyright © 2013-2015 Red Hat, Inc."
++ )
++ qt_find_package(WrapSystemJpeg MODULE
++ PROVIDED_TARGETS WrapSystemJpeg::WrapSystemJpeg MODULE_NAME gui QMAKE_LIB libjpeg
++ VCPKG_PORT libjpeg-turbo
++ VCPKG_ADD_TO_FEATURE jpeg
++ )
++ qt_find_package(WrapSystemMd4c MODULE
++ PROVIDED_TARGETS WrapSystemMd4c::WrapSystemMd4c MODULE_NAME gui QMAKE_LIB libmd4c
++ VCPKG_PORT md4c
++ VCPKG_ADD_TO_FEATURE textmarkdownreader
++ )
++ qt_find_package(WrapSystemPNG MODULE
++ PROVIDED_TARGETS WrapSystemPNG::WrapSystemPNG MODULE_NAME gui QMAKE_LIB libpng
++ VCPKG_PORT libpng
++ VCPKG_ADD_TO_FEATURE png
++ )
++ if(QT_FEATURE_system_zlib)
++ qt_add_qmake_lib_dependency(libpng zlib)
++ endif()
++ qt_find_package(Mtdev MODULE PROVIDED_TARGETS PkgConfig::Mtdev MODULE_NAME gui QMAKE_LIB mtdev)
++ qt_find_package(WrapOpenGL MODULE PROVIDED_TARGETS WrapOpenGL::WrapOpenGL MODULE_NAME gui QMAKE_LIB opengl)
++ qt_find_package(GLESv2 MODULE
++ PROVIDED_TARGETS GLESv2::GLESv2 MODULE_NAME gui QMAKE_LIB opengl_es2)
++ # On HarmonyOS libGLESv2 and libGLESv3 are separate; elsewhere the
++ # vendor libGLESv2 also provides the ES 3.x entry points.
++ if(OHOS)
++ qt_find_package(GLESv3 MODULE
++ PROVIDED_TARGETS GLESv3::GLESv3 MODULE_NAME gui QMAKE_LIB opengl_es3)
++ set(_qt_gles3_test_libs GLESv3::GLESv3)
++ else()
++ set(_qt_gles3_test_libs GLESv2::GLESv2)
++ endif()
++ qt_find_package(Tslib MODULE PROVIDED_TARGETS PkgConfig::Tslib MODULE_NAME gui QMAKE_LIB tslib)
++ qt_find_package(WrapVulkanHeaders MODULE PROVIDED_TARGETS WrapVulkanHeaders::WrapVulkanHeaders
++ MODULE_NAME gui QMAKE_LIB vulkan MARK_OPTIONAL)
++ if(LINUX OR FREEBSD OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(Wayland MODULE PROVIDED_TARGETS Wayland::Server
++ MODULE_NAME gui QMAKE_LIB wayland_server)
++ qt_find_package(Wayland MODULE PROVIDED_TARGETS Wayland::Client
++ MODULE_NAME gui QMAKE_LIB wayland_client)
++ # Gui doesn't use these, but the wayland qpa plugin does, and we
++ # need to list the rest of the provided targets here, so they are
++ # promoted to global, and can be accessed by the SBOM at the root
++ # project level. That's not possible to do in the wayland qpa subdir,
++ # due to different cmake directory scopes.
++ qt_find_package(Wayland MODULE PROVIDED_TARGETS Wayland::Cursor
++ MODULE_NAME gui QMAKE_LIB wayland_cursor)
++ qt_find_package(Wayland MODULE PROVIDED_TARGETS Wayland::Egl
++ MODULE_NAME gui QMAKE_LIB wayland_egl)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(X11 MODULE PROVIDED_TARGETS X11::X11 MODULE_NAME gui QMAKE_LIB xlib)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(X11 MODULE PROVIDED_TARGETS X11::SM X11::ICE MODULE_NAME gui QMAKE_LIB x11sm)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB 1.11 MODULE
++ COMPONENTS XCB PROVIDED_TARGETS XCB::XCB MODULE_NAME gui QMAKE_LIB xcb)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS CURSOR PROVIDED_TARGETS XCB::CURSOR MODULE_NAME gui QMAKE_LIB xcb_cursor)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS ICCCM PROVIDED_TARGETS XCB::ICCCM MODULE_NAME gui QMAKE_LIB xcb_icccm)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_icccm xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS UTIL PROVIDED_TARGETS XCB::UTIL MODULE_NAME gui QMAKE_LIB xcb_util)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_util xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS IMAGE PROVIDED_TARGETS XCB::IMAGE MODULE_NAME gui QMAKE_LIB xcb_image)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_image xcb_shm xcb_util xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS KEYSYMS PROVIDED_TARGETS XCB::KEYSYMS MODULE_NAME gui QMAKE_LIB xcb_keysyms)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_keysyms xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS RENDERUTIL PROVIDED_TARGETS XCB::RENDERUTIL MODULE_NAME gui QMAKE_LIB xcb_renderutil)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_renderutil xcb xcb_render)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS RANDR PROVIDED_TARGETS XCB::RANDR MODULE_NAME gui QMAKE_LIB xcb_randr)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_randr xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS SHAPE PROVIDED_TARGETS XCB::SHAPE MODULE_NAME gui QMAKE_LIB xcb_shape)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_shape xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS SHM PROVIDED_TARGETS XCB::SHM MODULE_NAME gui QMAKE_LIB xcb_shm)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_shm xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS SYNC PROVIDED_TARGETS XCB::SYNC MODULE_NAME gui QMAKE_LIB xcb_sync)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_sync xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS XFIXES PROVIDED_TARGETS XCB::XFIXES MODULE_NAME gui QMAKE_LIB xcb_xfixes)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_xfixes xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(X11_XCB MODULE PROVIDED_TARGETS X11::XCB MODULE_NAME gui QMAKE_LIB xcb_xlib)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_xlib xcb xlib)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS XKB PROVIDED_TARGETS XCB::XKB MODULE_NAME gui QMAKE_LIB xcb_xkb)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_xkb xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS RENDER PROVIDED_TARGETS XCB::RENDER MODULE_NAME gui QMAKE_LIB xcb_render)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_render xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB MODULE
++ COMPONENTS GLX PROVIDED_TARGETS XCB::GLX MODULE_NAME gui QMAKE_LIB xcb_glx)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_glx xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XCB 1.12 MODULE
++ COMPONENTS XINPUT PROVIDED_TARGETS XCB::XINPUT MODULE_NAME gui QMAKE_LIB xcb_xinput)
++ endif()
++ qt_add_qmake_lib_dependency(xcb_xinput xcb)
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XKB 0.9.0 MODULE PROVIDED_TARGETS XKB::XKB MODULE_NAME gui QMAKE_LIB xkbcommon)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XKB_COMMON_X11 0.9.0 MODULE
++ PROVIDED_TARGETS PkgConfig::XKB_COMMON_X11 MODULE_NAME gui QMAKE_LIB xkbcommon_x11)
++ endif()
++ if((X11_SUPPORTED) OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ qt_find_package(XRender 0.6 MODULE
++ PROVIDED_TARGETS PkgConfig::XRender MODULE_NAME gui QMAKE_LIB xrender)
++ endif()
++ qt_add_qmake_lib_dependency(xrender xlib)
++
++ # qt wayland client
++ if(LINUX OR FREEBSD OR QT_FIND_ALL_PACKAGES_ALWAYS)
++ # EGL
++ if(NOT TARGET EGL::EGL)
++ qt_find_package(EGL MODULE
++ PROVIDED_TARGETS EGL::EGL MODULE_NAME gui QMAKE_LIB egl MARK_OPTIONAL)
++ endif()
++ # and Libdrm
++ if(NOT TARGET Libdrm::Libdrm)
++ qt_find_package(Libdrm MODULE
++ PROVIDED_TARGETS Libdrm::Libdrm
++ MODULE_NAME gui
++ QMAKE_LIB drm
++ MARK_OPTIONAL)
++ endif()
++ endif()
++
++ qt_find_package(Wayland 1.15 MODULE)
++ qt_find_package(WaylandScanner MODULE PROVIDED_TARGETS Wayland::Scanner)
++
++ qt_find_package(RenderDoc MODULE PROVIDED_TARGETS RenderDoc::RenderDoc)
++
++ #### Tests
++
++ if(TARGET PlatformGraphics::PlatformGraphics)
++ set(plaform_graphics_libs PlatformGraphics::PlatformGraphics)
++ else()
++ set(plaform_graphics_libs "")
++ endif()
++
++ # drm_atomic
++ qt_config_compile_test(drm_atomic
++ LABEL "DRM Atomic API"
++ LIBRARIES
++ Libdrm::Libdrm
++ CODE
++ "#include <stdlib.h>
++ #include <stdint.h>
++ extern \"C\" {
++ #include <xf86drmMode.h>
++ #include <xf86drm.h>
++ }
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ drmModeAtomicReq *request;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl-x11
++ qt_config_compile_test(egl_x11
++ LABEL "EGL on X11"
++ LIBRARIES
++ EGL::EGL
++ X11::X11
++ ${plaform_graphics_libs}
++ CODE
++ "// Check if EGL is compatible with X. Some EGL implementations, typically on
++ // embedded devices, are not intended to be used together with X. EGL support
++ // has to be disabled in plugins like xcb in this case since the native display,
++ // window and pixmap types will be different than what an X-based platform
++ // plugin would expect.
++ #define USE_X11
++ #include <EGL/egl.h>
++ #include <X11/Xlib.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ Display *dpy = EGL_DEFAULT_DISPLAY;
++ EGLNativeDisplayType egldpy = XOpenDisplay(\"\");
++ dpy = egldpy;
++ EGLNativeWindowType w = XCreateWindow(dpy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
++ XDestroyWindow(dpy, w);
++ XCloseDisplay(dpy);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl-brcm
++ qt_config_compile_test(egl_brcm
++ LABEL "Broadcom EGL (Raspberry Pi)"
++ LIBRARIES
++ EGL::EGL
++ ${plaform_graphics_libs}
++ CODE
++ "#include <EGL/egl.h>
++ #include <bcm_host.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ vc_dispmanx_display_open(0);
++ /* END TEST: */
++ return 0;
++ }
++ "# FIXME: use: unmapped library: bcm_host
++ )
++
++ # egl-egldevice
++ qt_config_compile_test(egl_egldevice
++ LABEL "EGLDevice"
++ LIBRARIES
++ EGL::EGL
++ ${plaform_graphics_libs}
++ CODE
++ "#include <EGL/egl.h>
++ #include <EGL/eglext.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ EGLDeviceEXT device = 0;
++ EGLStreamKHR stream = 0;
++ EGLOutputLayerEXT layer = 0;
++ (void) EGL_DRM_CRTC_EXT;
++ (void) EGL_DRM_MASTER_FD_EXT;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl-mali
++ qt_config_compile_test(egl_mali
++ LABEL "Mali EGL"
++ LIBRARIES
++ EGL::EGL
++ ${plaform_graphics_libs}
++ CODE
++ "#include <EGL/fbdev_window.h>
++ #include <EGL/egl.h>
++ #include <GLES2/gl2.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ fbdev_window *w = 0;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl-mali-2
++ qt_config_compile_test(egl_mali_2
++ LABEL "Mali 2 EGL"
++ LIBRARIES
++ EGL::EGL
++ ${plaform_graphics_libs}
++ CODE
++ "#include <EGL/egl.h>
++ #include <GLES2/gl2.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ mali_native_window *w = 0;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl-viv
++
++ qt_config_compile_test(egl_viv
++ LABEL "i.Mx6 EGL"
++ LIBRARIES
++ EGL::EGL
++ ${plaform_graphics_libs}
++ COMPILE_OPTIONS
++ "-DEGL_API_FB=1"
++ CODE
++ "#include <EGL/egl.h>
++ #include <EGL/eglvivante.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ #ifdef __INTEGRITY
++ fbGetDisplay();
++ #else
++ // Do not rely on fbGetDisplay(), since the signature has changed over time.
++ // Stick to fbGetDisplayByIndex().
++ fbGetDisplayByIndex(0);
++ #endif
++ /* END TEST: */
++ return 0;
++ }
++ "# FIXME: qmake: ['DEFINES += EGL_API_FB=1', '!integrity: DEFINES += LINUX=1']
++ )
++
++ # egl-openwfd
++ qt_config_compile_test(egl_openwfd
++ LABEL "OpenWFD EGL"
++ LIBRARIES
++ EGL::EGL
++ ${plaform_graphics_libs}
++ CODE
++ "#include <wfd.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ wfdEnumerateDevices(nullptr, 0, nullptr);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl-rcar
++ qt_config_compile_test(egl_rcar
++ LABEL "RCAR EGL"
++ LIBRARIES
++ EGL::EGL
++ GLESv2::GLESv2
++ ${plaform_graphics_libs}
++ CODE
++ "#include <EGL/egl.h>
++ extern \"C\" {
++ extern unsigned long PVRGrfxServerInit(void);
++ }
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ PVRGrfxServerInit();
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # evdev
++ qt_config_compile_test(evdev
++ LABEL "evdev"
++ CODE
++ "#if defined(__FreeBSD__)
++ # include <dev/evdev/input.h>
++ #else
++ # include <linux/input.h>
++ # include <linux/kd.h>
++ #endif
++ enum {
++ e1 = ABS_PRESSURE,
++ e2 = ABS_X,
++ e3 = REL_X,
++ e4 = SYN_REPORT,
++ };
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ input_event buf[32];
++ (void) buf;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # vxworksevdev
++ qt_config_compile_test(vxworksevdev
++ LABEL "VxWorks evdev"
++ "#include <evdevLib.h>
++ enum {
++ e1 = EV_DEV_ABS,
++ e2 = EV_DEV_PTR_ABS_X,
++ e3 = EV_DEV_PTR_ABS_Y,
++ e4 = EV_DEV_PTR_BTN_TOUCH,
++ };
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ EV_DEV_EVENT buf[32];
++ (void) buf;
++ /* END TEST: */
++ return 0;
++ }")
++
++ # integrityfb
++ qt_config_compile_test(integrityfb
++ LABEL "INTEGRITY framebuffer"
++ CODE
++ "#include <device/fbdriver.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ FBDriver *driver = 0;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # linuxfb
++ qt_config_compile_test(linuxfb
++ LABEL "LinuxFB"
++ CODE
++ "#include <linux/fb.h>
++ #include <sys/kd.h>
++ #include <sys/ioctl.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ fb_fix_screeninfo finfo;
++ fb_var_screeninfo vinfo;
++ int fd = 3;
++ ioctl(fd, FBIOGET_FSCREENINFO, &finfo);
++ ioctl(fd, FBIOGET_VSCREENINFO, &vinfo);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # opengles3
++ if(WASM)
++ set(extra_compiler_options "-s FULL_ES3=1")
++ endif()
++
++ qt_config_compile_test(opengles3
++ LABEL "OpenGL ES 3.0"
++ LIBRARIES
++ ${_qt_gles3_test_libs}
++ ${plaform_graphics_libs}
++ COMPILE_OPTIONS ${extra_compiler_options}
++ CODE
++ "#ifdef __APPLE__
++ # include <OpenGLES/ES3/gl.h>
++ #else
++ # define GL_GLEXT_PROTOTYPES
++ # include <GLES3/gl3.h>
++ #endif
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ static GLfloat f[6];
++ glGetStringi(GL_EXTENSIONS, 0);
++ glReadBuffer(GL_COLOR_ATTACHMENT1);
++ glUniformMatrix2x3fv(0, 0, GL_FALSE, f);
++ glMapBufferRange(GL_ARRAY_BUFFER, 0, 0, GL_MAP_READ_BIT);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++
++ # opengles31
++ qt_config_compile_test(opengles31
++ LABEL "OpenGL ES 3.1"
++ LIBRARIES
++ ${_qt_gles3_test_libs}
++ ${plaform_graphics_libs}
++ CODE
++ "#include <GLES3/gl31.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ glDispatchCompute(1, 1, 1);
++ glProgramUniform1i(0, 0, 0);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # opengles32
++ qt_config_compile_test(opengles32
++ LABEL "OpenGL ES 3.2"
++ LIBRARIES
++ ${_qt_gles3_test_libs}
++ ${plaform_graphics_libs}
++ CODE
++ "#include <GLES3/gl32.h>
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ glFramebufferTexture(GL_TEXTURE_2D, GL_DEPTH_STENCIL_ATTACHMENT, 1, 0);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # xcb_syslibs
++ qt_config_compile_test(xcb_syslibs
++ LABEL "XCB (extensions)"
++ LIBRARIES
++ XCB::CURSOR
++ XCB::ICCCM
++ XCB::UTIL
++ XCB::IMAGE
++ XCB::KEYSYMS
++ XCB::RANDR
++ XCB::RENDER
++ XCB::RENDERUTIL
++ XCB::SHAPE
++ XCB::SHM
++ XCB::SYNC
++ XCB::XFIXES
++ XCB::XKB
++ XCB::XCB
++ CODE
++ "// xkb.h is using a variable called 'explicit', which is a reserved keyword in C++
++ #define explicit dont_use_cxx_explicit
++ #include <xcb/xcb.h>
++ #include <xcb/xcb_util.h>
++ #include <xcb/xcb_image.h>
++ #include <xcb/xcb_keysyms.h>
++ #include <xcb/xcb_cursor.h>
++ #include <xcb/randr.h>
++ #include <xcb/render.h>
++ #include <xcb/shape.h>
++ #include <xcb/shm.h>
++ #include <xcb/sync.h>
++ #include <xcb/xfixes.h>
++ #include <xcb/xcb_icccm.h>
++ #include <xcb/xcb_renderutil.h>
++ #include <xcb/xkb.h>
++ #undef explicit
++
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ int primaryScreen = 0;
++ xcb_connection_t *c = xcb_connect(\"\", &primaryScreen);
++ /* RENDER */
++ xcb_generic_error_t *error = nullptr;
++ xcb_render_query_pict_formats_cookie_t formatsCookie =
++ xcb_render_query_pict_formats(c);
++ xcb_render_query_pict_formats_reply_t *formatsReply =
++ xcb_render_query_pict_formats_reply(c, formatsCookie, &error);
++ /* RENDERUTIL: xcb_renderutil.h include won't compile unless version >= 0.3.9 */
++ xcb_render_util_find_standard_format(nullptr, XCB_PICT_STANDARD_ARGB_32);
++ /* XKB: This takes more arguments in xcb-xkb < 1.11 */
++ xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof(nullptr, 0, 0, 0, 0, 0, 0, 0, 0);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # libinput_hires_wheel_support
++ qt_config_compile_test(libinput_hires_wheel_support
++ LABEL "libinput hires wheel support"
++ LIBRARIES
++ Libinput::Libinput
++ CODE
++ "#include <libinput.h>
++ int main(void)
++ {
++ /* BEGIN TEST: */
++ libinput_event_type type = LIBINPUT_EVENT_POINTER_SCROLL_WHEEL;
++ libinput_event_pointer_get_scroll_value_v120(nullptr, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # directwrite (assumes DirectWrite2)
++ qt_config_compile_test(directwrite
++ LABEL "WINDOWS directwrite"
++ LIBRARIES
++ dwrite
++ CODE
++ "#include <dwrite_2.h>
++ int main(int, char **)
++ {
++ IUnknown *factory = nullptr;
++ DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory2),
++ &factory);
++ return 0;
++ }
++ ")
++
++ # directwrite3 (not present in MinGW)
++ qt_config_compile_test(directwrite3
++ LABEL "WINDOWS directwrite3"
++ LIBRARIES
++ dwrite
++ CODE
++ "#include <dwrite_3.h>
++ int main(int, char **)
++ {
++ IUnknown *factory = nullptr;
++ DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory6),
++ &factory);
++ return 0;
++ }
++ ")
++
++ # directwritecolrv1
++ qt_config_compile_test(directwritecolrv1
++ LABEL "WINDOWS directwritecolrv1"
++ LIBRARIES
++ dwrite
++ CODE
++ "#include <dwrite_3.h>
++ int main(int, char **)
++ {
++ IUnknown *factory = nullptr;
++ // Just check that the API is available for the build
++ DWRITE_PAINT_ELEMENT paintElement;
++
++ if (false) {
++ DWRITE_COLOR_F dwColor;
++ dwColor.r = 0;
++ dwColor.g = 0;
++ dwColor.b = 0;
++ dwColor.a = 0;
++ IDWritePaintReader *paintReader = nullptr;
++ // Some versions of MinGW has a dwrite_3.h header with buggy generated APIs. One of these
++ // is that the SetTextColor() function takes a pointer instead of a const-ref. We check
++ // for this to disable the COLRv1 feature for broken headers.
++ paintReader->SetTextColor(dwColor);
++ }
++
++ return 0;
++ }
++ ")
++
++ qt_config_compile_test(d2d1
++ LABEL "WINDOWS Direct2D"
++ LIBRARIES
++ d2d1
++ CODE
++ "#include <d2d1.h>
++ int main(int, char **)
++ {
++ void *factory = nullptr;
++ D2D1_FACTORY_OPTIONS options;
++ ZeroMemory(&options, sizeof(D2D1_FACTORY_OPTIONS));
++ D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, GUID{}, &options, &factory);
++ return 0;
++ }
++ ")
++
++ qt_config_compile_test(d2d1_1
++ LABEL "WINDOWS Direct2D 1.1"
++ LIBRARIES
++ d2d1
++ CODE
++ "#include <d2d1_1.h>
++ int main(int, char **)
++ {
++ ID2D1Factory1 *d2dFactory;
++ D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &d2dFactory);
++ return 0;
++ }
++ ")
++
++ qt_config_compile_test(renderdoc
++ LIBRARIES
++ RenderDoc::RenderDoc
++ LABEL "RenderDoc header check"
++ CODE
++ "#include <renderdoc_app.h>
++ int main(int, char **)
++ {
++ if (RENDERDOC_Version::eRENDERDOC_API_Version_1_6_0)
++ return 0;
++ return 0;
++ }
++ ")
++
++ # qtwayland client
++ # drm-egl-server
++ qt_config_compile_test(drm_egl_server
++ LABEL "DRM EGL Server"
++ LIBRARIES
++ EGL::EGL
++ CODE
++ "
++ #include <EGL/egl.h>
++ #include <EGL/eglext.h>
++
++ int main(int argc, char **argv)
++ {
++ (void)argc; (void)argv;
++ /* BEGIN TEST: */
++ #ifdef EGL_MESA_drm_image
++ return 0;
++ #else
++ #error Requires EGL_MESA_drm_image to be defined
++ return 1;
++ #endif
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # libhybris-egl-server
++ qt_config_compile_test(libhybris_egl_server
++ LABEL "libhybris EGL Server"
++ LIBRARIES
++ EGL::EGL
++ CODE
++ "
++ #include <EGL/egl.h>
++ #include <EGL/eglext.h>
++ #include <hybris/eglplatformcommon/hybris_nativebufferext.h>
++
++ int main(int argc, char **argv)
++ {
++ (void)argc; (void)argv;
++ /* BEGIN TEST: */
++ #ifdef EGL_HYBRIS_native_buffer
++ return 0;
++ #else
++ #error Requires EGL_HYBRIS_native_buffer to be defined
++ return 1;
++ #endif
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # dmabuf-server-buffer
++ qt_config_compile_test(dmabuf_server_buffer
++ LABEL "Linux dma-buf Buffer Sharing"
++ LIBRARIES
++ EGL::EGL
++ Libdrm::Libdrm
++ CODE
++ "
++ #include <EGL/egl.h>
++ #include <EGL/eglext.h>
++ #include <drm_fourcc.h>
++
++ int main(int argc, char **argv)
++ {
++ (void)argc; (void)argv;
++ /* BEGIN TEST: */
++ #ifdef EGL_LINUX_DMA_BUF_EXT
++ return 0;
++ #else
++ #error Requires EGL_LINUX_DMA_BUF_EXT
++ return 1;
++ #endif
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # vulkan-server-buffer
++ qt_config_compile_test(vulkan_server_buffer
++ LABEL "Vulkan Buffer Sharing"
++ LIBRARIES
++ Wayland::Client
++ CODE
++ "#define VK_USE_PLATFORM_WAYLAND_KHR 1
++ #include <vulkan/vulkan.h>
++
++ int main(int argc, char **argv)
++ {
++ (void)argc; (void)argv;
++ /* BEGIN TEST: */
++ 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;
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ # egl_1_5-wayland
++ qt_config_compile_test(egl_1_5_wayland
++ LABEL "EGL 1.5 with Wayland Platform"
++ LIBRARIES
++ EGL::EGL
++ Wayland::Client
++ CODE
++ "
++ #include <EGL/egl.h>
++ #include <EGL/eglext.h>
++ #include <wayland-client.h>
++
++ int main(int argc, char **argv)
++ {
++ (void)argc; (void)argv;
++ /* BEGIN TEST: */
++ eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);
++ /* END TEST: */
++ return 0;
++ }
++ ")
++
++ #### Features
++
++ qt_feature("accessibility-atspi-bridge" PUBLIC PRIVATE
++ LABEL "ATSPI Bridge"
++ CONDITION QT_FEATURE_accessibility AND QT_FEATURE_dbus AND ATSPI2_FOUND
++ )
++ qt_feature_definition("accessibility-atspi-bridge" "QT_NO_ACCESSIBILITY_ATSPI_BRIDGE" NEGATE VALUE "1")
++ qt_feature("directfb" PRIVATE
++ SECTION "Platform plugins"
++ LABEL "DirectFB"
++ AUTODETECT OFF
++ CONDITION DirectFB_FOUND
++ )
++ qt_feature("directwrite" PRIVATE
++ LABEL "DirectWrite"
++ CONDITION TEST_directwrite
++ EMIT_IF WIN32
++ )
++ qt_feature("directwrite3" PRIVATE
++ LABEL "DirectWrite 3"
++ CONDITION QT_FEATURE_directwrite AND TEST_directwrite3
++ EMIT_IF WIN32
++ )
++ qt_feature("directwritecolrv1" PRIVATE
++ LABEL "DirectWrite COLRv1 Support"
++ CONDITION QT_FEATURE_directwrite3 AND TEST_directwritecolrv1
++ EMIT_IF WIN32
++ )
++ qt_feature("direct2d" PRIVATE
++ LABEL "Direct 2D"
++ CONDITION WIN32 AND NOT WINRT AND TEST_d2d1
++ )
++ qt_feature("direct2d1_1" PRIVATE
++ LABEL "Direct 2D 1.1"
++ CONDITION QT_FEATURE_direct2d AND TEST_d2d1_1
++ )
++ qt_feature("emojisegmenter" PUBLIC PRIVATE
++ SECTION "Fonts"
++ LABEL "Emoji Segmenter"
++ PURPOSE "Supports parsing complex emoji sequences for better font resolution."
++ )
++ qt_feature_definition("emojisegmenter" "QT_NO_EMOJISEGMENTER" NEGATE VALUE "1")
++ qt_feature("evdev" PRIVATE
++ LABEL "evdev"
++ CONDITION QT_FEATURE_thread AND TEST_evdev
++ )
++ qt_feature("vxworksevdev" PRIVATE
++ LABEL "vxworksevdev"
++ CONDITION QT_FEATURE_thread AND TEST_vxworksevdev
++ )
++ qt_feature("freetype" PUBLIC PRIVATE
++ SECTION "Fonts"
++ LABEL "FreeType"
++ PURPOSE "Supports the FreeType 2 font engine (and its supported font formats)."
++ )
++ qt_feature_definition("freetype" "QT_NO_FREETYPE" NEGATE VALUE "1")
++ qt_feature("system-freetype" PRIVATE SYSTEM_LIBRARY
++ LABEL " Using system FreeType"
++ AUTODETECT NOT MSVC
++ CONDITION QT_FEATURE_freetype AND WrapSystemFreetype_FOUND
++ ENABLE INPUT_freetype STREQUAL 'system'
++ DISABLE INPUT_freetype STREQUAL 'qt'
++ )
++ qt_feature("fontconfig" PUBLIC PRIVATE
++ LABEL "Fontconfig"
++ AUTODETECT NOT APPLE
++ CONDITION NOT APPLE AND NOT WIN32 AND QT_FEATURE_freetype AND WrapFontconfig_FOUND
++ )
++ qt_feature_definition("fontconfig" "QT_NO_FONTCONFIG" NEGATE VALUE "1")
++ qt_feature("gbm"
++ LABEL "GBM"
++ CONDITION gbm_FOUND
++ )
++ qt_feature_config("gbm" QMAKE_PUBLIC_QT_CONFIG)
++ qt_feature("harfbuzz" PUBLIC PRIVATE
++ LABEL "HarfBuzz"
++ )
++ qt_feature_definition("harfbuzz" "QT_NO_HARFBUZZ" NEGATE VALUE "1")
++ qt_feature("system-harfbuzz" PRIVATE SYSTEM_LIBRARY
++ LABEL " Using system HarfBuzz"
++ AUTODETECT NOT APPLE AND NOT WIN32
++ CONDITION QT_FEATURE_harfbuzz AND WrapSystemHarfbuzz_FOUND
++ ENABLE INPUT_harfbuzz STREQUAL 'system'
++ DISABLE INPUT_harfbuzz STREQUAL 'qt'
++ )
++ qt_feature("qqnx_imf" PRIVATE
++ LABEL "IMF"
++ CONDITION libs.imf OR FIXME
++ EMIT_IF QNX
++ )
++ qt_feature("integrityfb" PRIVATE
++ SECTION "Platform plugins"
++ LABEL "INTEGRITY framebuffer"
++ CONDITION INTEGRITY AND TEST_integrityfb
++ )
++ qt_feature("kms" PRIVATE
++ LABEL "KMS"
++ CONDITION Libdrm_FOUND
++ )
++ qt_feature_config("kms" QMAKE_PUBLIC_QT_CONFIG)
++ qt_feature("drm_atomic" PRIVATE
++ LABEL "DRM Atomic API"
++ CONDITION Libdrm_FOUND AND TEST_drm_atomic
++ )
++ qt_feature("libinput" PRIVATE
++ LABEL "libinput"
++ CONDITION QT_FEATURE_libudev AND Libinput_FOUND
++ )
++ qt_feature("integrityhid" PRIVATE
++ LABEL "INTEGRITY HID"
++ CONDITION INTEGRITY AND libs.integrityhid OR FIXME
++ )
++ qt_feature("libinput-axis-api" PRIVATE
++ LABEL "axis API in libinput"
++ CONDITION QT_FEATURE_libinput AND ON
++ )
++ qt_feature("libinput-hires-wheel-support" PRIVATE
++ LABEL "HiRes wheel support in libinput"
++ CONDITION QT_FEATURE_libinput AND TEST_libinput_hires_wheel_support
++ )
++ qt_feature("lgmon"
++ LABEL "lgmon"
++ CONDITION libs.lgmon OR FIXME
++ EMIT_IF QNX
++ )
++ qt_feature_config("lgmon" QMAKE_PRIVATE_CONFIG)
++ qt_feature("linuxfb" PRIVATE
++ SECTION "Platform plugins"
++ LABEL "LinuxFB"
++ CONDITION TEST_linuxfb AND QT_FEATURE_regularexpression
++ )
++ qt_feature("vsp2" PRIVATE
++ LABEL "VSP2"
++ AUTODETECT OFF
++ CONDITION libs.v4l2 OR FIXME
++ )
++ qt_feature("vnc" PRIVATE
++ SECTION "Platform plugins"
++ LABEL "VNC"
++ CONDITION ( UNIX AND NOT ANDROID AND NOT APPLE AND NOT WASM ) AND ( QT_FEATURE_regularexpression AND QT_FEATURE_network )
++ )
++ qt_feature("mtdev" PRIVATE
++ LABEL "mtdev"
++ CONDITION Mtdev_FOUND
++ )
++ qt_feature("opengles2" PUBLIC
++ LABEL "OpenGL ES 2.0"
++ CONDITION NOT WIN32 AND NOT WATCHOS AND NOT QT_FEATURE_opengl_desktop AND GLESv2_FOUND
++ ENABLE INPUT_opengl STREQUAL 'es2'
++ DISABLE INPUT_opengl STREQUAL 'desktop' OR INPUT_opengl STREQUAL 'dynamic' OR INPUT_opengl STREQUAL 'no'
++ )
++ qt_feature_config("opengles2" QMAKE_PUBLIC_QT_CONFIG)
++ qt_feature("opengles3" PUBLIC
++ LABEL "OpenGL ES 3.0"
++ CONDITION QT_FEATURE_opengles2 AND TEST_opengles3
++ )
++ qt_feature("opengles31" PUBLIC
++ LABEL "OpenGL ES 3.1"
++ CONDITION QT_FEATURE_opengles3 AND TEST_opengles31
++ )
++ qt_feature("opengles32" PUBLIC
++ LABEL "OpenGL ES 3.2"
++ CONDITION QT_FEATURE_opengles31 AND TEST_opengles32
++ )
++ qt_feature("opengl-desktop"
++ LABEL "Desktop OpenGL"
++ AUTODETECT NOT WIN32
++ CONDITION ( WIN32 AND ( MSVC OR WrapOpenGL_FOUND ) ) OR ( NOT WATCHOS AND NOT WIN32 AND NOT WASM AND WrapOpenGL_FOUND )
++ ENABLE INPUT_opengl STREQUAL 'desktop'
++ DISABLE INPUT_opengl STREQUAL 'es2' OR INPUT_opengl STREQUAL 'dynamic' OR INPUT_opengl STREQUAL 'no'
++ )
++ qt_feature("opengl-dynamic"
++ LABEL "Dynamic OpenGL"
++ CONDITION WIN32
++ DISABLE INPUT_opengl STREQUAL 'no' OR INPUT_opengl STREQUAL 'desktop'
++ )
++ qt_feature("dynamicgl" PUBLIC
++ LABEL "Dynamic OpenGL: dynamicgl"
++ CONDITION QT_FEATURE_opengl_dynamic
++ DISABLE INPUT_opengl STREQUAL 'no' OR INPUT_opengl STREQUAL 'desktop'
++ )
++ qt_feature_definition("opengl-dynamic" "QT_OPENGL_DYNAMIC")
++ qt_feature("opengl" PUBLIC
++ LABEL "OpenGL"
++ CONDITION QT_FEATURE_opengl_desktop OR QT_FEATURE_opengl_dynamic OR QT_FEATURE_opengles2
++ )
++ qt_feature_definition("opengl" "QT_NO_OPENGL" NEGATE VALUE "1")
++ qt_feature("vkgen" PRIVATE
++ LABEL "vkgen"
++ CONDITION QT_FEATURE_xmlstreamreader
++ )
++ qt_feature("vulkan" PUBLIC
++ LABEL "Vulkan"
++ CONDITION QT_FEATURE_library AND QT_FEATURE_vkgen AND WrapVulkanHeaders_FOUND
++ )
++ qt_feature("metal" PUBLIC
++ LABEL "Metal"
++ CONDITION MACOS OR IOS OR VISIONOS
++ )
++ qt_feature("vkkhrdisplay" PRIVATE
++ SECTION "Platform plugins"
++ LABEL "VK_KHR_display"
++ CONDITION NOT ANDROID AND NOT APPLE AND NOT WIN32 AND NOT WASM AND QT_FEATURE_vulkan
++ )
++ qt_feature("openvg" PUBLIC
++ LABEL "OpenVG"
++ CONDITION libs.openvg OR FIXME
++ )
++ qt_feature("egl" PUBLIC
++ LABEL "EGL"
++ CONDITION ( QT_FEATURE_opengl OR QT_FEATURE_openvg ) AND EGL_FOUND AND ( QT_FEATURE_dlopen OR NOT UNIX OR INTEGRITY OR VXWORKS)
++ )
++ qt_feature_definition("egl" "QT_NO_EGL" NEGATE VALUE "1")
++ qt_feature("egl_x11" PRIVATE
++ LABEL "EGL on X11"
++ CONDITION QT_FEATURE_thread AND QT_FEATURE_egl AND TEST_egl_x11
++ )
++ qt_feature("eglfs" PRIVATE
++ SECTION "Platform plugins"
++ LABEL "EGLFS"
++ CONDITION NOT ANDROID AND NOT APPLE AND NOT WIN32 AND NOT WASM AND NOT QNX AND QT_FEATURE_egl
++ )
++ qt_feature("eglfs_brcm" PRIVATE
++ LABEL "EGLFS Raspberry Pi"
++ CONDITION QT_FEATURE_eglfs AND TEST_egl_brcm
++ )
++ qt_feature("eglfs_egldevice" PRIVATE
++ LABEL "EGLFS EGLDevice"
++ CONDITION QT_FEATURE_eglfs AND TEST_egl_egldevice AND QT_FEATURE_kms
++ )
++ qt_feature("eglfs_gbm" PRIVATE
++ LABEL "EGLFS GBM"
++ CONDITION QT_FEATURE_eglfs AND gbm_FOUND AND QT_FEATURE_kms
++ )
++ qt_feature("eglfs_vsp2" PRIVATE
++ LABEL "EGLFS VSP2"
++ CONDITION QT_FEATURE_eglfs AND gbm_FOUND AND QT_FEATURE_kms AND QT_FEATURE_vsp2
++ )
++ qt_feature("eglfs_mali" PRIVATE
++ LABEL "EGLFS Mali"
++ CONDITION QT_FEATURE_eglfs AND ( TEST_egl_mali OR TEST_egl_mali_2 )
++ )
++ qt_feature("eglfs_viv" PRIVATE
++ LABEL "EGLFS i.Mx6"
++ CONDITION QT_FEATURE_eglfs AND TEST_egl_viv
++ )
++ qt_feature("eglfs_rcar" PRIVATE
++ LABEL "EGLFS RCAR"
++ CONDITION INTEGRITY AND QT_FEATURE_eglfs AND TEST_egl_rcar
++ )
++ qt_feature("eglfs_viv_wl" PRIVATE
++ LABEL "EGLFS i.Mx6 Wayland"
++ CONDITION QT_FEATURE_eglfs_viv AND TARGET Wayland::Server
++ )
++ qt_feature("eglfs_openwfd" PRIVATE
++ LABEL "EGLFS OpenWFD"
++ CONDITION INTEGRITY AND QT_FEATURE_eglfs AND TEST_egl_openwfd
++ )
++ qt_feature("eglfs_x11" PRIVATE
++ LABEL "EGLFS X11"
++ CONDITION QT_FEATURE_eglfs AND QT_FEATURE_xcb_xlib AND QT_FEATURE_egl_x11
++ )
++ qt_feature("gif" PRIVATE
++ LABEL "GIF"
++ CONDITION QT_FEATURE_imageformatplugin
++ )
++ qt_feature_definition("gif" "QT_NO_IMAGEFORMAT_GIF" NEGATE)
++ qt_feature("ico" PUBLIC PRIVATE
++ LABEL "ICO"
++ CONDITION QT_FEATURE_imageformatplugin
++ )
++ qt_feature_definition("ico" "QT_NO_ICO" NEGATE VALUE "1")
++ qt_feature("jpeg" PRIVATE
++ LABEL "JPEG"
++ CONDITION QT_FEATURE_imageformatplugin
++ DISABLE INPUT_libjpeg STREQUAL 'no'
++ )
++ qt_feature_definition("jpeg" "QT_NO_IMAGEFORMAT_JPEG" NEGATE VALUE "1")
++ qt_feature("system-jpeg" PRIVATE SYSTEM_LIBRARY
++ LABEL " Using system libjpeg"
++ CONDITION QT_FEATURE_jpeg AND JPEG_FOUND
++ ENABLE INPUT_libjpeg STREQUAL 'system'
++ DISABLE INPUT_libjpeg STREQUAL 'qt'
++ )
++ qt_feature("png" PRIVATE
++ LABEL "PNG"
++ DISABLE INPUT_libpng STREQUAL 'no'
++ )
++ qt_feature_definition("png" "QT_NO_IMAGEFORMAT_PNG" NEGATE)
++ qt_feature("system-png" PRIVATE SYSTEM_LIBRARY
++ LABEL " Using system libpng"
++ AUTODETECT QT_FEATURE_system_zlib
++ CONDITION QT_FEATURE_png AND WrapSystemPNG_FOUND
++ ENABLE INPUT_libpng STREQUAL 'system'
++ DISABLE INPUT_libpng STREQUAL 'qt'
++ )
++ qt_feature("imageio-text-loading" PRIVATE
++ LABEL "Image Text section loading"
++ )
++ qt_feature_definition("imageio-text-loading" "QT_NO_IMAGEIO_TEXT_LOADING" NEGATE)
++ qt_feature("sessionmanager" PUBLIC
++ SECTION "Kernel"
++ LABEL "Session Management"
++ PURPOSE "Provides an interface to the windowing system's session management."
++ )
++ qt_feature_definition("sessionmanager" "QT_NO_SESSIONMANAGER" NEGATE VALUE "1")
++ qt_feature("tslib" PRIVATE
++ LABEL "tslib"
++ CONDITION Tslib_FOUND AND NOT INTEGRITY
++ )
++ qt_feature("tuiotouch" PRIVATE
++ LABEL "TuioTouch"
++ PURPOSE "Provides the TuioTouch input plugin."
++ CONDITION QT_FEATURE_network AND QT_FEATURE_udpsocket
++ )
++ qt_feature("xcb" PUBLIC
++ SECTION "Platform plugins"
++ LABEL "XCB"
++ AUTODETECT NOT APPLE
++ CONDITION QT_FEATURE_thread AND TARGET XCB::XCB AND TEST_xcb_syslibs AND QT_FEATURE_xkbcommon_x11
++ )
++ qt_feature("xcb-glx-plugin" PUBLIC
++ LABEL "GLX Plugin"
++ CONDITION QT_FEATURE_xcb_xlib AND QT_FEATURE_opengl AND NOT QT_FEATURE_opengles2
++ EMIT_IF QT_FEATURE_xcb
++ )
++ qt_feature("xcb-glx" PRIVATE
++ LABEL " XCB GLX"
++ CONDITION XCB_GLX_FOUND
++ EMIT_IF QT_FEATURE_xcb AND QT_FEATURE_xcb_glx_plugin
++ )
++ qt_feature("xcb-egl-plugin" PRIVATE
++ LABEL "EGL-X11 Plugin"
++ CONDITION QT_FEATURE_egl AND QT_FEATURE_opengl
++ EMIT_IF QT_FEATURE_xcb
++ )
++ qt_feature("xcb-xlib" PRIVATE
++ LABEL "XCB Xlib"
++ CONDITION QT_FEATURE_xlib AND X11_XCB_FOUND
++ )
++ qt_feature("xcb-sm" PRIVATE
++ LABEL "xcb-sm"
++ CONDITION QT_FEATURE_sessionmanager AND X11_SM_FOUND
++ EMIT_IF QT_FEATURE_xcb
++ )
++ qt_feature("system-xcb-xinput" PRIVATE SYSTEM_LIBRARY
++ LABEL "Using system-provided xcb-xinput"
++ AUTODETECT OFF
++ CONDITION XCB_XINPUT_FOUND
++ ENABLE INPUT_bundled_xcb_xinput STREQUAL 'no'
++ DISABLE INPUT_bundled_xcb_xinput STREQUAL 'yes'
++ EMIT_IF QT_FEATURE_xcb
++ )
++ qt_feature("xkbcommon" PUBLIC
++ LABEL "xkbcommon"
++ CONDITION XKB_FOUND
++ )
++ qt_feature("xkbcommon-x11" PRIVATE
++ LABEL "xkbcommon-x11"
++ CONDITION QT_FEATURE_xkbcommon AND XKB_COMMON_X11_FOUND
++ )
++ qt_feature("xlib" PRIVATE
++ LABEL "XLib"
++ AUTODETECT NOT APPLE OR QT_FEATURE_xcb
++ CONDITION X11_FOUND
++ )
++ qt_feature("texthtmlparser" PUBLIC
++ SECTION "Kernel"
++ LABEL "HtmlParser"
++ PURPOSE "Provides a parser for HTML."
++ )
++ qt_feature_definition("texthtmlparser" "QT_NO_TEXTHTMLPARSER" NEGATE VALUE "1")
++ qt_feature("textmarkdownreader" PUBLIC
++ SECTION "Kernel"
++ LABEL "MarkdownReader"
++ PURPOSE "Provides a Markdown (CommonMark and GitHub) reader"
++ ENABLE INPUT_libmd4c STREQUAL 'system' OR INPUT_libmd4c STREQUAL 'qt' OR INPUT_libmd4c STREQUAL 'yes'
++ DISABLE INPUT_libmd4c STREQUAL 'no'
++ )
++ qt_feature("system-textmarkdownreader" PUBLIC SYSTEM_LIBRARY
++ SECTION "Kernel"
++ LABEL " Using system libmd4c"
++ CONDITION QT_FEATURE_textmarkdownreader AND WrapSystemMd4c_FOUND
++ ENABLE INPUT_libmd4c STREQUAL 'system'
++ DISABLE INPUT_libmd4c STREQUAL 'qt'
++ )
++ qt_feature("textmarkdownwriter" PUBLIC
++ SECTION "Kernel"
++ LABEL "MarkdownWriter"
++ CONDITION QT_FEATURE_regularexpression
++ PURPOSE "Provides a Markdown (CommonMark and GitHub) writer"
++ )
++ qt_feature("textodfwriter" PUBLIC
++ SECTION "Kernel"
++ LABEL "OdfWriter"
++ PURPOSE "Provides an ODF writer."
++ CONDITION QT_FEATURE_xmlstreamwriter
++ )
++ qt_feature_definition("textodfwriter" "QT_NO_TEXTODFWRITER" NEGATE VALUE "1")
++ qt_feature("cssparser" PUBLIC
++ SECTION "Kernel"
++ LABEL "CssParser"
++ PURPOSE "Provides a parser for Cascading Style Sheets."
++ )
++ qt_feature_definition("cssparser" "QT_NO_CSSPARSER" NEGATE VALUE "1")
++ qt_feature("draganddrop" PUBLIC
++ SECTION "Kernel"
++ LABEL "Drag and Drop"
++ PURPOSE "Supports the drag and drop mechanism."
++ CONDITION QT_FEATURE_imageformat_xpm
++ )
++ qt_feature_definition("draganddrop" "QT_NO_DRAGANDDROP" NEGATE VALUE "1")
++ qt_feature("action" PUBLIC
++ SECTION "Kernel"
++ LABEL "Q(Gui)Action(Group)"
++ PURPOSE "Provides abstract user interface actions."
++ )
++ qt_feature_definition("action" "QT_NO_ACTION" NEGATE VALUE "1")
++ qt_feature("cursor" PUBLIC
++ SECTION "Kernel"
++ LABEL "QCursor"
++ PURPOSE "Provides mouse cursors."
++ )
++ qt_feature_definition("cursor" "QT_NO_CURSOR" NEGATE VALUE "1")
++ qt_feature("clipboard" PUBLIC
++ SECTION "Kernel"
++ LABEL "QClipboard"
++ PURPOSE "Provides cut and paste operations."
++ CONDITION NOT INTEGRITY AND NOT rtems
++ )
++ qt_feature_definition("clipboard" "QT_NO_CLIPBOARD" NEGATE VALUE "1")
++ qt_feature("wheelevent" PUBLIC
++ SECTION "Kernel"
++ LABEL "QWheelEvent"
++ PURPOSE "Supports wheel events."
++ )
++ qt_feature_definition("wheelevent" "QT_NO_WHEELEVENT" NEGATE VALUE "1")
++ qt_feature("tabletevent" PUBLIC
++ SECTION "Kernel"
++ LABEL "QTabletEvent"
++ PURPOSE "Supports tablet events."
++ )
++ qt_feature_definition("tabletevent" "QT_NO_TABLETEVENT" NEGATE VALUE "1")
++ qt_feature("im" PUBLIC
++ SECTION "Kernel"
++ LABEL "QInputContext"
++ PURPOSE "Provides complex input methods."
++ )
++ qt_feature_definition("im" "QT_NO_IM" NEGATE VALUE "1")
++ qt_feature("highdpiscaling" PUBLIC
++ SECTION "Kernel"
++ LABEL "High DPI Scaling"
++ PURPOSE "Provides automatic scaling of DPI-unaware applications on high-DPI displays."
++ )
++ qt_feature_definition("highdpiscaling" "QT_NO_HIGHDPISCALING" NEGATE VALUE "1")
++ qt_feature("validator" PUBLIC
++ SECTION "Widgets"
++ LABEL "QValidator"
++ PURPOSE "Supports validation of input text."
++ )
++ qt_feature_definition("validator" "QT_NO_VALIDATOR" NEGATE VALUE "1")
++ qt_feature("standarditemmodel" PUBLIC
++ SECTION "ItemViews"
++ LABEL "QStandardItemModel"
++ PURPOSE "Provides a generic model for storing custom data."
++ CONDITION QT_FEATURE_itemmodel
++ )
++ qt_feature_definition("standarditemmodel" "QT_NO_STANDARDITEMMODEL" NEGATE VALUE "1")
++ qt_feature("filesystemmodel" PUBLIC
++ SECTION "File I/O"
++ LABEL "QFileSystemModel"
++ PURPOSE "Provides a data model for the local filesystem."
++ CONDITION QT_FEATURE_itemmodel
++ )
++ qt_feature_definition("filesystemmodel" "QT_NO_FILESYSTEMMODEL" NEGATE VALUE "1")
++ qt_feature("imageformatplugin" PUBLIC
++ SECTION "Images"
++ LABEL "QImageIOPlugin"
++ PURPOSE "Provides a base for writing a image format plugins."
++ )
++ qt_feature_definition("imageformatplugin" "QT_NO_IMAGEFORMATPLUGIN" NEGATE VALUE "1")
++ qt_feature("movie" PUBLIC
++ SECTION "Images"
++ LABEL "QMovie"
++ PURPOSE "Supports animated images."
++ )
++ qt_feature_definition("movie" "QT_NO_MOVIE" NEGATE VALUE "1")
++ qt_feature("imageformat_bmp" PUBLIC
++ SECTION "Images"
++ LABEL "BMP Image Format"
++ PURPOSE "Supports Microsoft's Bitmap image file format."
++ )
++ qt_feature_definition("imageformat_bmp" "QT_NO_IMAGEFORMAT_BMP" NEGATE VALUE "1")
++ qt_feature("imageformat_ppm" PUBLIC
++ SECTION "Images"
++ LABEL "PPM Image Format"
++ PURPOSE "Supports the Portable Pixmap image file format."
++ )
++ qt_feature_definition("imageformat_ppm" "QT_NO_IMAGEFORMAT_PPM" NEGATE VALUE "1")
++ qt_feature("imageformat_xbm" PUBLIC
++ SECTION "Images"
++ LABEL "XBM Image Format"
++ PURPOSE "Supports the X11 Bitmap image file format."
++ )
++ qt_feature_definition("imageformat_xbm" "QT_NO_IMAGEFORMAT_XBM" NEGATE VALUE "1")
++ qt_feature("imageformat_xpm" PUBLIC
++ SECTION "Images"
++ LABEL "XPM Image Format"
++ PURPOSE "Supports the X11 Pixmap image file format."
++ )
++ qt_feature_definition("imageformat_xpm" "QT_NO_IMAGEFORMAT_XPM" NEGATE VALUE "1")
++ qt_feature("imageformat_png" PUBLIC
++ SECTION "Images"
++ LABEL "PNG Image Format"
++ PURPOSE "Supports the Portable Network Graphics image file format."
++ )
++ qt_feature_definition("imageformat_png" "QT_NO_IMAGEFORMAT_PNG" NEGATE VALUE "1")
++ qt_feature("imageformat_jpeg" PUBLIC
++ SECTION "Images"
++ LABEL "JPEG Image Format"
++ PURPOSE "Supports the Joint Photographic Experts Group image file format."
++ )
++ qt_feature_definition("imageformat_jpeg" "QT_NO_IMAGEFORMAT_JPEG" NEGATE VALUE "1")
++ qt_feature("image_heuristic_mask" PUBLIC
++ SECTION "Images"
++ LABEL "QImage::createHeuristicMask()"
++ PURPOSE "Supports creating a 1-bpp heuristic mask for images."
++ )
++ qt_feature_definition("image_heuristic_mask" "QT_NO_IMAGE_HEURISTIC_MASK" NEGATE VALUE "1")
++ qt_feature("image_text" PUBLIC
++ SECTION "Images"
++ LABEL "Image Text"
++ PURPOSE "Supports image file text strings."
++ )
++ qt_feature_definition("image_text" "QT_NO_IMAGE_TEXT" NEGATE VALUE "1")
++ qt_feature("picture" PUBLIC
++ SECTION "Painting"
++ LABEL "QPicture"
++ PURPOSE "Supports recording and replaying QPainter commands."
++ )
++ qt_feature_definition("picture" "QT_NO_PICTURE" NEGATE VALUE "1")
++ qt_feature("colornames" PUBLIC
++ SECTION "Painting"
++ LABEL "Color Names"
++ PURPOSE "Supports color names such as \"red\", used by QColor and by some HTML documents."
++ )
++ qt_feature_definition("colornames" "QT_NO_COLORNAMES" NEGATE VALUE "1")
++ qt_feature("pdf" PUBLIC
++ SECTION "Painting"
++ LABEL "QPdf"
++ PURPOSE "Provides a PDF backend for QPainter."
++ CONDITION QT_FEATURE_temporaryfile
++ )
++ qt_feature_definition("pdf" "QT_NO_PDF" NEGATE VALUE "1")
++ qt_feature("desktopservices" PUBLIC
++ SECTION "Utilities"
++ LABEL "QDesktopServices"
++ PURPOSE "Provides methods for accessing common desktop services."
++ )
++ qt_feature_definition("desktopservices" "QT_NO_DESKTOPSERVICES" NEGATE VALUE "1")
++ qt_feature("systemtrayicon" PUBLIC
++ SECTION "Utilities"
++ LABEL "QSystemTrayIcon"
++ PURPOSE "Provides an icon for an application in the system tray."
++ CONDITION QT_FEATURE_temporaryfile
++ )
++ qt_feature_definition("systemtrayicon" "QT_NO_SYSTEMTRAYICON" NEGATE VALUE "1")
++ qt_feature("accessibility" PUBLIC
++ SECTION "Utilities"
++ LABEL "Accessibility"
++ PURPOSE "Provides accessibility support."
++ )
++ qt_feature_definition("accessibility" "QT_NO_ACCESSIBILITY" NEGATE VALUE "1")
++ qt_feature("multiprocess" PRIVATE
++ SECTION "Utilities"
++ LABEL "Multi process"
++ PURPOSE "Provides support for detecting the desktop environment, launching external processes and opening URLs."
++ CONDITION NOT INTEGRITY AND NOT rtems
++ )
++ qt_feature("whatsthis" PUBLIC
++ SECTION "Widget Support"
++ LABEL "QWhatsThis"
++ PURPOSE "Supports displaying \"What's this\" help."
++ )
++ qt_feature_definition("whatsthis" "QT_NO_WHATSTHIS" NEGATE VALUE "1")
++ qt_feature("raster-64bit" PRIVATE
++ SECTION "Painting"
++ LABEL "QPainter - 64 bit raster"
++ PURPOSE "Internal painting support for 64 bit (16 bpc) rasterization."
++ )
++ qt_feature("raster-fp" PRIVATE
++ SECTION "Painting"
++ LABEL "QPainter - floating point raster"
++ PURPOSE "Internal painting support for floating point rasterization."
++ CONDITION NOT VXWORKS # QTBUG-115777
++ )
++
++ qt_feature("qtgui-threadpool" PRIVATE
++ SECTION "Painting"
++ LABEL "Multi-threaded image and painting helpers"
++ PURPOSE "Multi-threaded image transforms and QPainter fills."
++ CONDITION QT_FEATURE_thread AND NOT WASM
++ )
++
++ qt_feature("undocommand" PUBLIC
++ SECTION "Utilities"
++ LABEL "QUndoCommand"
++ PURPOSE "Applies (redo or) undo of a single change in a document."
++ )
++ qt_feature_definition("undocommand" "QT_NO_UNDOCOMMAND" NEGATE VALUE "1")
++ qt_feature("undostack" PUBLIC
++ SECTION "Utilities"
++ LABEL "QUndoStack"
++ PURPOSE "Provides the ability to (redo or) undo a list of changes in a document."
++ CONDITION QT_FEATURE_undocommand
++ )
++ qt_feature_definition("undostack" "QT_NO_UNDOSTACK" NEGATE VALUE "1")
++ qt_feature("undogroup" PUBLIC
++ SECTION "Utilities"
++ LABEL "QUndoGroup"
++ PURPOSE "Provides the ability to cluster QUndoCommands."
++ CONDITION QT_FEATURE_undostack
++ )
++ qt_feature("graphicsframecapture" PRIVATE
++ SECTION "Utilities"
++ LABEL "QGraphicsFrameCapture"
++ PURPOSE "Provides a way to capture 3D graphics API calls for a rendered frame."
++ CONDITION TEST_renderdoc OR (MACOS OR IOS)
++ )
++ qt_feature_definition("undogroup" "QT_NO_UNDOGROUP" NEGATE VALUE "1")
++ qt_feature("wayland" PUBLIC
++ SECTION "Platform plugins"
++ LABEL "Wayland"
++ CONDITION TARGET Wayland::Client AND NOT QNX
++ )
++ qt_feature("waylandscanner" PUBLIC
++ SECTION "Wayland Scanner tool"
++ LABEL "Wayland Scanner"
++ CONDITION TARGET Wayland::Scanner
++ )
++ qt_feature("xdg-desktop-portal-file-transfer" PRIVATE
++ LABEL "portal file transfer for clipboard and drag and drop"
++ CONDITION QT_FEATURE_wayland AND QT_FEATURE_dbus AND (QT_FEATURE_clipboard OR QT_FEATURE_draganddrop)
++ )
++
++ # qt wayland client
++ qt_feature("wayland-client" PRIVATE
++ LABEL "Client"
++ CONDITION NOT WIN32 AND QT_FEATURE_wayland AND QT_FEATURE_waylandscanner
++ )
++ qt_feature("wayland-server" PRIVATE
++ LABEL "Qt Wayland Compositor"
++ CONDITION NOT WIN32 AND QT_FEATURE_wayland AND QT_FEATURE_waylandscanner
++ )
++ qt_feature("wayland-egl" PRIVATE
++ LABEL "EGL"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server)
++ AND QT_FEATURE_opengl AND QT_FEATURE_egl
++ AND (NOT QNX OR QT_FEATURE_egl_extension_platform_wayland)
++ )
++ qt_feature("wayland-brcm" PRIVATE
++ LABEL "Raspberry Pi"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server) AND QT_FEATURE_eglfs_brcm
++ )
++ qt_feature("wayland-drm-egl-server-buffer" PRIVATE
++ LABEL "DRM EGL"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server) AND QT_FEATURE_opengl
++ AND QT_FEATURE_egl AND TEST_drm_egl_server
++ AND (NOT QNX OR QT_FEATURE_egl_extension_platform_wayland)
++ )
++ qt_feature("wayland-libhybris-egl-server-buffer" PRIVATE
++ LABEL "libhybris EGL"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server) AND QT_FEATURE_opengl
++ AND QT_FEATURE_egl AND TEST_libhybris_egl_server
++ )
++ qt_feature("wayland-dmabuf-server-buffer" PRIVATE
++ LABEL "Linux dma-buf server buffer"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server) AND QT_FEATURE_opengl
++ AND QT_FEATURE_egl AND TEST_dmabuf_server_buffer
++ )
++ qt_feature("wayland-shm-emulation-server-buffer" PRIVATE
++ LABEL "Shm emulation server buffer"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server) AND QT_FEATURE_opengl AND QT_FEATURE_sharedmemory
++ )
++ qt_feature("wayland-vulkan-server-buffer" PRIVATE
++ LABEL "Vulkan-based server buffer"
++ CONDITION (QT_FEATURE_wayland_client OR QT_FEATURE_wayland_server) AND QT_FEATURE_vulkan
++ AND QT_FEATURE_opengl AND QT_FEATURE_egl AND TEST_vulkan_server_buffer
++ )
++ qt_feature("wayland-datadevice" PRIVATE
++ CONDITION QT_FEATURE_draganddrop OR QT_FEATURE_clipboard
++ )
++ qt_feature("wayland-client-primary-selection" PRIVATE
++ LABEL "primary-selection clipboard"
++ CONDITION QT_FEATURE_clipboard
++ )
++ qt_feature("wayland-client-fullscreen-shell-v1" PRIVATE
++ LABEL "fullscreen-shell-v1"
++ CONDITION QT_FEATURE_wayland_client
++ )
++ qt_feature("wayland-client-wl-shell" PRIVATE
++ LABEL "wl-shell (deprecated)"
++ CONDITION QT_FEATURE_wayland_client
++ )
++ qt_feature("wayland-client-xdg-shell" PRIVATE
++ LABEL "xdg-shell"
++ CONDITION QT_FEATURE_wayland_client
++ )
++ qt_feature("egl-extension-platform-wayland" PRIVATE
++ LABEL "EGL wayland platform extension"
++ CONDITION QT_FEATURE_wayland_client AND QT_FEATURE_opengl AND QT_FEATURE_egl
++ AND TEST_egl_1_5_wayland
++ )
++ qt_feature("run-opengl-tests" PRIVATE
++ LABEL "Run opengl tests"
++ PURPOSE "Provides the ability to skip tests which require opengl to run"
++ CONDITION QT_FEATURE_opengl
++ )
++
++
++ qt_configure_add_summary_section(NAME "Qt Gui")
++ qt_configure_add_summary_entry(ARGS "accessibility")
++ qt_configure_add_summary_entry(ARGS "emojisegmenter")
++ qt_configure_add_summary_entry(ARGS "freetype")
++ qt_configure_add_summary_entry(ARGS "system-freetype")
++ qt_configure_add_summary_entry(ARGS "harfbuzz")
++ qt_configure_add_summary_entry(ARGS "system-harfbuzz")
++ qt_configure_add_summary_entry(ARGS "fontconfig")
++ qt_configure_add_summary_section(NAME "Image formats")
++ qt_configure_add_summary_entry(ARGS "gif")
++ qt_configure_add_summary_entry(ARGS "ico")
++ qt_configure_add_summary_entry(ARGS "jpeg")
++ qt_configure_add_summary_entry(ARGS "system-jpeg")
++ qt_configure_add_summary_entry(ARGS "png")
++ qt_configure_add_summary_entry(ARGS "system-png")
++ qt_configure_end_summary_section() # end of "Image formats" section
++ qt_configure_add_summary_section(NAME "Text formats")
++ qt_configure_add_summary_entry(ARGS "texthtmlparser")
++ qt_configure_add_summary_entry(ARGS "cssparser")
++ qt_configure_add_summary_entry(ARGS "textodfwriter")
++ qt_configure_add_summary_entry(ARGS "textmarkdownreader")
++ qt_configure_add_summary_entry(ARGS "system-textmarkdownreader")
++ qt_configure_add_summary_entry(ARGS "textmarkdownwriter")
++ qt_configure_end_summary_section() # end of "Text formats" section
++ qt_configure_add_summary_entry(ARGS "egl")
++ qt_configure_add_summary_entry(ARGS "openvg")
++ qt_configure_add_summary_section(NAME "OpenGL")
++ qt_configure_add_summary_entry(ARGS "opengl-desktop")
++ qt_configure_add_summary_entry(
++ ARGS "opengl-dynamic"
++ CONDITION WIN32
++ )
++ qt_configure_add_summary_entry(ARGS "opengles2")
++ qt_configure_add_summary_entry(ARGS "opengles3")
++ qt_configure_add_summary_entry(ARGS "opengles31")
++ qt_configure_add_summary_entry(ARGS "opengles32")
++ qt_configure_end_summary_section() # end of "OpenGL" section
++ qt_configure_add_summary_entry(ARGS "vulkan")
++ qt_configure_add_summary_entry(ARGS "metal")
++ qt_configure_add_summary_entry(ARGS "graphicsframecapture")
++ qt_configure_add_summary_entry(ARGS "sessionmanager")
++ qt_configure_add_summary_entry(
++ ARGS "qtgui-threadpool"
++ CONDITION QT_FEATURE_thread
++ )
++ qt_configure_end_summary_section() # end of "Qt Gui" section
++ qt_configure_add_summary_section(NAME "Features used by QPA backends")
++ qt_configure_add_summary_entry(ARGS "evdev")
++ qt_configure_add_summary_entry(ARGS "libinput")
++ qt_configure_add_summary_entry(ARGS "libinput_hires_wheel_support")
++ qt_configure_add_summary_entry(ARGS "integrityhid")
++ qt_configure_add_summary_entry(ARGS "mtdev")
++ qt_configure_add_summary_entry(ARGS "tslib")
++ qt_configure_add_summary_entry(ARGS "xkbcommon")
++ qt_configure_add_summary_entry(ARGS "vxworksevdev")
++ qt_configure_add_summary_section(NAME "X11 specific")
++ qt_configure_add_summary_entry(ARGS "xlib")
++ qt_configure_add_summary_entry(ARGS "xcb-xlib")
++ qt_configure_add_summary_entry(ARGS "egl_x11")
++ qt_configure_add_summary_entry(ARGS "xkbcommon-x11")
++ qt_configure_add_summary_entry(ARGS "xcb-sm")
++ qt_configure_end_summary_section() # end of "X11 specific" section
++ qt_configure_end_summary_section() # end of "Features used by QPA backends" section
++ qt_configure_add_summary_section(NAME "QPA backends")
++ qt_configure_add_summary_entry(ARGS "directfb")
++ qt_configure_add_summary_entry(ARGS "eglfs")
++ qt_configure_add_summary_section(NAME "EGLFS details")
++ qt_configure_add_summary_entry(ARGS "eglfs_openwfd")
++ qt_configure_add_summary_entry(ARGS "eglfs_viv")
++ qt_configure_add_summary_entry(ARGS "eglfs_viv_wl")
++ qt_configure_add_summary_entry(ARGS "eglfs_rcar")
++ qt_configure_add_summary_entry(ARGS "eglfs_egldevice")
++ qt_configure_add_summary_entry(ARGS "eglfs_gbm")
++ qt_configure_add_summary_entry(ARGS "eglfs_vsp2")
++ qt_configure_add_summary_entry(ARGS "eglfs_mali")
++ qt_configure_add_summary_entry(ARGS "eglfs_brcm")
++ qt_configure_add_summary_entry(ARGS "eglfs_x11")
++ qt_configure_end_summary_section() # end of "EGLFS details" section
++ qt_configure_add_summary_entry(ARGS "linuxfb")
++ qt_configure_add_summary_entry(ARGS "vnc")
++ qt_configure_add_summary_entry(ARGS "vkkhrdisplay")
++ qt_configure_add_summary_entry(
++ ARGS "integrityfb"
++ CONDITION INTEGRITY
++ )
++ qt_configure_add_summary_section(NAME "QNX")
++ qt_configure_add_summary_entry(ARGS "lgmon")
++ qt_configure_add_summary_entry(ARGS "qqnx_imf")
++ qt_configure_end_summary_section() # end of "QNX" section
++ qt_configure_add_summary_section(NAME "XCB")
++ qt_configure_add_summary_entry(ARGS "system-xcb-xinput")
++ qt_configure_add_summary_section(NAME "GL integrations")
++ qt_configure_add_summary_entry(ARGS "xcb-glx-plugin")
++ qt_configure_add_summary_entry(ARGS "xcb-glx")
++ qt_configure_add_summary_entry(ARGS "xcb-egl-plugin")
++ qt_configure_end_summary_section() # end of "GL integrations" section
++ qt_configure_end_summary_section() # end of "XCB" section
++ qt_configure_add_summary_section(NAME "Windows")
++ qt_configure_add_summary_entry(ARGS "direct2d")
++ qt_configure_add_summary_entry(ARGS "direct2d1_1")
++ qt_configure_add_summary_entry(ARGS "directwrite")
++ qt_configure_add_summary_entry(ARGS "directwrite3")
++ qt_configure_add_summary_entry(ARGS "directwritecolrv1")
++ qt_configure_end_summary_section() # end of "Windows" section
++ qt_configure_add_summary_section(NAME "Wayland")
++ qt_configure_add_summary_entry(ARGS "wayland-client")
++ qt_configure_add_summary_section(NAME "Hardware Integrations")
++ qt_configure_add_summary_entry(ARGS "wayland-egl")
++ qt_configure_add_summary_entry(ARGS "wayland-brcm")
++ qt_configure_add_summary_entry(ARGS "wayland-drm-egl-server-buffer")
++ qt_configure_add_summary_entry(ARGS "wayland-libhybris-egl-server-buffer")
++ qt_configure_add_summary_entry(ARGS "wayland-dmabuf-server-buffer")
++ qt_configure_add_summary_entry(ARGS "wayland-shm-emulation-server-buffer")
++ qt_configure_add_summary_entry(ARGS "wayland-vulkan-server-buffer")
++ qt_configure_end_summary_section() # end of "Qt Wayland Drivers" section
++ qt_configure_add_summary_section(NAME "Shell Integrations")
++ qt_configure_add_summary_entry(ARGS "wayland-client-xdg-shell")
++ qt_configure_add_summary_entry(ARGS "wayland-client-wl-shell")
++ qt_configure_end_summary_section() # end of "Shell Integrations" section
++ qt_configure_end_summary_section() # end of "Wayland" section
++ qt_configure_end_summary_section() # end of "QPA backends" section
++ qt_configure_add_report_entry(
++ TYPE NOTE
++ MESSAGE "XCB support on macOS is minimal and untested. Some features will not work properly or at all (e.g. OpenGL, desktop services or accessibility), or may depend on your system and XQuartz setup."
++ CONDITION QT_FEATURE_xcb AND APPLE
++ )
++ qt_configure_add_report_entry(
++ TYPE NOTE
++ MESSAGE "Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing."
++ CONDITION QT_FEATURE_accessibility AND QT_FEATURE_xcb AND NOT QT_FEATURE_accessibility_atspi_bridge
++ )
++ qt_configure_add_report_entry(
++ TYPE WARNING
++ MESSAGE "No QPA platform plugin enabled! This will produce a Qt that cannot run GUI applications. See \"Platform backends\" in the output of --help."
++ CONDITION QT_FEATURE_gui AND LINUX AND NOT ANDROID AND NOT QT_FEATURE_xcb AND NOT QT_FEATURE_eglfs AND NOT QT_FEATURE_directfb AND NOT QT_FEATURE_linuxfb
++ )
++ qt_configure_add_report_entry(
++ TYPE ERROR
++ MESSAGE "The OpenGL functionality tests failed! You might need to modify the OpenGL package search path by setting the OpenGL_DIR CMake variable to the OpenGL library's installation directory."
++ CONDITION QT_FEATURE_gui AND NOT WATCHOS AND NOT VISIONOS AND ( NOT INPUT_opengl STREQUAL 'no' ) AND NOT QT_FEATURE_opengl_desktop AND NOT QT_FEATURE_opengles2 AND NOT QT_FEATURE_opengl_dynamic
++ )
++ qt_configure_add_report_entry(
++ TYPE WARNING
++ MESSAGE "Accessibility disabled. This configuration of Qt is unsupported."
++ CONDITION NOT QT_FEATURE_accessibility
++ )
++ qt_configure_add_report_entry(
++ TYPE ERROR
++ MESSAGE "XCB plugin requires xkbcommon and xkbcommon-x11, but -no-xkbcommon was provided."
++ CONDITION ( NOT INPUT_xcb STREQUAL '' ) AND ( NOT INPUT_xcb STREQUAL 'no' ) AND INPUT_xkbcommon STREQUAL 'no'
++ )
++ qt_configure_add_report_entry(
++ TYPE ERROR
++ MESSAGE "The desktopservices feature is required on macOS and iOS, and cannot be disabled."
++ CONDITION APPLE AND NOT QT_FEATURE_desktopservices
++ )
++ qt_configure_add_report_entry(
++ TYPE NOTE
++ MESSAGE "Qt Gui has been built without 'qtwaylandscanner' feature. This feature is required for building Qt Wayland Client."
++ CONDITION NOT QT_FEATURE_waylandscanner AND QT_FEATURE_wayland_client
++ )
++ qt_configure_add_report_entry(
++ TYPE NOTE
++ MESSAGE "Qt Gui has been built without 'wayland' feature. This feature is required for building Qt Wayland Client."
++ CONDITION NOT QT_FEATURE_wayland AND QT_FEATURE_wayland_client
++ )
++
++ #### Inputs
++
++
++
++ #### Libraries
++
++
++ #### Tests
++
++
++ #### Features
++