summaryrefslogtreecommitdiffstats
path: root/cmake
Commit message (Collapse)AuthorAgeFilesLines
* Realign columns in the configure-cmake-mappingGiuseppe D'Angelo2024-03-081-2/+2
| | | | | | | | | Change-Id: Ie7c3c35b6e5a8d02d05650b86f6c2d47b72c3835 Pick-to: 6.5 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 9069b7fb20fe46f6e7b74c23d052274a8c5cf8dc) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit d1825d82ec692c1c3f1f48677ada296f941797f6)
* CMake: Fix assignment in internal_get_build_vars_for_external_projectsAlexandru Croitor2024-03-061-2/+2
| | | | | | | | | | | | | | The check and variable name were incorrect after a refactoring. Amends ba9623860056cbb75e426e27905f9c29b687cefa Task-number: QTBUG-84884 Task-number: QTBUG-90820 Change-Id: I33b6b81695a6352c7869ef6186e00881b47bd6f3 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit aacc31815d40c8f5dbdd998536fb1fcd5f632221) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 56d1754c2ea5ef670187b6034421c17d307d3e73)
* cmake: Allow silencing CMake generator warning from environmentTor Arne Vestbø2024-03-051-1/+2
| | | | | | | | | Pick-to: 6.5 Change-Id: I13d3000121be39f204b4374118690fe27702dd12 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 5736e0b65599f2e3dedcb80ec88ecc431a459d38) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e4bb6826f9719d23dfd590ac9f4d1b3937fbd09c)
* CMake: Teach qt_config_compile_test to set the build outputAlexandru Croitor2024-02-231-3/+24
| | | | | | | | | | | | | | | | | | | | | The qt_config_compile_test command now assigns the build output of a config test to the TEST_${name}_OUTPUT variable in the callers scope. We can use this to show error messages, and it can also be seen in trace files for better troubleshooting. It works for all project based calls with CMake 3.16, but for source code based tests, due to the usage of check_cxx_source_compiles instead of try_compile, it will only work for CMake 3.23+. Pick-to: 6.5 Task-number: QTBUG-122596 Change-Id: Ib9664c158ba9a391bd17bf30a28f9a34eba991d5 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 3334a77ecfb792fba0144e99887f11cd0fa2506d) Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 6674c0f8f971d6a54cd3fda1d67103644cc71ff9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Wrap condition in _qt_internal_check_depfile_support with parenthesesAlexey Edelev2024-02-231-3/+6
| | | | | | | | | | | | | The AND/OR combinations are not evaluated correctly. Wrap them with parentheses explicitly to ensure the expected evaluation order. Pick-to: 6.5 Change-Id: Ib2515ba85417b32cef3f799e0cb2c89d2c4257ab Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 7ac969e1461478974f62a46a913d6cd2b34ed80a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit c11d505a891c4e931830724ac1bc22c105e15d9c)
* Add newline after importAndré Klitzing2024-02-211-1/+1
| | | | | | | | | | | | | | This avoids -Wnewline-eof for clang compilers. error: no newline at end of file [-Werror,-Wnewline-eof] Q_IMPORT_PLUGIN(Governikus_AnimationsPlugin) Pick-to: 6.5 Change-Id: I8de21f1f27cd177211ebf70fac0e01292cfa410c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit f926ccbf64791ded226da187674e7a5f6a40eca7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 13590640c3d9a4b8088f19981f9cdf2c0a1a27a9)
* Revert "Revert "Add the support of the qt_import_plugins functionality to ↵Alexey Edelev2024-02-201-1/+2
| | | | | | | | | | | | | androiddeployqt"" This reverts commit 219a0aabc118916c3be16e647a2a1411805cb15a. Reason for revert: Since the respective fixes are merged we may revert this back. Pick-to: 6.5 Task-number: QAA-2266 Change-Id: I949ac9adbe268be65bf4fd402d1d6322f134146b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove year from generic Qt copyright informationKai Köhne2024-02-191-1/+0
| | | | | | | | | | | | | | | While at it, also add the missing dot in Ltd. (as it's an abbreviation). Also, prefer https:// over http://. Fixes: QTBUG-121906 Task-number: QTBUG-121928 Change-Id: I4e1f1563376ae36b3c260359d830f00969ab9351 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 6ea922b584a5f55cb73519aa81f074db59b96404) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 901b61bb6a98eb1750491facaed27c315f67fb7c)
* Change the mechanism that copies framework header filesAlexey Edelev2024-02-141-12/+35
| | | | | | | | | | | | | | | | | | | | | Split the header copy custom commands into two blocks and add <module>_sync_headers_fw_copy target that is responsible for the copy of CaMeL-case header aliases. For the Ninja generator we leave the file-level dependencies between the <module>_sync_headers_fw_copy target and header copy commands. For the Unix Makefiles generator we put the command directly to the target to make sure it's executed by make. Also add the explicit commands for creating the output header directories. Fixes: QTBUG-122200 Pick-to: 6.5 Change-Id: I71ba716d17a879f20ae0869cf2257d246ac17eff Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 103eca1070a75bfa97d0b72b94e0c759ef0bcd1c) (cherry picked from commit f6c2e909c9e34314342426a71bd4d3a123dcd35c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix the namespaceless target condition in __qt_internal_walk_libsAlexey Edelev2024-02-141-1/+1
| | | | | | | | | | | | | Access the target name value, but not use the variable name in when checking the target existence. Pick-to: 6.5 6.2 Change-Id: I0f86e3c7665d9c028bf4cbdc5aa8fb840fe1d542 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 3d4a5c513ab050d04ab175610167f4d31982be5c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 0d7784e09b73615828060fa4a923d9d659c1860d)
* Add plugins of imported QtModules to the _qt_plugins propertyAlexey Edelev2024-02-071-0/+7
| | | | | | | | | | | | | | | | | | | | | This covers the following use case: QtModuleX is pre-built and installed, it's imported. The plugin has a PLUGIN_TYPE that is associated with QtModuleX and is built with application that links QtModuleX. When deploying the application it's expected that the plugin is deployed, as the one that belongs to the linked QtModuleX. This ensures that we udpate the internal _qt_plugins property that is used in the __qt_internal_collect_plugin_targets_from_dependencies function. Pick-to: 6.5 Change-Id: I9824351ebab5a24509800da4db69f1e282a35884 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 75d83d5a6521a5cf5c7159f1ef09e8978e429919) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 256c39f9d51c617c1b954de843a379d7e7a51a03)
* CMake: Simplify default CMAKE_BUILD_TYPE logicAlexandru Croitor2024-02-054-77/+122
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we had four-ish locations where the CMAKE_BUILD_TYPE was force set. Twice in QtBuildInternalsExtra.cmake via qt_internal_force_set_cmake_build_type_conditionally(), depending on some conditions. This was executed right at find_package(Qt6 COMPONENTS BuildInternals) time. And twice in qt_internal_set_default_build_type() via qt_build_repo_begin() / qt_prepare_standalone_project() that goes through QtSetup.cmake. This was executed only if the relevant functions were called, rather than directly at find_package() time. The exact logic of which build type ended up being set was very confusing. Refactor the code to decide the build type in one single location when qt_build_repo_begin() / qt_prepare_standalone_project() are called, rather than directly at find_package() time. The actual logic when we override the build type depends on many factors: - when an explicit CMAKE_BUILD_TYPE is given, honor it, unless it's a multi-config build - when it's a multi-config build, don't set any CMAKE_BUILD_TYPE, use the value of CMAKE_CONFIGURATION_TYPES - when it's a qtbase build, compute a default unless an explicit value was given - the default is Debug if FEATURE_developer_build is ON - otherwise the default is Release - when it's a top-level build, only choose a build type for qtbase - when it's another repo build, use the original build type unless another was given explicitly (including in a top-level build) - when it's a standalone tests build - if qt is multi-config, the tests will be single config, due to various CI failure reasons, this hasn't changed - if qt is single config, use the original unless an explicit value was given - when it's a single standalone test build, use the original unless an explicit value was given To determine when an explicit CMAKE_BUILD_TYPE was given in contrast to when it was default initialized, we now have one single function that uses a few heuristics. The heuristics are needed because we can't reliably determine an explicitly given 'Debug' build on Windows, because CMake default initializes to that. The heuristics include: - checking whether CMAKE_BUILD_TYPE_INIT is different from CMAKE_BUILD_TYPE - checking what the CMAKE_BUILD_TYPE was before the first project() call when CMake default initializes - we save the previous value in the qt.toolchain.cmake file - also in QtAutoDetect during qtbase configuration - also when building the sqldrivers project - honoring the value of QT_NO_FORCE_SET_CMAKE_BUILD_TYPE As a result of the above changes, the build type will be set exactly zero or one times, for a particular build directory. Note that the configure script also has some logic on which CMAKE_BUILD_TYPE / CMAKE_CONFIGURATION_TYPES to pass to CMake depending on whether -debug / -release / -debug-and-release / -force-debug-info were passed. But once the values are passed, CMake will honor them. Amends 48841c34d2e86a741ec9992b9704c0fa5973503c Amends 8c912cddebe544010e7da3f87af5b21f3328d7ec Pick-to: 6.5 Fixes: QTBUG-121926 Task-number: QTBUG-114958 Task-number: QTBUG-120436 Change-Id: I30db14d1e8e9ff9bd2d7ea1d2256cdeb9493ca0d Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 49902cc6ce228c9365c54b0dbe777ae63720310c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 22ffc088e808939406346cc5f1eab94e11d8ae84) Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Fix configuring a standalone test on Apple platformsAlexandru Croitor2024-02-052-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | Configuring a test as standalone would fail with the following error: Invalid max SDK version: It should be a major version number, without minor This happened because _qt_internal_check_apple_sdk_and_xcode_versions expects QT_SUPPORTED_MAX_MACOS_SDK_VERSION to be available, but it is not yet set due to Qt6 package not being found yet. Avoid the issue by exporting the version requirements into both Qt6ConfigExtras.cmake and Qt6BuildInternalsConfigExtra.cmake. Make sure to assign the variables only once. Amends a29bff3d80219f54d0837b0e6e0577192011dea1 Amends a0bdd2195f24d8a7d880ba506afc16b41337218e Task-number: QTBUG-119490 Change-Id: Ic297eeaabf22c8c42ded1a766906f88fdb91fd3d Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit cec2e42052a04cd2481c20bd4be5de2ba5ccaec2) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit cfdffa17a545de73ae5419023a1c765f5b682fe0)
* Change the way we detect the need of adding Qt<Module>Plugins.cmakeAlexey Edelev2024-02-011-2/+2
| | | | | | | | | | | | | | | | | | | | Currently we assume that only modules that have plugins built in the current build tree need to generate and install the Qt<Module>Plugins.cmake file. This approach is weak since other Qt modules might still want to provide the plugins of the certain types, even if the module that the plugin type belongs too didn't have plugins initially. The fix unblocks the formally 3rd-party plugin installation and loading chain. Pick-to: 6.5 6.2 Fixes: QAA-2266 Change-Id: Ifc616e26a00674371c8e2fe2ca12237d153e5707 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 180afc7321c85f7f36d085b76d1be74c99da2462) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 2d77750bf70cc41417515a993719a7809c7c9756)
* Revert "Add the support of the qt_import_plugins functionality to ↵Alexey Edelev2024-01-291-2/+1
| | | | | | | | | | | | | | androiddeployqt" This reverts commit 6763644c3fc151d6e7716af08531a386557d5a88. Reason for revert: Breaks android automotive and blocks the release. Pick-to: 6.5 Change-Id: I450dca047d7f105bd60bab3fb698806ef486e581 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io> (cherry picked from commit de62bb90ec829bd88fa91c48c4061d61cb1f6a71) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Warn about unsupported generator for all qt submodulesAlexandru Croitor2024-01-262-10/+16
| | | | | | | | | | | | | | Previously we only warned about unsupported cmake generators when configuring qtbase. Now we do it for other submodules as well. Pick-to: 6.5 Task-number: QTBUG-120602 Change-Id: I9d78db546bcf1238604362b248d41d4516b60b2a Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 9932f2dd479baefb915ad841c95855d61b764ab6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit ea47b017d421a15d83be9a4b8003f5c8448ffa12)
* CMake: Fix unity build for qtgraphsAlexandru Croitor2024-01-241-2/+9
| | | | | | | | | | | | | | | | | | | | | | qtgraphs defines a target in one directory, and then calls qt_internal_extend_target with NO_UNITY_BUILD_SOURCES in another subdirectory scope. That in turn calls set_source_files_properties but only for the latter subdirectory, and not the main target directory. Because CMake has per-directory-scope source file properties, the 'no unity sources' option was effectively ignored. When using CMake 3.18, make sure to specify the TARGET_DIRECTORY option so that the source file properties are added to the scope of the defining target. Pick-to: 6.5 Change-Id: I4190d4073a2955aa7053b5faaaa57f683bc768a2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 081e50d768114aeeb8f0d284989986d4debc6ec3) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit dcaab5eb8d4b5d9388e295a25b8988e3094e83bd)
* CMake: Fix sqldrivers project to allow building as Debug MSVC configAlexandru Croitor2024-01-241-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the user: - has a non-developer-build -debug-and-release Qt - and tries to configure the sqldrivers project with -DCMAKE_BUILD_TYPE=Debug our build system discarded the user request, and defaulted to 'Release'. That happens because CMake sets CMAKE_BUILD_TYPE_INIT to 'Debug' by default on Windows-MSVC, and we have no marker to differentiate that the 'Debug' value was user-specified. We have such a marker - via the __qt_auto_detect_cmake_build_type_before_project_call variable when configuring qtbase / top-level qt - via the __qt_toolchain_cmake_build_type_before_project_call variable when configuring via the qt toolchain file (although that doesn't apply when configuring a multi-config build for obscure reasons, which should be addressed). A conservative fix is to add a new variable / marker called __qt_internal_standalone_project_cmake_build_type_before_project_call which the 'sqldrivers' project will set with the build type that is detected before the first project() call, and use that to decide whether to override the build type, similar how we do with toolchain file variable. We could reuse one of the previous variables, but I figured it's better to be explicit with a new one. And hopefully we can clean up the whole logic in a follow-up commit. Amends 48841c34d2e86a741ec9992b9704c0fa5973503c Amends 8c912cddebe544010e7da3f87af5b21f3328d7ec Pick-to: 6.5 Fixes: QTBUG-120436 Task-number: QTBUG-114958 Change-Id: I37e3d8041088fe6084a9976ecc80ddd62d73ef81 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 5b5fa7b75a2465e085c7df61c64755bb65b51f1c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e07404343de80f8c3d3046322ec45ca469508a49)
* Cut off the IMPORTED targets from the sync header dependenciesAlexey Edelev2024-01-241-6/+9
| | | | | | | | | | | | IMPORTED targets obviously have nothing to sync. So we should ignore them when collecting dependencies for header sync. Pick-to: 6.5 Change-Id: Ief68ff5eb2eb13a3fe1608445e8f5e6abb5971b4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 868e91474c085bd3bf8c5635fc069731afc2e44a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 9ad537254a8c9e843cfc468bc0614f3c17a646cd)
* Force CMake to look for static versions of xcb componentsAlexey Edelev2024-01-201-0/+3
| | | | | | | | | | | | | | | | | | | | | Add the USE_XCB_<component>_STATIC switches that force using the static versions of xcb components if necessary. The xcb components needs to be built with -fPIC option, to make the static linking possible. When Qt is built staticaly USE_XCB_<component>_STATIC needs to be passed to the application command line, since in static case xcb libraries are resolved and linked when configuring application, but not when building Qt. Pick-to: 6.5 Task-number: QTBUG-120769 Change-Id: I274e9cf4a6a111dc87ad84bb7f49cad76a3d364a Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 6ce6ff1c529a7a4a09f211980cc749c2b3aa0dab) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit f9d97ee04aed519e78e0b9114866512f83c5a203)
* Allow configuring the qtbase documentation-only buildAlexey Edelev2024-01-171-1/+1
| | | | | | | | | | | | | | | | Use the QT_SUPERBUILD procedure when configuring the qtbase documentation-only build. This only makes sense for qtbase since we disallow building it using existing Qt installation. Other repositories should be configured using qt-configure-module script from the existing Qt installation and simply run 'ninja docs'. Fixes: QTBUG-120485 Pick-to: 6.5 Change-Id: Iafed5c17bea5c61edc239f08045922497215fb73 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 02a556674f0b3f04de5ab09dca53ed8e86a8ba06) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 4b662e9a921bd409c6e03bf7f13eabd3c54a87b2)
* CMake: Fix user_facing_tool_links.txt for Apple platformsJoerg Bornemann2024-01-161-1/+8
| | | | | | | | | | | | | | | User-facing apps that are app bundles on macOS weren't linked correctly. For example, for Qt Designer we're creating now an entry like the following: .../Designer.app/Contents/MacOS/Designer /usr/bin/designer6 Fixes: QTBUG-120487 Change-Id: I3eada15c4c5bf31b9b08829333d3c87f76ede7a2 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io> (cherry picked from commit 2921a70e5d8de5bf3f4b56b90347983aa9b1342b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 06e9da856cae36eca2ab8c86390bba6fe620c37e)
* Use target-specific android-build directoryAlexey Edelev2024-01-121-2/+5
| | | | | | | | | | | | | | | | | | | | | This fix allows using multiple executable targets in a single CMakeLists.txt when building for android. Previously artifacts for both targes were collected in a common android-build directory, that led to artifacts overlaping and broke the deployment process. Users need to set the QT_USE_TARGET_ANDROID_BUILD_DIR to TRUE to enable the new android-build directories naming. This change need QtC adjustments that will take a new directory naming into account. Task-number: QTBUG-117443 Pick-to: 6.5 Change-Id: I47568798e2a2e8550ddab1990a33611967183761 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 5f0575256a4af14c1f2f9a846e40cd9490c12b56) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 5d9c9fe8f729e3782b11a48534d065050913bf82)
* Add the support of the qt_import_plugins functionality to androiddeployqtAlexey Edelev2024-01-121-1/+2
| | | | | | | | | | | | | | qt_import_plugins allows to control application deployment on non-Android platforms. This adds support for the pre-defined plugin list that is computed using the qt_import_plugins input. Pick-to: 6.5 Task-number: QTBUG-118829 Change-Id: Iaa9c3f600533a4b5a3079ab228fabf212d9ce5a5 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> (cherry picked from commit 438837ce274fdc1457b66179b25df40f33b23a15) (cherry picked from commit 4dfaabce579c42443a8f9b4425b62c20fe275052) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Fix encapsulation of qt_build_internals_add_toplevel_targetsAlexey Edelev2023-12-221-2/+2
| | | | | | | | | | | | The function uses external non-cache variable that is set in different cmake macro. It's better to pass the value as argument. Pick-to: 6.5 Change-Id: I282bd506cf2dcd998a0ddd7deaad244fab34a8db Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 0d7cda9cdaeefe8363f44204b0cb7384ec990dc8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8bed1089c51a0281a3fdb128b6275c120e32cca2)
* CMake: don't set TIMEOUT_SIGNAL_NAME for Android target on Windows hostAssam Boudjelthia2023-12-201-1/+1
| | | | | | | | | | | | | | | TIMEOUT_SIGNAL_NAME and TIMEOUT_SIGNAL_GRACE_PERIOD are not supported on Windows. Amends 4a3936c33cb2ab9fee2e93cbe99d31daf1cd0cc8. Pick-to: 6.5 Task-number: QTBUG-106479 Change-Id: Ifa00a9183750454960b1ff24e1a0048224feff4b Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 1a7db3ab11ef9500e9c6bf111d7525cacca2f867) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 8f9543e0aaee15c5d51377f708451f3f2aa73956)
* Fix CMake extraction of sub architecture testCajus Pollmeier2023-12-191-1/+1
| | | | | | | | | | | | | | | | | | The length check is hard coded to the length of the string under test. As the STRINGS match only filters out non printable characters, we've no guarantee that the characters before the == position are printable or not. So _pos may be > 1 and then string length check will be broken. Replaced this by a pattern match to see whether there's something after the ":". Fixes: QTBUG-120125 Pick-to: 6.5 Change-Id: I24971b3bc83ea05841dae21667fbbae3416cfcf9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit e7457ff171255148d92254316433d39ef1bd3d28) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit fa41643a7edc89f035ea63d024b68fb7dd585a15)
* Fix FindWrapResolv on systems that complaing about uninit varsMårten Nordheim2023-12-181-1/+1
| | | | | | | | | | | | | | | The compile test would fail on certain systems due to usage of uninitialized variable. Amends 4a46ba1209907796f4a14f6feb35ed4d70155d7d Fixes: QTBUG-120141 Change-Id: I4ebbd9dcc820a26c4f8cec0460c5dacbd85c4d4a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 75964763660cb131a0afe7b0bc051fd901939821) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 79d32d5b02fa038c95553bdbcd5ec977d1684fce)
* CMake: Export additional target info props for object librariesAlexandru Croitor2023-12-161-5/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | For some reason when building a user project in Release mode, when Qt was built with -DCMAKE_CONFIGURATION_TYPES=RelWithDebInfo;Debug on MSVC, will result in linking of Debug object libraries into the user project. This does not happen in the same configuration on macOS. My guess is there is a difference in the logic on which configuration to choose between the platforms, perhaps based on package lookup order or something else. This was observed with qtgrpc's ProtobufWellKnownTypes_type_registration object library (which is only built on Windows as an object library). The issue can be fixed if we explicitly generate per-config imported location information for object libraries, just like we do for regular libraries. That way we'll have uniform build type information for all target types. Fixes: QTBUG-119708 Change-Id: I9020b7743cea65bbd92cadd5f570b7e38e999bd4 Reviewed-by: 🌴 Alexey Edelev 🌴 <alexey.edelev@qt.io> (cherry picked from commit 3b71f9dc297f73d140f3c185c67476df5e0266a5) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 88662fa7e4b3909eb1037299882c63616a368440)
* Allow space in emsdk pathAmir Masoud Abdol2023-12-161-1/+1
| | | | | | | | | | | | | Changing from Native path, to CMake path resolves the broken execute_process call. Pick-to: 6.5 Fixes: QTBUG-120050 Change-Id: I6725d0efc215e4866677bf6a64e315752c3f2a1d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 6b09b515367b2c293e3d8284f37a6120d2f83019) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 9dbc0673c7d84785ddb8b41b0d9ffd97fdffc3e7)
* CMake: Don't recurse with qt-cmake-standalone-test in-source dirsAlexandru Croitor2023-12-151-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the qt-cmake-standalone-test root project is configured in-source in the source directory of a test A, where test A ends up being added via add_subdirectory(A), this causes the SUBDIRECTORIES property of A to contain itself for some reason. Recursively iterating over the root project's subdirectories thus causes an endless recursion. Make sure to remove the currently processed directory from the retrieved SUBDIRECTORIES property when the function is called during qt-cmake-standalone-test configuration. We limit it just for that script, so that we don't accidentally increase the configure time when building all standalone tests, and call list(REMOVE_ITEM) too many times. Upstream issue filed at https://gitlab.kitware.com/cmake/cmake/-/issues/25489 In a way, amends d08fa86e63448377dde4297bc94680a9d7daaaeb because it exposed the issue. Amends 1c82e92202c8c359872c08095670c121602094b8 Pick-to: 6.5 Task-number: QTBUG-119998 Change-Id: I6f92a07be105cde74ac4946523967791db7bf301 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 04a327f00a84b0c13cb4a4a6715b2ce86ea9f61a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit e16db6933c09245e8f5b31cc4489d9e8d7bab9b5)
* Use the correct CMake argument name for -libpng and -libjpegAmir Masoud Abdol2023-12-151-2/+2
| | | | | | | | | | | | The qt_feature calls are for "jpeg" and "png". Pick-to: 6.5 Fixes: QTBUG-120036 Change-Id: I43e69d9fd1e08383b5ddfbfe194eaa2f2ae52f50 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 8646010223c7a103fc53ff0705dece8904ee268c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit d173fda6e9954a0f44966f8f0049f6d12b964123)
* CMake:Android:Coin: prioritize timeout from COIN_COMMAND_OUTPUT_TIMEOUTAssam Boudjelthia2023-12-151-2/+7
| | | | | | | | | | | | | | | | | | | ... from CMake so that Coin doesn't end up killing the whole VM if aRows test gets stuck and instead allow androidtestrunner to cleanup and fetch the logs so we know what happened, and even potentially ending up re-run the test and succeeding if it was flaky. Also, since CMake sets the timeout during configuration time, coin needs to set COIN_COMMAND_OUTPUT_TIMEOUT under the build target where tests are configured, so this moves the setting of that env var from the test target to the build target. Pick-to: 6.5 Change-Id: I9883ea1e98c93f79a088067518d09ca8acd5fdfd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 3ee2ecd6bfdf3320e66628afa5d017783df2ee91) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 5ebce47ac417c51e0a2a027eb873a91f1c703e16)
* AndroidTestRunner: uninstall the test when interruptedAssam Boudjelthia2023-12-151-5/+13
| | | | | | | | | | | | | | | | | | If the test runner was interrupted, stop waiting for the test to start or to finish, go fetch the available test results and logcat and uninstall the test app. Also, set CMake TIMEOUT_SIGNAL_NAME to SIGINT and TIMEOUT_SIGNAL_GRACE_PERIOD to 10 seconds to allow enough time to fetch the logs and uninstall the test app. Task-number: QTBUG-106479 Pick-to: 6.5 Change-Id: I4820cfe58f05d15179b4af819caa92e475881634 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 4a3936c33cb2ab9fee2e93cbe99d31daf1cd0cc8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit aecf64eb7b896285d66b22fd725cb11e83f5e807)
* Build the QtSql plugin for Mimer SQL on macOS in universal binary modeFredrik Ålund2023-12-131-2/+1
| | | | | | | | | | | | | With the new provisioning scripts the QtSql plugin for Mimer SQL can now be built in universal binary mode on macOS Fixes: QTBUG-111219 Change-Id: Iefc45b510bd17822aa7782a2c42860941eb19fc8 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit d557718d68184f6b56b17a3b5b54d1d5511a5294) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit fbee3c4864d58d6e490c8d3c8223c7f9d2932cdc)
* Make sure that the result variable is empty in ↵Alexey Edelev2023-12-081-0/+5
| | | | | | | | | | | | | | | | | _qt_internal_collect_buildsystem_targets Add the inside-recursion marker to the _qt_internal_collect_buildsystem_targets function and reset the result variable only in the top-level function call. Amends 1c82e92202c8c359872c08095670c121602094b8 Pick-to: 6.5 Change-Id: I34b1e1edbb8a799900b95f67b80151b372073d2c Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit ea3289460b6c9a6c4f17af06871936f105514b66) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Fix Apple max sdk version checkAlexandru Croitor2023-12-051-3/+9
| | | | | | | | | | | | | | | We need to warn only when using a major version that is the next one after the 'max supported version'. Add an assertion that the max sdk version specified in .cmake.conf needs to be just the major sdk version, without a minor or patch version component, otherwise the '+1' math expression will fail. Task-number: QTBUG-119490 Change-Id: Ib30abe7157c2ccbe0ad7a98e81fc241685a141a8 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit a0bdd2195f24d8a7d880ba506afc16b41337218e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Refactor sdk / xcode check to support both warnings and errorsAlexandru Croitor2023-12-051-12/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The minimum sdk / xcode version is a requirement, so if the minimum is not met, we should generally error out. Changing the behavior in the already released 6.6.x series is not nice though. Refactor the code to support both a warning-first and error-first approach. Keep the warning-first behavior as-is in this change and pick it to all relevant branches. A follow up change will switch the default to the error-first approach for as-of-yet unreleased Qt branches. To support both approaches, there are now two variables to flip the warnings into errors and vice-versa depending on which is the default for a particular branch: - QT_FORCE_FATAL_APPLE_SDK_AND_XCODE_CHECK - QT_FORCE_WARN_APPLE_SDK_AND_XCODE_CHECK The maximum SDK version check remains a warning, because building against the newer SDK might still work, even if it isn't yet marked as supported. Amends a29bff3d80219f54d0837b0e6e0577192011dea1 Task-number: QTBUG-119490 Change-Id: I92dedd69efc266dfc1c8cf15c93887be74fc99d8 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 248f8bff16e7b49f9ac946b78a0577051480be58) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Don't run sdk / xcode version checks on non-Apple platformsAlexandru Croitor2023-12-051-0/+4
| | | | | | | | | | | It was an oversight. Amends a29bff3d80219f54d0837b0e6e0577192011dea1 Change-Id: I696d7a2650c336dc93df01245065bcbb61ca1d6b Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit ffa79f5e0c3c8a443721ca6211f5b7876c7c1742) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Compute dynamic timeout for androidtestrunnerAlexandru Croitor2023-12-012-3/+33
| | | | | | | | | | | | | | | | | | | | | | Pass a CMake test TIMEOUT argument to androidtestrunner, using a value of 95% of that timeout to allow time for the test runner to do any cleanup before being killed. If no test argument is provided, use the value from CMake property DART_TESTING_TIMEOUT or CTEST_TEST_TIMEOUT. If that's not provided default to 25 minutes which is the default for DART_TESTING_TIMEOUT. Along the way set the default androidtestrunner timeout to 10 minutes and fix the wrong timeout in the help menu. Fixes: QTBUG-106479 Pick-to: 6.5 Change-Id: I12cd531583dd94954caf8044c37c22382d53d43c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Dimitrios Apostolou <jimis@qt.io> Reviewed-by: Axel Spoerl <axel.spoerl@qt.io> (cherry picked from commit d2c29aee41d06d59024ef72eb50bb9f25909e922) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Warn when configuring Qt with an unsupported Apple SDK or XcodeAlexandru Croitor2023-11-305-36/+186
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The warnings are shown when configuring any Qt submodule or top-level. The warnings are NOT shown when configuring a user project with CMake. Opt out CMake cache variables can be set to silence any of the warnings: - QT_NO_APPLE_SDK_AND_XCODE_CHECK - QT_NO_APPLE_SDK_MIN_VERSION_CHECK - QT_NO_XCODE_MIN_VERSION_CHECK - QT_NO_APPLE_SDK_MAX_VERSION_CHECK The warnings can be upgraded into errors by configuring with -DQT_FORCE_FATAL_APPLE_SDK_AND_XCODE_CHECK=ON The platform version requirements that qtbase specifies in .cmake.conf are saved in Qt6ConfigExtras.cmake so that they can be used when configuring other non-qtbase submodules. The code is added to the public CMake files, so that in the future we don't need to move code around if we enable the checks for public CMake projects as well. The version extraction helpers were moved out of QtAutoDetectHelpers into QtPublicAppleHelpers. Task-number: QTBUG-119490 Change-Id: Ic840e1013aeb607bf23247a9cb43471dde802e9d Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> (cherry picked from commit a29bff3d80219f54d0837b0e6e0577192011dea1)
* CMake: Move QtAutoDetect.cmake functions into a separate Helpers fileAlexandru Croitor2023-11-303-514/+525
| | | | | | | | | | | | | | | And automatically include and install it in all qt builds. We will use some of its functions for enforcing apple sdk requirements when building Qt. For the 6.6 branch there was a conflict that vcpkg integration is always ON, but was changed to be OFF in 6.7. We keep the 6.6 behavior, aka vcpkg integration will be ON. Change-Id: I46383bc857430d35314dfa2ebef9eb342fb63560 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> (cherry picked from commit ba9d45088f966430a814e7af36a8e7657d61e6db)
* CMake: Create wrapper scripts after global feature evaluationAlexandru Croitor2023-11-301-2/+3
| | | | | | | | | | | | | | Otherwise we don't have access to the 'debug' and 'debug_and_release' features to decide whether the install script needs to strip binaries or not. Amends 09fdddeb326d0c79d080bdb50a92a839038baea7 Fixes: QTBUG-118070 Change-Id: I4f1b8463fa369edd38c1110d1d69e7fa7a45de63 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> (cherry picked from commit 830c4041befb6897c33d972c8eeb7231dfe24f74) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Detect vcpkg after everything elseAmir Masoud Abdol2023-11-281-1/+1
| | | | | | | | | | | In order to use multiple toolchain, e.g., when we are cross compiling, we need to load the detect, and load vcpkg's toolchain after our toolchain file. Change-Id: I7f3374363f725a634356788e22ac21835505c4b0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 044cc7c90b80f5696656565aa6ae4de2b3b09822) Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
* Set VCPKG_CHAINLOAD_TOOLCHAIN_FILE to supplied_toolchain_fileAmir Masoud Abdol2023-11-281-1/+1
| | | | | | | | | | Just a minor change, so that it's clear that we are setting the supplied toolchain as the VCPKG_CHAINLOAD_TOOLCHAIN_FILE. Change-Id: I10b35f04e7ad684015062066f67117ce4a964c1c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit ab89b9cab3d5644a81735f594b5a83ac9e441d47) Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
* CMake: Dynamically include and install Helpers and other filesAlexandru Croitor2023-11-284-190/+210
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of duplicating file names that need to be include()'ed in two different places if the files are meant to be used in both Qt builds and public user projects and then also mention the name when installing, extract the file names into lists returned by functions. Call these functions where needed to iteratively include() the files as well as install them, without having to remember updating multiple code locations. The new functions return the following list of file names: - upstream cmake modules that need to be included during a Qt build - public (Qt build and user project) cmake helpers that need to be included and installed - private (Qt build only) cmake helpers that need to be included and installed - public files that need to be installed, but not included - private files that need to be installed, but not included We also generate the list of public files to include in Qt6Config.cmake. Task-number: QTBUG-86035 Change-Id: I1e7287f4e1d041c723f144ba9626b34f873c4891 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 8c14b0c02f3e4b06a9aa4ea7608360149be4a50f) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Mostly unify includes into a single locationAlexandru Croitor2023-11-288-15/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make the QtBuildRepoHelpers and QtBuildRepoExamplesHelpers files that were previously loaded as part of BuildInternals package instead be loaded when qt_internal_include_all_helpers is called. Load all the helpers as soon as find_package(QtBuildInternals) is called rather than when qt_build_repo() is called. This is a behavior change, but because including the Qt's Helpers should have no side-effects aside from defining functions, it should be fine. This lets us have a unified location where to include Helpers files, instead of thinking whether it needs to be done in QtBuildInternals or in QtBuildHelpers or some other place. Move also some additional inclusions into the same function. Note that including some upstream CMake files like CMakeFindBinUtils does have side-effects, but we've been doing it already anyway, so moving it to the top should not make a difference because any modifications we would do to the globally assigned variables would have come later when we actually called our own functions. Task-number: QTBUG-86035 Change-Id: I33f36f7e8db69d504c34a4d4a094b98f6fa50ee4 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 2b1f2338631ae24614637b90c45f2778c3c77e37)
* CMake: Include QtAndroidHelpers and QtWasmHelpers unconditionallyAlexandru Croitor2023-11-281-8/+2
| | | | | | | | | | They don't have side-effects, so no need to keep the checks. Task-number: QTBUG-86035 Change-Id: Ic2c3aee1b19d8b1727936582bfe366c8277d11c2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 381d2fb014c93489d39a41436183bdbe14270621)
* CMake: Move qt_internal_read_repo_dependencies into QtBuildRepoHelpersAlexandru Croitor2023-11-283-52/+52
| | | | | | | | | | | | | | | | | | | | | Previously qt_internal_read_repo_dependencies had to be defined before QtBuildInternalsExtra.cmake was included because the file called the function. Instead of calling the function in QtBuildInternalsExtra.cmake, just call it later after the Helpers have been loaded. We can do this because the function is always called unconditionally, so no point in doing it in the generated file. This lets us move the function into the QtBuildRepoHelpers. Amends 98e8180e56322ce065e39cc1ef1d65b54caa8c25 Amends a804ac3d881fb036619f323f64e778a9e00b181d Task-number: QTBUG-86035 Change-Id: Idffed8f2eb9d728c779b77b31eba0d24d85752ea Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit b8f9252507f813fb27982fe72677756bdeedb585)
* CMake: Split and refactor QtBuildInternalsConfig.cmakeAlexandru Croitor2023-11-284-1469/+1495
| | | | | | | | | | | Move most of the code into two new files: - QtBuildRepoHelpers.cmake - QtBuildRepoExamplesHelpers.cmake Task-number: QTBUG-86035 Change-Id: I48c4e7c64f0ffb600118172b8e69b26018f36ffb Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> (cherry picked from commit 720b8ee6732f6fc8df5fb7133b569851356641b7)