88d57cf241
This adds a new "qt6" VCL plugin based on Qt 6.
Building the plugin is enabled by autogen option '--enable-qt6'
(and optionally setting 'QT6DIR' as needed).
Use the 'SAL_USE_VCLPLUGIN=qt6' environment variable
before running LO to select this VCL plugin.
Taking qt6 into account at all relevant places certainly
still requires follow-up changes, but
this builds and runs with a self-compiled
qtbase from the 'dev' git branch as of commit
3ce0672143d2eb3c3809f82998a4d71c5800d77a.
I didn't see anything obviously broken
in a quick run, but didn't test much.
This reuses and shares the qt5 VCL plugin code;
the qt6 headers and sources for now just
'#include' the qt5 ones.
Version checks are used for the code places that
need different handling to be built against Qt 6.
The build system parts in this commit were mostly done by
copying the qt5 equivalents, then adapting as needed.
Some notes on things I came across while porting
to qt6:
1) At least in my self-compiled Qt versions,
'moc' (the meta-object compiler) is located
in the 'libexec' subdirectory in 'QT6DIR', while the
Qt 5 equivalent is located in the "bin" subdirectory
of 'QT5DIR', so the configure.ac check uses the former.
2) moc does not process classes from the included headers.
Since the headers in 'vcl/inc/qt6' just '#include' the ones
from 'vcl/inc/qt5', running moc on the qt6 headers doesn't work,
so moc is currently run on the qt5 headers for qt6 as well
(s. 'vcl/CustomTarget_qt6_moc.mk').
That will have to be adapted in case the qt6 VCL plugin
uses "own" headers instead of just including the qt5 ones
at some point.
3) QX11Extras has been removed from Qt 6.
[1] says:
> Changes to Qt X11 Extras
>
> The QX11Info class has been removed.
>
> Clients that still rely on the functionality can include the private
> header <QtGui/private/qtx11extras_p.h> as a stopgap solution. To enable
> private headers use QT += core-private with qmake, or add a project
> dependency to Qt::CorePrivate with CMake.
I didn't take any closer look, just dropped the use of
QtX11Extras for qt6 for now.
4) XCB_ICCCM is no longer needed.
It is only used in qt5 to workaround a Qt bug fixed in Qt 5.12, s.
commit
|
||
---|---|---|
.. | ||
.gitignore | ||
config_box2d.h.in | ||
config_buildid.h.in | ||
config_cairo_canvas.h.in | ||
config_clang.h.in | ||
config_crypto.h.in | ||
config_cxxabi.h.in | ||
config_dbus.h.in | ||
config_dconf.h.in | ||
config_eot.h.in | ||
config_extensions.h.in | ||
config_feature_desktop.h.in | ||
config_feature_opencl.h.in | ||
config_features.h.in | ||
config_firebird.h.in | ||
config_folders.h.in | ||
config_fuzzers.h.in | ||
config_gio.h.in | ||
config_global.h.in | ||
config_gpgme.h.in | ||
config_java.h.in | ||
config_langs.h.in | ||
config_lgpl.h.in | ||
config_libcxx.h.in | ||
config_liblangtag.h.in | ||
config_locales.h.in | ||
config_mpl.h.in | ||
config_oauth2.h.in | ||
config_oox.h.in | ||
config_options.h.in | ||
config_options_calc.h.in | ||
config_poppler.h.in | ||
config_probes.h.in | ||
config_python.h.in | ||
config_skia.h.in | ||
config_typesizes.h.in | ||
config_vcl.h.in | ||
config_vclplug.h.in | ||
config_vendor.h.in | ||
config_version.h.in | ||
config_writerperfect.h.in | ||
config_zxing.h.in | ||
README.md |
C/C++ Configuration Created by configure Script
These are configuration files for various features as detected by configure
.
Include only those files you need (in order to reduce rebuilds when a setting changes).
Settings here are only C/C++ #define
directives, so they apply only to C/C++ source,
not to Makefiles.
Adding a New Setting:
- do
AC_DEFINE(HAVE_FOO)
inconfigure.ac
when a setting should be set - choose the proper
config_host/config_XXX.h
file to use- if it is a global setting (such as availability of a compiler feature),
use
config_host/config_global.h
- otherwise check if there is a matching
config_host/config_XXX.h
file - if none matches, add a new one:
- add
config_host/config_XXX.h.in
here, with just#ifndef
include guard - add
AC_CONFIG_HEADERS([config_host/config_XXX.h])
next to the others inconfigure.ac
- add
- if it is a global setting (such as availability of a compiler feature),
use
- add
#define HAVE_FOO 0
to theconfig_host/config_XXX.h
, possibly with a comment (do not use#undef HAVE_FOO
, unless the setting has more values than on/off) - add
#include <config_XXX.h>
before any #ifHAVE_FOO
in a source file - make sure you use
#if HAVE_FOO
for on/off settings, do not use#ifdef