Commit Graph

53782 Commits

Author SHA1 Message Date
Ievgenii Meshcheriakov
5175cd89ef tst_qfile: Remove unused methods
Remove at() and chmod() methods of MyEngine class. Those methods
are not used anywhere and look like remainder of old API to me.

Change-Id: I754a4281124cb8c9d74e79a9a2b99fb1b1f41e52
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-11-03 13:42:36 +01:00
Ievgenii Meshcheriakov
57cab7b9a8 QAbstractFileEngine: Remove useless method overrides
Remove useless overrides of QAbstractFileEngine methods from the derived
classes. Also remove "This virtual function must be reimplemented by
all subclasses" passages from the QAbstractFileEngine's documentation.
There are pure virtual methods for such use cases. QAbstractFileEngine
already contains useful defaults for classes not supporting all the
functionality.

Change-Id: Ia25965854f3809b15d7502da3749cc2f3414bbc3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-11-03 13:42:35 +01:00
Mårten Nordheim
29f86b5698 QMultiHash: Add forgotten documentation
After the split of QHash and QMultiHash this function was not documented
since it was previously inherited from QHash.

As a drive-by also update 'int' to 'qsizetype' in docs

Pick-to: 6.2
Change-Id: I5d168886f13c2cdd4482038e66d0cf218789c847
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2021-11-03 07:41:56 +00:00
Morten Johan Sørvig
e3a5bd3e55 Add QEventLoop::ProcessEventsFlag::ApplicationExec
The wasm event dispatcher needs to differentiate between
top-level QCoreApplication::exec() and QEventLoop::exec()
calls.

Add the “ApplicationExec” enum value. The value is
undocumented, like EventLoopExec and DialogExec.

Change-Id: I2924daee39ef85a3ea7e766e317b3071b5d7f541

Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-11-03 08:52:39 +02:00
Tang Haixiang
f5eda09a63 Modify the target Square in the puzzle
targetSquare judges which square the position falls in. The point
scaling calculation method should not be used. The return value of
QPoint operator/ will be rounded up. Modified to separate the x and
y of position to calculate.

Fixes: QTBUG-81842
Change-Id: I70375185a78ba47efe01be3fd490e0fb0f456e17
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-11-03 01:10:32 +00:00
Laszlo Agocs
ace53d282d rhi: Extend docs regarding QImage and data lifetime
Change-Id: I45e0e53af7e6ba084f6305c3097c6a0ff65fb458
Pick-to: 6.2
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-11-02 22:21:06 +01:00
Laszlo Agocs
711c55b632 rhi: vk: fix offscreen frame command completion wait
Remove the if-there-is-more-than-one-swapchain condition. Surely in a
(onscreen) 0, (onscreen) 1, (offscreen) 0 frame sequence the wait is
essential when starting the offscreen frame. Otherwise we may be
deferred-releasing resources from the still active onscreen #0 frame.

The problem is only apparent with certain frame slot change sequences.
For instance (onscreen) 0, (offscreen) 1, (onscreen) 0 would not show
any problems.

Pick-to: 6.2
Change-Id: I705a0a3ab0b4bc9e4dc2b1c6ff60025d04c739b3
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-11-02 22:21:06 +01:00
Alexey Edelev
ad2143b8d2 Add CMake variable to run androiddeployqt with --verbose argument
Change-Id: Ib913e0471ef9c7efcc64c52de21a2e4c7d44e416
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2021-11-02 19:51:42 +01:00
Kai Köhne
df2aa08187 CMake: Improve comment about how to disable warnings
Change-Id: I4367f2b585b7fdfaba2a815be885157a1db990cd
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-02 19:16:10 +01:00
Alexandru Croitor
67dadc7e34 CMake: Fix EntryPointMinGW32Target to be found in top-level build
The file needs to be copied into the top-level build config dir.

Amends 7531994379

Pick-to: 6.2
Fixes: QTBUG-97919
Change-Id: I8e0b525cfbd89ce5c7b07b62bfc023a7f8650cb9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2021-11-02 18:33:52 +01:00
Wang Fei
62c2d990f9 Rename LinkName to AbsoluteLinkTarget
The existing symLinkTarget() always resolves the symlink
target to an absolute path; It will be clearer to change
LinkName to AbsoluteLinkTarget. It is ready for the commit
about add symLinkPath() to read the raw link path.

