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
|
|
|
# based on src/corelib/global/qprocessordetection.h
|
|
|
|
config BR2_PACKAGE_QT6_ARCH_SUPPORTS
|
|
|
|
bool
|
|
|
|
# no support for ARMv4
|
|
|
|
default y if BR2_ARM_CPU_ARMV5 || BR2_ARM_CPU_ARMV6 || BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A
|
|
|
|
default y if BR2_i386
|
|
|
|
default y if BR2_x86_64
|
|
|
|
default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
|
|
|
|
default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
|
|
|
|
# sparc 32-bit is supposedly supported, but has issues due to
|
|
|
|
# the need of libatomic
|
|
|
|
default y if BR2_sparc64
|
|
|
|
depends on BR2_USE_MMU
|
|
|
|
|
2023-02-07 18:17:14 +01:00
|
|
|
config BR2_PACKAGE_QT6_GL_SUPPORTS
|
|
|
|
bool
|
|
|
|
default y
|
|
|
|
depends on BR2_PACKAGE_HAS_LIBGL || BR2_PACKAGE_HAS_LIBGLES
|
|
|
|
|
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
|
|
|
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
|
|
|
|
depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_8 || \
|
|
|
|
!BR2_HOST_GCC_AT_LEAST_8 || !BR2_TOOLCHAIN_HAS_THREADS || \
|
|
|
|
BR2_STATIC_LIBS || !BR2_USE_WCHAR
|
|
|
|
|
|
|
|
menuconfig BR2_PACKAGE_QT6
|
|
|
|
bool "Qt6"
|
|
|
|
depends on BR2_INSTALL_LIBSTDCPP
|
|
|
|
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8
|
|
|
|
depends on BR2_HOST_GCC_AT_LEAST_8
|
|
|
|
depends on BR2_PACKAGE_QT6_ARCH_SUPPORTS
|
|
|
|
depends on BR2_TOOLCHAIN_HAS_THREADS
|
|
|
|
depends on !BR2_STATIC_LIBS
|
|
|
|
depends on BR2_USE_WCHAR
|
|
|
|
depends on !BR2_PACKAGE_QT5
|
|
|
|
select BR2_PACKAGE_QT6BASE
|
|
|
|
help
|
|
|
|
This option enables the Qt6 framework. Sub-options allow to
|
|
|
|
select which modules should be built.
|
|
|
|
|
|
|
|
http://qt.io
|
|
|
|
|
|
|
|
if BR2_PACKAGE_QT6
|
|
|
|
|
|
|
|
source "package/qt6/qt6base/Config.in"
|
2023-02-06 14:38:36 +01:00
|
|
|
source "package/qt6/qt6serialbus/Config.in"
|
2022-08-24 11:49:00 +02:00
|
|
|
source "package/qt6/qt6serialport/Config.in"
|
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
|
|
|
|
|
|
|
endif
|