@@ -12,6 +12,11 @@ config BR2_PACKAGE_QT6_ARCH_SUPPORTS
default y if BR2_sparc64
depends on BR2_USE_MMU
+config BR2_PACKAGE_QT6_GL_AVAILABLE
+ bool
+ default y
+ depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES
+
comment "qt6 needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8, host gcc >= 8"
depends on !BR2_PACKAGE_QT5
depends on BR2_PACKAGE_QT6_ARCH_SUPPORTS
@@ -43,11 +43,109 @@ config BR2_PACKAGE_QT6BASE_DBUS
config BR2_PACKAGE_QT6BASE_GUI
bool "gui module"
select BR2_PACKAGE_FREETYPE
+ # At least one graphic backend must be enabled, so enable
+ # linuxfb if nothing is enabled.
+ select BR2_PACKAGE_QT6BASE_LINUXFB if \
+ !BR2_PACKAGE_QT6BASE_DIRECTFB && \
+ !BR2_PACKAGE_QT6BASE_XCB && \
+ !BR2_PACKAGE_QT6BASE_EGLFS
help
This option enables the Qt6Gui library.
if BR2_PACKAGE_QT6BASE_GUI
+config BR2_PACKAGE_QT6BASE_WIDGETS
+ bool "widgets module"
+ select BR2_PACKAGE_XLIB_LIBXEXT if BR2_PACKAGE_QT6BASE_XCB
+ help
+ This option enables the Qt6Widgets library.
+
+comment "OpenGL support needs an OpenGL-capable backend"
+ depends on !BR2_PACKAGE_QT6_GL_AVAILABLE
+
+config BR2_PACKAGE_QT6BASE_OPENGL
+ bool "OpenGL support"
+ depends on BR2_PACKAGE_QT6_GL_AVAILABLE
+ help
+ This option enables OpenGL support.
+
+if BR2_PACKAGE_QT6BASE_OPENGL
+
+choice
+ prompt "OpenGL API"
+ help
+ Select OpenGL API.
+
+config BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP
+ bool "Desktop OpenGL"
+ depends on BR2_PACKAGE_HAS_LIBGL
+ help
+ Use desktop OpenGL.
+
+config BR2_PACKAGE_QT6BASE_OPENGL_ES2
+ bool "OpenGL ES 2.0+"
+ depends on BR2_PACKAGE_HAS_LIBGLES
+ help
+ Use OpenGL ES 2.0 and later versions.
+
+endchoice
+
+config BR2_PACKAGE_QT6BASE_OPENGL_LIB
+ bool "opengl module"
+ select BR2_PACKAGE_QT6BASE_WIDGETS
+ help
+ This option enables the Qt6OpenGL library. This library
+ includes OpenGL support classes provided to ease porting
+ from Qt 4.x.
+
+endif
+
+config BR2_PACKAGE_QT6BASE_LINUXFB
+ bool "linuxfb support"
+
+config BR2_PACKAGE_QT6BASE_DIRECTFB
+ bool "directfb support"
+ depends on BR2_PACKAGE_DIRECTFB
+
+comment "directfb backend available if directfb is enabled"
+ depends on !BR2_PACKAGE_DIRECTFB
+
+config BR2_PACKAGE_QT6BASE_XCB
+ bool "X.org XCB support"
+ depends on BR2_PACKAGE_XORG7
+ select BR2_PACKAGE_XLIB_LIBX11
+ select BR2_PACKAGE_LIBXCB
+ select BR2_PACKAGE_XCB_UTIL_IMAGE
+ select BR2_PACKAGE_XCB_UTIL_KEYSYMS
+ select BR2_PACKAGE_XCB_UTIL_RENDERUTIL
+ select BR2_PACKAGE_XCB_UTIL_WM
+ select BR2_PACKAGE_LIBXKBCOMMON
+
+comment "X.org XCB backend available if X.org is enabled"
+ depends on !BR2_PACKAGE_XORG7
+
+config BR2_PACKAGE_QT6BASE_EGLFS
+ bool "eglfs support"
+ depends on BR2_PACKAGE_HAS_LIBEGL
+ depends on BR2_PACKAGE_QT6_GL_AVAILABLE
+ select BR2_PACKAGE_QT6BASE_OPENGL
+
+comment "eglfs backend available if OpenGL and EGL are enabled"
+ depends on !BR2_PACKAGE_HAS_LIBEGL || !BR2_PACKAGE_QT6_GL_AVAILABLE
+
+config BR2_PACKAGE_QT6BASE_DEFAULT_QPA
+ string "Default graphical platform"
+ help
+ Choose the default platform abstraction to use for graphical
+ applications (e.g xcb, linuxfb, eglfs, ...). If this is
+ empty, the default for your architecture will be used
+ (usually this is eglfs).
+
+ You can get a list of supported platforms by running a Qt
+ application with the option "-platform help" on your
+ target. You can choose a different platform at runtime with
+ the -platform option.
+
config BR2_PACKAGE_QT6BASE_FONTCONFIG
bool "fontconfig support"
select BR2_PACKAGE_FONTCONFIG
@@ -182,10 +182,94 @@ else
QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=OFF
endif
+# Uses libgbm from mesa3d
+ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
+QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON
+QT6BASE_DEPENDENCIES += mesa3d
+else ifeq ($(BR2_PACKAGE_GCNANO_BINARIES),y)
+QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON
+QT6BASE_DEPENDENCIES += gcnano-binaries
+else ifeq ($(BR2_PACKAGE_TI_SGX_LIBGBM),y)
+QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON
+QT6BASE_DEPENDENCIES += ti-sgx-libgbm
+else ifeq ($(BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_WL),y)
+QT6BASE_CONF_OPTS += -DFEATURE_gbm=ON
+QT6BASE_DEPENDENCIES += imx-gpu-viv
+else
+QT6BASE_CONF_OPTS += -DFEATURE_gbm=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y)
+QT6BASE_CONF_OPTS += -DFEATURE_eglfs=ON
+QT6BASE_DEPENDENCIES += libegl
+else
+QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP),y)
+QT6BASE_CONF_OPTS += -DFEATURE_opengl=ON -DFEATURE_opengl_desktop=ON
+QT6BASE_DEPENDENCIES += libgl
+else ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_ES2),y)
+QT6BASE_CONF_OPTS += -DFEATURE_opengl=ON -DFEATURE_opengles2=ON
+QT6BASE_DEPENDENCIES += libgles
+else
+QT6BASE_CONF_OPTS += -DFEATURE_opengl=OFF -DINPUT_opengl=no
+endif
+
+# only enable gtk support if libgtk3 X11 backend is enabled
+ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy)
+QT6BASE_CONF_OPTS += -DFEATURE_gtk3=ON
+QT6BASE_DEPENDENCIES += libgtk3
+else
+QT6BASE_CONF_OPTS += -DFEATURE_gtk3=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y)
+QT6BASE_CONF_OPTS += -DFEATURE_widgets=ON
+
+ifeq ($(BR2_PACKAGE_QT6BASE_LINUXFB),y)
+QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=ON
+else
+QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_QT6BASE_DIRECTFB),y)
+QT6BASE_CONF_OPTS += -DFEATURE_directfb=ON
+QT6BASE_DEPENDENCIES += directfb
+else
+QT6BASE_CONF_OPTS += -DFEATURE_directfb=OFF
+endif
+
+ifeq ($(BR2_PACKAGE_QT6BASE_XCB),y)
+QT6BASE_CONF_OPTS += \
+ -DFEATURE_xcb=ON \
+ -DFEATURE_xcb_xlib=ON \
+ -DFEATURE_xkbcommon=ON \
+ -DFEATURE_xkbcommon_x11=ON
+QT6BASE_DEPENDENCIES += \
+ libxcb \
+ xcb-util-wm \
+ xcb-util-image \
+ xcb-util-keysyms \
+ xcb-util-renderutil \
+ xlib_libX11 \
+ libxkbcommon
+QT6BASE_DEPENDENCIES += xlib_libXext
+else
+QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF
+endif
+
+else
+QT6BASE_CONF_OPTS += -DFEATURE_widgets=OFF
+endif
+
else
QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF
endif
+QT6BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT6BASE_DEFAULT_QPA))
+QT6BASE_CONF_OPTS += $(if $(QT6BASE_DEFAULT_QPA),-DQT_QPA_DEFAULT_PLATFORM=$(QT6BASE_DEFAULT_QPA))
+
ifeq ($(BR2_PACKAGE_OPENSSL),y)
QT6BASE_CONF_OPTS += -DINPUT_openssl=yes
QT6BASE_DEPENDENCIES += openssl
This is a rather large patch as most of these options interact with each other one way or another, so it's very difficult to split it much further into sensible patches that still work Signed-off-by: Jesse Van Gavere <jesseevg@gmail.com> --- package/qt6/Config.in | 5 ++ package/qt6/qt6base/Config.in | 98 ++++++++++++++++++++++++++++++++++ package/qt6/qt6base/qt6base.mk | 84 +++++++++++++++++++++++++++++ 3 files changed, 187 insertions(+)