Fixes: QTBUG-96761
Change-Id: I8da7e23b066c9ac1a16abb691aa1c4a5f1ff8361
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Wang Fei <wangfeia@uniontech.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-11-03 00:42:50 +08:00
Tor Arne Vestbø
d39b5f376d coin: Add feature to enable warnings as errors
Pick-to: 6.2 5.15
Change-Id: If770f3e416674173316d3ef052c195070e28ede6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-02 17:00:37 +01:00
Alexey Edelev
d05da5f306 Add Android qml staging prefix to qml import paths
Qml modules are staged to the special folder when building for android.
To make them visible we need add this folder to qml imports paths that
are used by qmlimportscanner.

Fix typo in _qt_native_qml_import_paths property name when converting
QT_QML_IMPORT_PATH property.

Pick-to: 6.2
Task-number: QTBUG-96898
Change-Id: Iaf1e06c64553e8ea27f020226095da36e1f9d881
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-02 15:22:48 +01:00
Yuhang Zhao
3fe89eec61 qoperatingsystemversion_win: cache the retrieved version
Make it a static variable to avoid acquiring
the system version multiple times. The system
version won't change at runtime after all.

Pick-to: 6.2
Change-Id: Ic381e5dd7b482fedc9c01242482559ffca9d3f2b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2021-11-02 12:40:26 +00:00
Paul Olav Tvete
059c48b908 Revert "Add support for EGL_EXT_platform_xcb"
This reverts commit 816c5de460.

Reason for revert: Causes crash on Nvidia when Qt is configured
with -opengl es2

Fixes: QTBUG-97738
Change-Id: I9fe43146b922fc770890a144fdb1bd1c564635bb
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-11-02 14:05:27 +02:00
Richard Moe Gustavsen
8ba3a2f911 Revert "Code style fix"
This reverts commit e1d7df5ce9.

The offending patch removed handling of page-up and page-down
shortcuts in QScrollView (including subclasses like QTextBrowser).

Pick-to: 6.2
Fixes: QTBUG-97908
Fixes: QTBUG-90352
Change-Id: If760e983a082edb53e12e1311e2c7f2676d80bb2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
2021-11-02 13:00:43 +01:00
Alexandru Croitor
f04dbdfc97 CMake: Don't create targets if dependencies are not found
If one of the dependencies in QtFooModuleDependencies.cmake is not
found, QtFoo_FOUND will be set to False by find_dependency.

In that case, we should not create imported targets that belong to
that package.
It would be misleading for projects that do target existence checks
instead of package_FOUND checks as well as generally being
incorrect. The created imported targets might be referencing other
targets that would not exist.

Pick-to: 6.2
Fixes: QTBUG-97896
Change-Id: I09198aa3f19be047b27c29329b6e62c30fa09dc0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Craig Scott <craig.scott@qt.io>
2021-11-02 11:51:26 +01:00
Morten Johan Sørvig
25781a1396 wasm: add sse2 compiler flags again
Now with QT_FOR_CONFIG += core-private.

