Now that ANDROID_EMBEDDED is not set by default anymore, we start
descending into Android specific sub-directories. This patch generates a
stub file but the Java bits still need to be ported.
Change-Id: Icbfc3ad2c1ef266980161bca081c7c4275873efd
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Do not set ANDROID_EMBEDDED unconditionally, as that for now is the
least likely configuration and it won't compile when the sysroot is real
Android.
If this gets revived, then it can be done by setting ANDROID_EMBEDDED in
the cache file directly via the cmake command line.
Change-Id: Ic1e1731f981414bd90b89fe91eaf0543a87d8c88
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
The warning used to be a fatal error, until we found out that certain
packages might provide optional targets, or provide one target
out of a possible set.
Until we figure out a better way to deal with that, remove the
barrage of warnings while configuring.
Change-Id: Iacf93a997a8f87f81167ac7c4cc991212e7fca5d
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Jean-Michaël Celerier <jean-michael.celerier@kdab.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
We have find module wrappers for various system libs that use
FindPkgConfig. The _FOUND variable will be set to 1 if pkg-config
--exists returned true, but the imported target will not be created when
for example the provided library paths or header include paths are
outside of the sysroot - a good sanity check by cmake.
We require the targets for use though, so therefore we must unset the
_FOUND variable if we can't locate the targets.
Change-Id: Ia0dea657684a1847148664521265c42585890645
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
We use
qt_find_package(SQLite3 PROVIDED_TARGETS SQLite::SQLite3)
which intends to find cmake's FindSQLite3.cmake and expects the
existence of the corresponding target. However qt_find_package first
tries to call find_package in config mode, which does not interact well
with vcpkg's sqlite, where sqlite3-config.cmake is provided to support
multi-config targets. So that call will appear to succeed, yet the
expected targets are not there of course.
Therefore this patch adds a sanity check for the target existence and
allows for a fallback to the module mode for find_package, in order to
find CMake's FindSQLite3.cmake.
Change-Id: I660f26c38369c3504df1c590e9d3a51ff1f65c6c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Also fix the QT_BUILD_SHARED_LIBS usage. While building qtbase, it
is assigned later than the call for
qt_generate_global_config_pri_file(), so it used always choose static.
Make sure to check for BUILD_SHARED_LIBS as well.
Change-Id: I66f03e5adacc89646147fc96154bee8002b2b9cc
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
We used to copy a qconfig.cpp.in file verbatim.
Add some plumbing to actually compute the strings and their lengths
as it is done in qtbase/configure.pri.
Also make sure to replace the hardcoded linux mkspec with one that is
automatically determined.
Of course both the detection of the mkspec, and the hardcoded strings
for include, lib, etc. should be fixed in the future.
This is a stepping stone to allow building a Qt application using
the qmake built by CMake.
Change-Id: I2e6754f44b20b09b09d14fd85785d56288e6517b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Generate module .pri files
* Generate qconfig.pri
* Propagate MODULE_CONFIG from the .pro files
This enables the basic use-case of simple application builds that for
example use the moc. Omitted from the patch is support for private
module configurations, prl files (should we do this?) and possibly more
hidden gems that need to be implemented to for example support building
Qt modules with qmake.
Task-number: QTBUG-75666
Change-Id: Icbf0d9ccea4cd683e4c38340b9a2320bf7951d0d
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Toolchain files from sysroots (such as Yocto or Android) typically set
the CMAKE_FIND_ROOT_PATH_MODE_PACKAGE to ONLY to ensure that no external
packages are accidentally found. Similar to how we discover the Qt tools
packages for cross-compiling, we need to temporarily change the mode to
BOTH to locate our build internals.
Change-Id: Ib4374ee4a974379213218b7ec430637857ed02e7
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Since LINUX is not set when targeting Android, we must extend these
conditions manually.
Change-Id: Ie78167d452e0806bfa64773c1e311a99f4a28f8c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
We record extra CPU features such as neon, etc. in the sub-architecture
field, which may very well be empty. Allow for that and avoid cmake
warnings about indexed string access beyond the string boundaries.
Change-Id: I63e61c6427d156180039b8ac6f5b0f5f55c36ee8
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
When we replace the PWD key from qmake files and both the base and
current directory are the same, there's no need to add an extra './' to
the current working directory.
This also fixes a unit test in qtsvg as it requires the passed in path
to match exactly to the one outputed in the log files.
Change-Id: Ide9ca6a70493e8039d3af84a9e576d8f6a313f2a
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Under no circumstance must Qt code define a non-public qHash()
overload of a public Qt type. If you can't provide a public qHash()
for the type, you can't use QHash. Period. This is because if we don't
provide a qHash() function, the user will have to provide one, and
then we have an ODR violation, iow: UB.
So, port away from QHash and qHash and use std::unordered_map, which
allows to pass a custom hash function - just what we needed.
Also fix other issues of the code:
- Use a function object as the deleter of the QSharedPointer, to allow
inlining the function call.
- Avoid double lookup in case of a cache miss.
- Don't use direct initialization syntax for pointer variables. That's
just ... weird.
Change-Id: Ica8bff728c1bd1cbb2fb43aa03a99bcb7ac2f7cc
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Otherwise any use of QT_DEPRECATED_SINCE will cause a warning:
src/corelib/global/qglobal.h:382:77: error: expected unqualified-id before ‘)’ token
This amends 220028d37c
Change-Id: Ifa2be1dd8852e4aac0db83b0b4ae15d2f666c550
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
This is meant to keep repo specific functions and macros that should
not pollute QtSetup.cmake. For example QtDeclarativeSetup.cmake
will automatically be included when building qtdeclarative.
Change-Id: I4d26cbb1a7ffafb153a888fc918af337000d5e41
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
The location of the forwarding headers when not yet installed, depends
on whether we do a prefix or non prefix build.
In a prefix build the /include folder should be in the current repo
build dir.
In a non prefix build, it should be under qtbase/include.
But the actual generated files to which the forwarding headers point,
are always in the current repo build directory.
Also syncqt needs to know both the current repo build directory
specified by -builddir, and the output directory specified by
-outdir.
In a prefix build, both are the same.
In a non-prefix build, builddir should be the current repo build dir,
and outddir should be qtbase's build dir.
Also for non-qtbase repo build directories (like declarative),
examples need to have the current_repo_build_dir/include directory
as an include path, so that framework style includes like
#include <QtQml/QQmlEngine>
work correctly.
Take care of all that, and add a bunch of comments explaining the whole
injected / generated headers interaction.
Change-Id: I612ad7549ce499c4979ee994e998b558716d45ca
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Check for the existence of CMakeLists.txt files before trying
to call add_subdirectory on examples, tests and src folders.
Change-Id: I7be76de5f7520c1dd181c610fd1dc2200ac74672
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
Added library mapping information for any projects referencing the
QtNetworkAuth project.
Change-Id: I9c4309d26ee9895f94995d4844ffde4ee4444766
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
These were some hard requirements while porting QtQml .pro files so
that the generated CMake code is syntactically correct and the result
buildable.
This include handling of a few more different condition scopes
and disabling the c++ make_unique feature test.
Change-Id: Iae875ffaf8d100296e8b56b57d076455e5d72006
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
QtQml uses QLALR to generate a grammar, but the qmake qlalr feature
seems to be a general one, so the corresponding CMake implementations
are kept in qtbase for now.
Change-Id: Ibe916878b18155ddc5bb08793dd2075ebfa8f282
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
Fix deprecation warnings - replace qFindChild/Children() with
QObject::findChild/Children() and replace some 0 with nullptr.
Change-Id: If2f01d12fa91d09d98a61f73b0449a6773ac93db
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
QInputDeviceManager::DeviceType is a (non-flag) enum with all of five
values. Using a self-rebalancing rb-tree to map these to an int is
overkill. An array can do the job just as well and better, given the
enum values are consecutive, and even if some don't make sense (like
Unknown), the waste caused by unused array slots is more than
compensated by the lack of any memory allocations. Even more so as the
array API is 1:1 identical with the map's for the use-case at hand.
Saves 1.2KiB in text size on optimized Linux AMD64 GCC 9.1 builds.
Change-Id: I1bfa115ac75e2f7d9a4bd9a0e3f3241bf68c9989
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
As found by GCC, while compiling qt5/qttools/src/distancefieldgenerator/mainwindow.cpp.
Change-Id: I155c0b8b09bd12c12af0bd69e19747485be960e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
RTEMS does not have sys/sem.h
Change-Id: I9fe5c5244a4205521493885b39fa0051abcc4539
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
ALIGN macro exists in RTEMS system headers and in sha3 library.
Change-Id: I00cbb5be5598a6a6ca1f011f199da62d658ef9d5
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
When QT_NO_CAST_FROM_ASCII is in effect, `char == QLatinChar` no longer
compiles, because the QChar(char) ctor has become private.
Fix by supplying the missing mixed-type operators.
[ChangeLog][QtCore][QLatin1Char] Comparison against char now works
even in QT_NO_CAST_FROM_ASCII builds.
Change-Id: I86f5ec8e2ddfcda72f5928086cb298bd00b42544
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
For developer builds, enable the compile commands database by default.
This allows Qt developers to use tools that utilize these (such as
clang-tidy, etc.) without any extra setup.
Change-Id: I79d70ef7dbe7c59864e93593c75f9ff6cd67c2ce
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CMake Build Bot
Replace manual memory management with unique_ptr and manual
re-implementations of QMarginsF with The Real Thing™.
The only noticeable difference should be that the checks for 0 now use
qFuzzyCompare() (by way of QMarginsF::isNull() and its operator==).
[ChangeLog][QtWidgets][QGraphicsWidget] Added QMarginsF overloads of
setContentsMargins() and setWindowFrameMargins().
Change-Id: I6b3bb87015fa52fdde245b7528cca4b8f9ce41e1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
So we add the QTextDocument::ResourceType::MarkdownResource enum value to indicate
the type. QMimeDatabase is generally unable to detect markdown by "magic", so we
need to use the common file extensions to detect it (the same extensions as declared
in the mime database XML).
Change-Id: Ib71f03abd535c17e5a8c99bd92d0a6062e972837
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
It's necessary to make the test pass on certain platforms.
Change-Id: I717d492df437c0ffb75b21d9ef23ce602160fad1
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The --no-stringliteral option got introduced by commit d12d2949d1
for 5.10.0, but already deprecated in commit ff18b02f21 for 5.12.0.
[ChangeLog][uic] uic does not accept the --no-stringliteral/-s option
anymore.
Change-Id: I7a0f647ad91b3760bc826884702bf8581f5565f2
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Some configure.json files contain new lines inside quoted strings,
which is not conformant with the JSON spec.
Add a new json_parser python module which uses pyparsing to preprocess
the json files to remove the new lines inside the quoted strings, and
then hands over the preprocessed content to the regular json module.
Change-Id: I5f8938492068dda5640465cc78f5a7b6be0e709a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
Since its initial implementation, QEventDispatcherWin32 manages a
delivery of the posted events from the window procedure through
WM_QT_SENDPOSTEDEVENTS message. That makes the implementation quite
difficult and unclear. As a result, posted events get stalled,
in case of using nested event loops or other recursion.
The proposed solution is to send posted events at the beginning of
processEvents() only once per iteration of the event loop. However,
in case of using a foreign event loop (e.g. by opening a native
modal dialog), we should leave the emission in the window procedure,
as we don't control its execution.
Task-number: QTBUG-74564
Change-Id: Ib7ce85b65405af6124823dda1451d1370aed9b1a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Flesh out copy-and-pasted code into a function and adjust the coding
style on the go.
Change-Id: I9b8a87d6dd5c33cc1ed9f613fe85daca52309369
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
QElapsedTimer does the job better and without the DST kludges.
Change-Id: Ic4a566f695648cbe069a21ea8d3e84562b665a3c
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
To make their replacements easier to find.
They're in the documentation, but weren't in the source.
Change-Id: Iea936062feaead636e3dd8e93f0b4c82ed8876cb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Use QDateTime::currentMSecsSinceEpoch() instead of a QTime with funky
wrapping at midnight and potential DST glitches.
Change-Id: I2455db5778635fc00b4ffdef6edee6d6793e50eb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Re-ran util/locale_database/cldr2qtimezone.py to add new zones to the
table.
Change-Id: I70258a9abbe9815494291deff528f3c18703de40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
These were in qbytearray.cpp, which doesn't use them, is big and I
intend to move it to a different directory than the header,
qtools_p.h, that declares them. So move them to a small file that does
use them.
Change-Id: I5a4684f8c7628e617546019cc3f01d92d829f085
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Assigning past the end used to be supported, but isn't a good way to
do the job. Exposed by a qtxmlpatterns test that exercised this code,
which gets a warning thanks to Giuseppe's recent changes to QCharRef.
Task-number: QTBUG-76070
Change-Id: Ic254c7ffce60e3b2aafce76ab03ea5db8c68fafc
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
[ChangeLog][QtGui] Added support for filtering Vulkan debug messages in
QVulkanInstance. This is especially useful for processing or suppressing
messages from the validation layers.
Change-Id: Idf0d7889085948daf5b1a53d2a9b11081e967609
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
We'll be adding calendar code here as well, and tools/ was getting
rather crowded, so it looks like time to move out a reasonably
coherent sub-bundle of it all.
Change-Id: I7e8030f38c31aa307f519dd918a43fc44baa6aa1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>