package/qt6/qt6base: new package
This commit proposes a very minimal package for qt6base. It only
supports building QtCore, so it *really* is minimal. But that's a
starting point, which we can progressively build on top. It is based
on initial work from Peter Seiderer.
This minimal QtCore build is however sufficient to build and run
simple non-graphical Qt applications.
A number of comments:
- Even though there's only qt6base for now, many other qt6 modules
will come later on, which is why we're using the same structure as
for qt5, with a subdir for package/qt6/
- Qt6 is mutually exclusive with Qt5. Even though the library names
on the target and the location of the header files are distinct,
the host tools (qmake, moc and al.) have the same name, so at least
for now, we make them mutually exclusive.
- We've chosen to use non-bundled libraries for zlib, bb2,
double-conversion and pcre2, for both the target and the host
qt6base packages.
- Contrary to qt5 where the target package was building the host
tools, now we have a host qt6base package building the host tools,
and which is needed as a dependency for the target qt6base package.
- qt6base is using CMake. However, it strongly recommends to use
Ninja as a backend instead of make, a recommendation that we follow
in this commit. Since we don't have support for Ninja in the
cmake-package infrastructure (yet), we do this manually in
qt6base.mk itself, by passing -Gninja to CMake at configure time,
and then by using cmake --build at build time and cmake --install
at install time, using explicitly provided build and install
commands. Hopefully these can go away once we have support for
Ninja directly in cmake-package.
- We disable a number of features or external libraries using FEATURE
options. However, because there are over 400 FEATURE options in
qt6base, we didn't go all the way to explicitly disabling *all* of
them (which would be needed for both the host and target
packages). We expect that this list of explicit FEATURE options
disabling will need to grow based on the feedback of users and
issues encountered.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
2022-07-25 17:25:20 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE
|
|
|
|
bool "qt6base"
|
|
|
|
select BR2_PACKAGE_DOUBLE_CONVERSION
|
|
|
|
select BR2_PACKAGE_LIBB2
|
|
|
|
select BR2_PACKAGE_PCRE2
|
|
|
|
select BR2_PACKAGE_PCRE2_16
|
|
|
|
select BR2_PACKAGE_ZLIB
|
|
|
|
help
|
|
|
|
Qt is a cross-platform application and UI framework for
|
|
|
|
developers using C++.
|
|
|
|
|
|
|
|
This package corresponds to the qt6base module, which
|
|
|
|
contains the base Qt libraries: QtCore, QtNetwork, QtGui,
|
|
|
|
QtWidgets, etc.
|
|
|
|
|
|
|
|
http://qt.io
|
2022-08-26 15:54:37 +02:00
|
|
|
|
|
|
|
if BR2_PACKAGE_QT6BASE
|
|
|
|
|
2022-08-26 15:54:38 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_CONCURRENT
|
|
|
|
bool "concurrent module"
|
|
|
|
help
|
|
|
|
This options enables the Qt6Concurrent library.
|
|
|
|
|
2022-08-26 15:54:41 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_DBUS
|
|
|
|
bool "DBus module"
|
|
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
select BR2_PACKAGE_DBUS
|
|
|
|
help
|
|
|
|
This option enables the D-Bus module.
|
|
|
|
|
2023-02-07 18:17:09 +01:00
|
|
|
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 \
|
2023-02-07 18:17:14 +01:00
|
|
|
!BR2_PACKAGE_QT6BASE_XCB && \
|
|
|
|
!BR2_PACKAGE_QT6BASE_EGLFS
|
2023-02-07 18:17:09 +01:00
|
|
|
help
|
|
|
|
This option enables the Qt6Gui library.
|
|
|
|
|
|
|
|
if BR2_PACKAGE_QT6BASE_GUI
|
|
|
|
|
|
|
|
config BR2_PACKAGE_QT6BASE_LINUXFB
|
|
|
|
bool "linuxfb support"
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2023-02-07 18:17:14 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_EGLFS
|
|
|
|
bool "eglfs support"
|
|
|
|
depends on BR2_PACKAGE_HAS_LIBEGL
|
|
|
|
depends on BR2_PACKAGE_HAS_LIBGBM
|
|
|
|
depends on BR2_PACKAGE_QT6_GL_SUPPORTS
|
|
|
|
select BR2_PACKAGE_QT6BASE_OPENGL
|
|
|
|
|
2023-02-07 18:17:15 +01:00
|
|
|
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.
|
|
|
|
|
2023-02-07 18:17:14 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_OPENGL
|
|
|
|
bool "OpenGL support"
|
|
|
|
depends on BR2_PACKAGE_QT6_GL_SUPPORTS
|
|
|
|
help
|
|
|
|
This option enables OpenGL support.
|
|
|
|
|
|
|
|
comment "OpenGL support needs an OpenGL-capable backend"
|
|
|
|
depends on !BR2_PACKAGE_QT6_GL_SUPPORTS
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
2023-02-07 18:17:10 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_FONTCONFIG
|
|
|
|
bool "fontconfig support"
|
|
|
|
select BR2_PACKAGE_FONTCONFIG
|
|
|
|
help
|
|
|
|
This option enables Fontconfig support using the system
|
|
|
|
fontconfig library.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_QT6BASE_HARFBUZZ
|
|
|
|
bool "harfbuzz support"
|
|
|
|
select BR2_PACKAGE_HARFBUZZ if \
|
|
|
|
BR2_TOOLCHAIN_HAS_SYNC_4 && \
|
|
|
|
BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
|
|
|
|
help
|
|
|
|
This option enables HarfBuzz support (either system harfbuzz
|
|
|
|
if the toolchain supports __sync for 4 bytes, or the qt
|
|
|
|
provided one which avoids this dependency by using QAtomic).
|
|
|
|
|
2023-02-07 18:17:11 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_GIF
|
|
|
|
bool "GIF support"
|
|
|
|
help
|
|
|
|
This compiles and installs the plugin for GIF reading support.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_QT6BASE_JPEG
|
|
|
|
bool "JPEG support"
|
|
|
|
select BR2_PACKAGE_JPEG
|
|
|
|
help
|
|
|
|
This option enables JPEG support using the system libjpeg
|
|
|
|
library.
|
|
|
|
|
|
|
|
config BR2_PACKAGE_QT6BASE_PNG
|
|
|
|
bool "PNG support"
|
|
|
|
select BR2_PACKAGE_LIBPNG
|
|
|
|
help
|
|
|
|
This option enables PNG support using the system libpng
|
|
|
|
library.
|
|
|
|
|
2023-02-07 18:17:12 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_WIDGETS
|
|
|
|
bool "widgets module"
|
|
|
|
help
|
|
|
|
This option enables the Qt6Widgets library.
|
|
|
|
|
2023-02-07 18:17:19 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_PRINTSUPPORT
|
|
|
|
bool "printing support"
|
|
|
|
# yes, print support needs widgets
|
|
|
|
depends on BR2_PACKAGE_QT6BASE_WIDGETS
|
|
|
|
help
|
|
|
|
This option enables printing support, optionally using CUPS
|
|
|
|
if available.
|
|
|
|
|
2023-02-07 18:17:09 +01:00
|
|
|
endif
|
|
|
|
|
2022-08-26 15:54:37 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_NETWORK
|
|
|
|
bool "network module"
|
2023-03-17 20:33:26 +01:00
|
|
|
select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL
|
2022-08-26 15:54:37 +02:00
|
|
|
help
|
|
|
|
This options enables the Qt6Network library.
|
|
|
|
|
2022-08-26 15:54:52 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_SQL
|
|
|
|
bool "sql module"
|
|
|
|
help
|
|
|
|
This options enables the Qt6Sql library.
|
|
|
|
|
|
|
|
if BR2_PACKAGE_QT6BASE_SQL
|
|
|
|
config BR2_PACKAGE_QT6BASE_MYSQL
|
|
|
|
bool "MySQL Plugin"
|
|
|
|
depends on BR2_INSTALL_LIBSTDCPP
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
|
|
|
select BR2_PACKAGE_MYSQL
|
|
|
|
help
|
|
|
|
Build MySQL plugin
|
|
|
|
|
|
|
|
comment "MySQL plugin needs a toolchain w/ C++, threads"
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
|
|
|
|
|
2022-08-26 15:54:53 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_PSQL
|
|
|
|
bool "PostgreSQL Plugin"
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
depends on !BR2_STATIC_LIBS
|
|
|
|
depends on BR2_USE_WCHAR
|
|
|
|
depends on !BR2_OPTIMIZE_FAST
|
|
|
|
select BR2_PACKAGE_POSTGRESQL
|
|
|
|
help
|
|
|
|
Build PostgreSQL plugin
|
|
|
|
|
|
|
|
comment "PostgreSQL plugin needs a toolchain w/ wchar, dynamic library"
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR
|
|
|
|
|
|
|
|
comment "PostgreSQL plugin can't be built with optimize for fast"
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
depends on BR2_OPTIMIZE_FAST
|
|
|
|
|
2022-08-26 15:54:54 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_SQLITE
|
|
|
|
bool "SQLite plugin"
|
|
|
|
select BR2_PACKAGE_SQLITE
|
|
|
|
select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA
|
|
|
|
help
|
|
|
|
Build SQLite plugin
|
|
|
|
|
2022-08-26 15:54:52 +02:00
|
|
|
endif
|
|
|
|
|
2022-08-26 15:54:42 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_SYSLOG
|
|
|
|
bool "syslog support"
|
|
|
|
help
|
|
|
|
Logs to the standard UNIX logging mechanism.
|
|
|
|
|
2022-08-26 15:54:40 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_TEST
|
|
|
|
bool "test module"
|
|
|
|
help
|
|
|
|
This options enables the Qt6Test library.
|
|
|
|
|
2023-02-07 18:17:16 +01:00
|
|
|
config BR2_PACKAGE_QT6BASE_TSLIB
|
|
|
|
bool "Enable Tslib support"
|
|
|
|
select BR2_PACKAGE_TSLIB
|
|
|
|
help
|
|
|
|
This options enables the Tslib plugin
|
|
|
|
|
2022-08-26 15:54:39 +02:00
|
|
|
config BR2_PACKAGE_QT6BASE_XML
|
|
|
|
bool "XML module"
|
|
|
|
help
|
|
|
|
This options enables the Qt6Xml library.
|
|
|
|
|
2022-08-26 15:54:37 +02:00
|
|
|
endif
|