Change-Id: Iadc61e21db6566f20c32595ef1ab83f37bc5c651
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-02 09:00:23 +00:00
Yuhang Zhao
2526df506b Remove pre-Win10 code paths in QtBase
Mostly a removal of dynamically loaded API.
They should all exist on Windows 10 1809
(Qt6's minimum supported version).

accessibility parts left untouched to make
sure MinGW still compiles.

Task-number: QTBUG-84432
Pick-to: 6.2
Change-Id: I7a091fc967bd6b9d18ac2de39db16e3b4b9a76ea
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2021-11-02 13:55:15 +08:00
Volker Hilsheimer
35ddf34988 Add QMenu::menuInAction as a static helper
QAction::menu is deprecated, as it makes QAction (a QtGui class) depend
on QtWidgets. The template hack works, but shouldn't become a permanent
solution and is already deprecated.

To get the QMenu out of a QAction that contains it, add a static helper
to QMenu instead. QAction continues to store the menu pointer so that
we don't have to use a dynamic property or an associative container in
QMenu.

Change-Id: Ieb6a2b1900d2fc2f16dd5a4a8ab7da98604642d3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-11-01 23:22:55 +01:00
Joerg Bornemann
6ab16d52d2 configure: Remove unused facility to define variable assignments
The function qt_commandline_assignment and everything related to it is
removed from configure.  It was only used in qtbase, and all usage has
been removed.

More general variable assignments will be added in a subsequent commit.

Task-number: QTBUG-88210
Change-Id: I7cfa782e89914f2b0dc0277c46e425c8a825557e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-01 22:32:01 +01:00
Thiago Macieira
a9d8794cf0 QCollator: add public, static functions to do comparisons
Collation with the default QCollator object (no numeric, punctuation or
case sensitivity changes) is a common-place occurrence, so add two
functions to do this work.

It's also what QString::localeAwareCompare() calls.

The test ends up testing that default, static collator updates after the
default QLocale changes too.

Task-number: QTBUG-95050
Change-Id: I7e0b82c2d2fe464082d8fffd1696ac77f32840b2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-11-01 22:30:23 +02:00
Edward Welbourne
25d807f629 Correct qcollator_posix.cpp's check against system locale
The check was made against the default locale but the code calls the
system functions (wcscoll, wcsxfrm, wcscmp) for locale-specific
collation, so should be comparing to the system locale's collation
locale (i.e. LC_COLLATE). Also correct the Android-only check in
tst_QCollator::compare() which duplicated the check but neglected the
C locale, which is also supported (via QString::compare).

Pick-to: 6.2
Change-Id: I48c3237dd6825e2070272ab88d95bdb8cbb9fc37
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-11-01 22:30:23 +02:00
Thiago Macieira
48856934ec 3rdparty: update TinyCBOR links to 0.6.0 final release
No code change.

Pick-to: 6.2
Change-Id: Ice04365c72984d07a64dfffd16b28c74ee1c07eb
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-11-01 13:30:23 -07:00
Joerg Bornemann
1bc41f7a7e configure: Remove declaration of the DBUS_[HOST_]PATH variables
These variable were used in Qt5 to specify the install location of the
DBus library.  In Qt6, pkg-config and the usual CMake mechanisms are
used.

Change-Id: Ic3d61d50c1051200c12bac861dc1fbfe0cb8a4a1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-01 21:01:07 +01:00
Joerg Bornemann
eb6fc1cab9 configure: Remove declaration of the MYSQL_PATH variable
This variable was used in Qt5 to specify the install location of the
MySQL library.  In Qt6, MYSQL_INCLUDE_DIRS and MySQL_LIBRARIES serve
this purpose, and MYSQL_PATH is unused.

Change-Id: I2df12b79777af50c719a5b6bc5feadc2c59c0c3d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-01 21:01:07 +01:00
Joerg Bornemann
ce34ed6eab configure: Remove declaration of the OPENSSL_PATH variable
This variable was used in Qt5 to specify the install location of the
OpenSSL library.  In Qt6, OPENSSL_ROOT_DIR serves this purpose, and
OPENSSL_PATH is unused.

Change-Id: I40cc412bb35666dac3dd134ca8bfb67f3d524f80
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-01 21:01:07 +01:00
Lars Knoll
28138aa80a Fix show()/hide() for child windows on xcb
Change e946e6895a implements proper
support for ICCM 4.1.4 window state handling. One issue it addressed
is that a show() after a hide() needs to be delayed until the window
manager/X-server has processed the previous event.

This was handled with a deferred task list to send the map/unmap
events. According to ICCM, we should wait for the _NET_WM_STATE
notification before processing the deferred events.

But this is only true for top level windows, as child windows are
not handled by the window manager and will never receive any
_NET_WM_STATE notifications. For those, we should use the unmap
notify event, which means that the X-server has processed the unmap
and handle deferred events once that notification has been received.

This fixes an issue in Qt Multimedia, where QVideoWidget would not
show the video anymore after a minimize of the player or when making
the QVideoWidget fullscreen. This is because QVideoWidget uses an
embedded QWindow to render video using HW acceleration.

Fixes: QTBUG-97257
Pick-to: 6.2 5.15
Change-Id: I5c47eba3276a1f243bdafd5346f353c7843403bb
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-11-01 20:28:13 +01:00
Yuhang Zhao
2962e27441 qtbase: remove last piece of DwmIsCompositionEnabled
DWM composition is always enabled and can't be
disabled since Windows 8 [1].

As a drive-by, remove an old workaround for MSVC 2012,
which is not supported by Qt6.

[1] https://docs.microsoft.com/en-us/windows/win32/api/dwmapi/nf-dwmapi-dwmiscompositionenabled

Change-Id: I2ec055d794c91d69c141dca7cec80beb9468628c
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2021-11-02 03:15:17 +08:00
Oliver Eftevaag
859f2ca1a6 Add const to read only local variables
Pick-to: 6.2
Change-Id: Ideb34a5009277b919a8a3834e53af4ff550dfc6e
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2021-11-01 19:15:17 +00:00
Tor Arne Vestbø
06513ce175 Remove CFBundleGetInfoString from CMake Info.plist templates
It's been deprecated since Mac OS X 10.5.

qmake templates fixed in 0768a28fbf.

Task-number: QTBUG-74872
Pick-to: 6.2
Change-Id: If7d988f27f07b6fa095b2ea51a87c306361d63d1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-11-01 18:58:00 +00:00
Ievgenii Meshcheriakov
de641fbc14 QAbstractProxyModel: Use QCompatProperty with custom getter
Use new API for QCompatProperty with custom getter instead of ad-hoc
solution.

Task-number: QTBUG-89655
Change-Id: I06481ad4d360b178be001ceb9c6c8460b73391f6
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2021-11-01 20:02:17 +02:00
Michal Klocek
eb5cae26a4 Add warning about QCoreApplication deferred delete
In some bug reports we got code which does deleteLater()
on QCoreApplication, however this is not going to work as
the user may expect.

In cases where an application uses Qt WebEngine, this leads
to weird looking crashes on exit as webenginecontext is not
destroyed.

Pick-to: 6.2 5.15
Change-Id: I4d284f30b0c7cad15ba6da3d65cdf813c36ee036
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2021-11-01 18:52:04 +02:00
Kai Köhne
ca298bbefc Fix various configure time warnings about missing QT_BEGIN_NAMESPACE
We now have a couple of global.h headers that do only start with 'q'.
We can't change this anymore, so let's just accommodate for that.

This fixes the following warnings

  qtserialport/src/serialport/qserialportglobal.h does not include QT_BEGIN_NAMESPACE
  qtwebsockets/src/websockets/qwebsockets_global.h does not include QT_BEGIN_NAMESPACE
  qtwebchannel/src/webchannel/qwebchannelglobal.h does not include QT_BEGIN_NAMESPACE

Pick-to: 6.2
Fixes: QTBUG-97831
Change-Id: I12aae13eb0d782d366cb84999392a544c30cdd79
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-11-01 17:17:29 +02:00
Andrei Golubev
b01f08033b Inline QPropertyBindingDataPointer
The only non-inline function of that class was observerCount() which
would use two of the inline functions defined in the header file, so
we can safely inline observerCount() and make the whole class contain
only inline methods

Consequently, inline class doesn't have to be exported in Windows

Change-Id: I41d144d9a50420bbc0091992b36cc36ac2567704
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-11-01 17:12:44 +02:00
Allan Sandfeld Jensen
7cb2159388 Match documentation of shared pointers to new definitions
We also have move semantics and noexcept.

Pick-to: 6.2
Change-Id: Idcb1d39f79ff45738c641f8dd07fb71cf32d9aca
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-11-01 11:20:32 +02:00
Volker Hilsheimer
e2e5f448ca Implement QTest:mouseMove widget overload to send event
We cannot assume that calling QCursor::setCursor results in a mouse move
event, and we can definitely not assume that the previously pressed
button (via QTest::mousePress) will be included in such an event.

Instead, follow the mechanism used in the QWindow-overload to keep track
of the mouse buttons pressed, and make those the buttons pressed in the
mouse move event we generate.

[ChangeLog][QTestLib] QTest::mouseMove no longer moves the mouse cursor
via QCursor::setPos, but instead generates a QEvent::MouseMove. Testing
of code that relies on QCursor::pos needs to be done with explicit calls
to QCursor::setPos.

Change-Id: Ia643bcc999498a0dc93479b77e107b989dfe202d
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-30 11:46:03 +02:00
Thiago Macieira
a887b7750c qconfig.cpp: use qOffsetStringArray
It's been there for ages, we may as well use it and remove unnecessary
complexity from CMake.

Pick-to: 6.2
Change-Id: I2bbf422288924c198645fffd16a9742567a7e4af
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2021-10-29 20:26:13 -07:00
Alexey Edelev
388136e860 Add --no-rcc-bundle-cleanup option to androiddeployqt tool
Add --no-rcc-bundle-cleanup option to androiddeployqt tool that helps
to debug android build procedures and check the raw rcc bundle for
missing items. Also add the QT_INTERNAL_NO_ANDROID_RCC_BUNDLE_CLEANUP
CMake variable that adds the option when configuring projects for
Android.

Change-Id: I1f30ba979f9fb3274e44a53fdc5ebde4e65f0843
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2021-10-29 19:32:16 +02:00
Ivan Tkachenko
a670839c61 Doc: Fix broken formatting
Amends f25bc30d8d

Pick-to: 6.2 5.15
Change-Id: Ia42c7639e4919de3f995d771bfc7d8237a8773d8
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-29 16:06:31 +00:00
Mårten Nordheim
85a6a5bfe1 QNI: iOS: Fix copy-pasted warning messages
Change-Id: Id2b3ff8857a4f86ec88a0f4a8d08a227e145ae4d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2021-10-29 16:06:30 +00:00
Fabian Kosmale
77b99e8111 QMetaType: Avoid superfluous template instantiations
Apparently msvc still parses the template and generates code for it when
it encounters an extern template declaration. Thus, instead of speeding
up compilation, it gets slowed down significantly as the instantiation
would happen in every compilation unit that (transitively) included
qmetatype.h.

Task-number: QTBUG-97601
Change-Id: Id5e934afb14ad8973df1b9197aef336b22220111
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-29 17:31:57 +02:00
Fabian Kosmale
bbfd625b63 qglobal.h: Do not include <algorithm>
algorithm is a rather heavy header, so we do not want to include it
everywhere. It most likely was put into qglobal, because before C++11,
swap could be found there. However, since C++11 it is located in
<utility>, which we already include. Thus drop the superfluous include.

[ChangeLog][QtCore][Potential source breaking change] The <algorithm>
header is no longer transitively included with qglobal.h. If you used
functionality from that header and relied on the transitive include, you
will now need to explicitly add the header.

Change-Id: Idc1912956b483d313dafd61b8f6a49d60eed8d3c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-29 16:56:47 +02:00
Laszlo Agocs
e7a1fbfc47 rhi: Add texture array support
Arrays of textures have always been supported, but we will encounter
cases when we need to work with texture array objects as well.

Note that currently it is not possible to expose only a slice of the
array to the shader, because there is no dedicated API in the SRB,
and thus the same SRV/UAV (or equivalent) is used always, capturing
all elements in the array. Therefore in the shader the last component
of P in texture() is in range 0..array_size-1.

Change-Id: I5a032ed016aeefbbcd743d5bfb9fbc49ba00a1fa
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-10-29 15:57:13 +02:00
Morten Johan Sørvig
e7371fa159 windows qpa: re-apply 8d6e825d
“Handle invisible child windows gracefully on dpi changes”

This fix was accidentally removed by commit cd96d870
“Move VM_DPICHANGE handling to QWindowsWindow”.

Fixes: QTBUG-96466
Pick-to: 6.2
Change-Id: I3774f6305631ba47282d43e8480e2acaba517a96
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2021-10-29 15:57:13 +02:00
Alexandru Croitor
c78a652bd2 CMake: Warn when using unsuitable CMake due to issue finding host perl
CMake's Modules/Platform/Android-Initialize.cmake was setting
CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH to OFF and host perl was not
picked up in PATH on Windows when building for Android.

Pick-to: 6.2
Change-Id: Ic98d8b38425231ef6aaf173fdfe958b573cc0c40
Reviewed-by: Craig Scott <craig.scott@qt.io>
2021-10-29 15:34:12 +02:00
Alexandru Croitor
b04a0f0c04 CMake: Allow enabling/disabling QT_HOST_PATH checks via variable
One can now pass -DQT_REQUIRE_HOST_PATH_CHECK=OFF or
-DQT_REQUIRE_HOST_PATH_CHECK=ON to force disable or enable
the QT_HOST_PATH and QT_HOST_CMAKE_DIR_PATH validity checks.

One potential use case is if a project wants to manually find
QtFooTools packages by manipulating CMAKE_FIND_ROOT_PATH and such,
in which case they might not want to pass a QT_HOST_PATH.

Another potential use case is cross-building Qt with
-DQT_BUILD_TOOLS_WHEN_CROSSCOMPILING=ON and allowing the same
generated toolchain file to be used on the device image.

By default the generated toolchain file would require a host path
because it expects that it's still being used for cross-compiling.
But once the toolchain file is deployed to the device there's no need
to use the host tools anymore.

Another use case is building a desktop Qt using the host tools of
another desktop Qt. The new desktop Qt can use its newly built tools
just fine and wouldn't need the original desktop Qt tools.

QT_REQUIRE_HOST_PATH_CHECK needs to be added the list of vars to pass
through to try_compile calls.

Change-Id: I4b922b5d854828e6b9210dd8c07b4b1b8630aad1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Craig Scott <craig.scott@qt.io>
2021-10-29 15:34:12 +02:00
Alexandru Croitor
f917df2752 CMake: Fix _QT_TOOLCHAIN_VARS_INITIALIZED check in toolchain file
The environment variable check to set extra env vars
was using invalid syntax. The condition always resolved to TRUE
which means the env vars were constantly re-assigned inside each
try_compile project.

To check for undefined-ness, one can use if(NOT DEFINED ENV{...})
To check for false-ness, one can use if(NOT "$ENV{...}")
To check for string emptiness, one can use
  if(NOT "$ENV{...}" STREQUAL "")

In this particular case checking for false-ness is good enough.
The extra re-assigning had no visible effect, so this is just cleanup.

As a drive-by, clarify one comment.

Amends ca59c20939

Pick-to: 6.2
Change-Id: I8fd400101efa9e610a81268c33cac8c0cb33cba3
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Craig Scott <craig.scott@qt.io>
2021-10-29 15:34:12 +02:00
Alexandru Croitor
402b8b9cee CMake: Use Qt6HostInfo dir for Tools CMAKE_PREFIX_PATH assignment
Instead of hard-coding a lib/cmake suffix to CMAKE_PREFIX_PATH
use the parent directory of the Qt6HostInfo package which is always
searched for when QT_HOST_PATH is set.

Amends d2359b2d4e

Pick-to: 6.2
Change-Id: I7f3c8fe17bc82f733580d68d928146434a57d849
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2021-10-29 15:34:12 +02:00
Alexandru Croitor
102c1cff72 CMake: Clean up and improve QT_HOST_PATH_CMAKE_DIR computation
Previously when one wanted to use a cross-compiled Qt with a host Qt
installed in a non-default location, they'd have to provide both
QT_HOST_PATH and QT_HOST_PATH_CMAKE_DIR.

This change will now try to first check if ${QT_HOST_PATH}/lib/cmake
is a valid path on disk and use that. This is nicer to the user
because they don't need to specify 2 paths anymore.

Furthermore the path computation and sanity checks are now done after
any extra toolchain cmake files are loaded, to give an opportunity
to the files to set the paths first.

Finally, both variables need to be added to
__qt_toolchain_used_variables so they are passed along to try_compile
calls if the variables are specified manually.
Otherwise when the toolchain file is loaded by a try_compile project,
it will error out saying no host path found (as long as the initial
paths embedded in the toolchain are invalid).

Amends 93fc3afe71 and
ec90f9013b

Pick-to: 6.2
Change-Id: I433239b36b084f2d0a7a0dd043fdf87d77c138f3
Reviewed-by: Craig Scott <craig.scott@qt.io>
2021-10-29 15:34:12 +02:00