summaryrefslogtreecommitdiffstats
path: root/cmake
Commit message (Collapse)AuthorAgeFilesLines
* CMake: Warn when examples are not added via qt_internal_add_exampleAlexandru Croitor2024-03-113-1/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To ensure examples can be built as ExternalProjects, the example subdirectories need to be added via qt_internal_add_example rather than just add_subdirectory. qt_internal_add_example is also needed for correct installation of example sources. To catch examples that are still not added via qt_internal_add_example, set a QT_WARN_ABOUT_EXAMPLE_ADD_SUBDIRECTORY variable at the top of the examples/CMakeLists.txt directory scope and show a warning in qt_add_executable whenever that variable is TRUE. Calls of qt_internal_add_example will set the variable to FALSE, making sure the warning is not shown for properly added examples. This is limited to developer builds and can be opted out of via the QT_NO_WARN_ABOUT_EXAMPLE_ADD_SUBDIRECTORY_WARNING variable. qt_add_executable is used as the 'hook' for showing the error, because that is the most likely function to be used in examples. We don't use qt_standard_project_setup in all projects yet, so we don't want to use that one. Task-number: QTBUG-90820 Task-number: QTBUG-123096 Change-Id: I7a0b0b2cc60c70903db03b56c06494c127a62420 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Adjust QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES for EP examplesAlexandru Croitor2024-03-111-0/+17
| | | | | | | | | | | Make sure to consider all qt_prefixes for adjusting QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES with locations where qml plugin config files might be present. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: I5a7eec434635db1953871d735e2420c331ccee48 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Allow specifying additional glob paths for QmlPlugins.cmakeAlexandru Croitor2024-03-111-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently we hard-code to look for qml plugin Config.cmake files in the current list dir, whether the Qt6Qml directory is. This is not sufficient for finding qml plugins in a prefix build of a repo that has not been installed yet. For example qtquick3d plugins will be in qtquick3d_build_dir/lib/cmake/Qt6Qml/QmlPlugins, which won't be picked up by the Qt6Qml Config file in the installed Qt location. Allow specifying extra qml plugin glob prefixes via a new QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES variable. This is similar to QT_ADDITIONAL_PACKAGES_PREFIX_PATH. Any path specified via QT_ADDITIONAL_QML_PLUGIN_GLOB_PREFIXES will have the QmlPlugins/${INSTALL_CMAKE_NAMESPACE}*Config.cmake glob appended to it, and then used for globbing files in that location, after processing the main location wherever Qt6Qml is. This will be used by ExternalProject example machinery. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: I469863c965b8b13cf007c611976a64fbff6e9111 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Disable ExternalProject examples for -debug-and-release buildsAlexandru Croitor2024-03-111-1/+5
| | | | | | | | | | | | | Unfortunately when using CMake <= 3.27 together with -debug-and-release, it's not possible to reliably build examples as external projects due to clobbered files in the same build dir. Disable building examples as EPs in such a case. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: Icea9fdab47986c2608e1952a0bbae72365ac7a62 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Adjust CMAKE_MODULE_PATH for ExternalProject examplesAlexandru Croitor2024-03-111-0/+6
| | | | | | | | | | | | | | | | When building EP examples for a repo that defines a bundled library, we need to make sure the relevant FindWrapBundledFooConfigExtra.cmake file is found when looking up dependencies. For a prefix build, that file is placed in the build dir of the repo. Use the list of qt_prefixes that includes the build dir of the repo, append lib/cmake/Qt6 to it and pass that as additional values to the CMAKE_MODULE_PATH variable of the external project. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: I85d5f360380856fcfb8be7235b8365dcf15aa0c0 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Fix syncqt IMPORTED_LOCATION path for multi-config buildsAlexandru Croitor2024-03-112-2/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building examples as ExternalProjects as part of a multi-config qtbase build, syncqt can not be located with the following error: CMake Error at Qt6CoreToolsAdditionalTargetInfo.cmake:10 (message): Unable to add configure time executable Qt6::syncqt qtbase/libexec/syncqt doesn't exist Call Stack (most recent call first): qtbase/lib/cmake/Qt6CoreTools/Qt6CoreToolsConfig.cmake:44 (include) qtbase/cmake/QtPublicDependencyHelpers.cmake:65 (find_package) qtbase/lib/cmake/Qt6Core/Qt6CoreDependencies.cmake:34 (_qt_internal_find_tool_dependencies) qtbase/lib/cmake/Qt6Core/Qt6CoreConfig.cmake:42 (include) qtbase/lib/cmake/Qt6/Qt6Config.cmake:165 (find_package) CMakeLists.txt:13 (find_package) The Qt6CoreToolsAdditionalTargetInfo.cmake file is used both for install(EXPORT) Config files as well as export(EXPORT) Config files, and in the latter case, the path that syncqt is looked up in is not correct because syncqt is not yet installed. In addition to checking whether syncqt exists in the install path, also check if it exists in the build dir. Ideally the additional path would be stored in a separate file that is not installed, but the current code infrastructure does not provide such a feature. Because we store a relative path instead of an absolute path, the build path does not leak, so the situation is bearable. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: I16ad5c280751e050bc9b039ebd38ec9a66a6554c Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Pass CMAKE_MODULE_PATH to external project examplesAlexandru Croitor2024-03-111-0/+1
| | | | | | | | | | | | | | | | | | | Some examples depend on FindWrapFoo.cmake scripts that are part of a repo. An example is qtgrpc with FindWrapProtoc.cmake. These need to be available when building external project examples in a prefix build where the repo is not installed yet, and thus the source dir FindWrap scripts need to be used instead. Make sure to pass the value of CMAKE_MODULE_PATH to the external projects to ensure these scripts are found. CMAKE_MODULE_PATH is populated by qt_set_up_build_internals_paths as part of the qt repo build. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: I3e977919bc137ed60e8eb9300625e5d8b87b373e Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* CMake: Allow passing extra variables to external project examplesAlexandru Croitor2024-03-111-1/+9
| | | | | | | | | | | | | | | | | | In some repos we need to be able to pass extra cache variables to find 3rd party packages when building examples as external projects. Introduce QT_EXAMPLE_CMAKE_VARS_TO_PASS to allow passing vars like OpenSSL_ROOT or Protobuf_ROOT if they are set in the repo project. It should be noted that QT_EXAMPLE_CMAKE_VARS_TO_PASS expects a special syntax for its values, of the from VAR_NAME:CMAKE_TYPE, due to the pre-existing implementation on how we pass variables to ExternalProject. Task-number: QTBUG-90820 Task-number: QTBUG-96232 Change-Id: Ie3e74d4fde106f947d12e51d27e41a310157aab6 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* configure-cmake-mapping.md: add -qt-host-path and -DQT_HOST_PATHMitch Curtis2024-03-081-0/+1
| | | | | | Pick-to: 6.5 6.6 6.7 Change-Id: I6deb7b648c39adb8fb2765de5be29b0743ef2836 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Realign columns in the configure-cmake-mappingGiuseppe D'Angelo2024-03-071-2/+2
| | | | | | Change-Id: Ie7c3c35b6e5a8d02d05650b86f6c2d47b72c3835 Pick-to: 6.7 6.6 6.5 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Change license for .in filesLucie Gérard2024-03-0519-0/+59
| | | | | | | | | | | | | According to QUIP-18 [1], all build system files should be BSD-3-Clause. The files in this patch are part of the build system. [1]: https://contribute.qt-project.org/quips/18 Pick-to: 6.7 Task-number: QTBUG-121787 Change-Id: Ibc6a60a9b009fab0c953e8e3269533c121e4511e Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* CMake: Fix assignment in internal_get_build_vars_for_external_projectsAlexandru Croitor2024-03-051-2/+2
| | | | | | | | | | | | The check and variable name were incorrect after a refactoring. Amends ba9623860056cbb75e426e27905f9c29b687cefa Pick-to: 6.6 6.7 Task-number: QTBUG-84884 Task-number: QTBUG-90820 Change-Id: I33b6b81695a6352c7869ef6186e00881b47bd6f3 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Don't add default rpaths to qt qml plugins when requestedAlexandru Croitor2024-03-051-0/+18
| | | | | | | | | | | | | | | | | | | | | | | qt_add_qml_plugin has code to set a sensible install rpath for user project qml plugins. If Qt was configured without rpath support, we should not add any rpaths to qt qml plugins: - qt-computed rpaths added by qt_apply_rpaths - user-project rpaths added by qt_add_qml_plugin This is done by setting QT_NO_QML_PLUGIN_RPATH to TRUE as part of QtSetup, effectively applying the option to any qml plugin that is built by internal qt api. User projects will still be able to use the default rpaths added by qt_add_qml_plugin, even if qt itself was configured with no rpath support. Pick-to: 6.7 Fixes: QTBUG-122687 Change-Id: I8178b527553dd00436d0abb3b44061ea16edc121 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* configure: Translate only boolean options to featuresJoerg Bornemann2024-03-051-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This amends commit be009c6857dc75c0bdf789c4ac9323f0cf1fd9e6. The configure option -no-opengl was mistakenly translated to the CMake argument -DFEATURE_opengl=no. The command line option "opengl" however is defined as qt_commandline_option(opengl TYPE optionalString VALUES no yes desktop es2 dynamic ) which is not boolean. And only boolean command-line options may automagically control features of the same name. It just happens that the values "no" and "yes" look boolean. Setting FEATURE_opengl instead of INPUT_opengl broke feature conditions that check the INPUT_opengl value. Fix this by checking the type of the corresponding command line option instead of guessing the type from the INPUT_* value. An option (e.g. force-asserts) can be diverted to a differently named input (e.g. force_asserts) with the NAME argument of qt_commandline_option. In this case, we cannot deduce the option name from the input's name. To handle this, we store the input's type in commandline_input_${name}_type and read it when translating feature values. Fixes: QTBUG-122914 Change-Id: Ibb4b0633b6635bd2ef6f26ed8f4b19d239bf5854 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: add options to not generate target wrappersSamuli Piippo2024-03-051-1/+1
| | | | | | | | | | | The target wrappers for qmake and qtpaths do not work on Yocto builds and only create confusion when they are available in target. Add option to disable their generation. Pick-to: 6.7 Task-number: QTBUG-122420 Change-Id: Ibb829cc846ad6c470fe29e746ade42fccaa33a6f Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: Allow silencing CMake generator warning from environmentTor Arne Vestbø2024-03-041-1/+2
| | | | | | Pick-to: 6.7 6.6 6.5 Change-Id: I13d3000121be39f204b4374118690fe27702dd12 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* wasm: remove DISABLE_EXCEPTION_CATCHING workaroundMorten Sørvig2024-02-271-6/+1
| | | | | | | | | | Qt no longer sets DISABLE_EXCEPTION_CATCHING and can use the common logic here. Task-number: QTBUG-121822 Change-Id: If02feafe9eeac49fa2861d2357b358a19e756438 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* wasm: don't set DISABLE_EXCEPTION_CATCHINGMorten Sørvig2024-02-271-2/+0
| | | | | | | | | | This is on by default anyway (see Emscripten settings.js), and setting it here interferes if exceptions are enabled by other means. Fixes: QTBUG-121822 Change-Id: I61d3f1960208e928a4144cff56a0b03c39087a34 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* Add the support for custom definitions to the qt_manual_moc functionAlexey Edelev2024-02-231-5/+38
| | | | | | | | | | | The function now support two new arguments: - DEFINITIONS, which allows specifying the custom definitions - TARGETS, the list of targets thart will be used to collect the [INTERFACE_]INCLUDE_DIRECTORIES and COMPILE_DEFINITIONS. Task-number: QTBUG-104898 Change-Id: I3f67537057f91a97597788f1bd4db6904bac6d9c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Wrap condition in _qt_internal_check_depfile_support with parenthesesAlexey Edelev2024-02-221-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 6.6 6.7 Change-Id: Ib2515ba85417b32cef3f799e0cb2c89d2c4257ab Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Rename I18N_*LANGUAGES variables and parametersJoerg Bornemann2024-02-211-2/+2
| | | | | | | | | ...according to the Qt 6.7 CMake API review. Pick-to: 6.7 Task-number: QTBUG-122396 Change-Id: I42012e346325ff05d63fa4dac44276eef15320fe Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* 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.7 6.6 6.5 Change-Id: I8de21f1f27cd177211ebf70fac0e01292cfa410c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Teach qt_config_compile_test to set the build outputAlexandru Croitor2024-02-211-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 6.6 6.7 Task-number: QTBUG-122596 Change-Id: Ib9664c158ba9a391bd17bf30a28f9a34eba991d5 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* wasm: update Emscripten to 3.1.50Lorn Potter2024-02-211-1/+1
| | | | | | Pick-to: 6.7 Change-Id: Id147a927420a1743ef1cfd952b36e90ac0c319dd Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* CMake: Introduce a CMake coding style documentAlexandru Croitor2024-02-192-0/+202
| | | | | | | | | | | Better to have something, than nothing at all. Mention it in the cmake readme. Task-number: QTBUG-120225 Change-Id: Ieffeeaac714b89d5d8b5a8b0c51abf3fe8e0a6c6 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Force linking against versioned libraries when building Qt artifactsAlexey Edelev2024-02-192-3/+21
| | | | | | | | | Replace Qt:: namespace with Qt6:: namespace in target_link_libraries for the Qt modules/plugins/libraries. Fixes: QTBUG-114706 Change-Id: Idfd0917dbe1a6a266bc4e9d5f465e550788b5aaf Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix framework headers copying when module don't have header filesAlexey Edelev2024-02-151-11/+13
| | | | | | | Amends 103eca1070a75bfa97d0b72b94e0c759ef0bcd1c Change-Id: I3caae60c022cd46a6d33691760b619920d6e778e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add configure mappings for QT_BUILD_<TESTS|EXAMPLES>_PROJECTAlexey Edelev2024-02-142-0/+16
| | | | | | Pick-to: 6.7 Change-Id: I1e9f877c4c9b6257f4f90e3361d5a0226e62e841 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Change the mechanism that copies framework header filesAlexey Edelev2024-02-141-5/+26
| | | | | | | | | | | | | | | | | | 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 6.6 6.7 Change-Id: I71ba716d17a879f20ae0869cf2257d246ac17eff Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Make possible partial tool lookup when using QT_HOST_PATHAlexey Edelev2024-02-141-8/+20
| | | | | | | | | | | | | | | | Consider QT_HOST_PATH when setting the QT_WILL_BUILD_TOOLS flag. In this case if we do not crosscompile or require building tools aka QT_FORCE_BUILD_TOOLS=ON, we may by pass tool_FOUND check and assume that we will try building the missing tool. Set qt_require_find_tools GLOBAL property to indicate the tools lookup requirement. For tools that can be found we will try re-using them from QT_HOST_PATH, but not building from scratch. Change-Id: I94e92f62eb799308e38721b4d580052bb4bb35f9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove year from generic Qt copyright informationKai Köhne2024-02-141-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 Pick-to: 6.7 6.6 Change-Id: I4e1f1563376ae36b3c260359d830f00969ab9351 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Bump iOS minimum deployment target to iOS 16Tor Arne Vestbø2024-02-141-1/+1
| | | | | | | | | | | According to https://developer.apple.com/support/app-store/ iOS 16 and 17 together cover 89% of devices that transacted on the App Store on February 4, 2024. And by the time Qt 6.8 is ready, iOS 18 will likely be out or close to being released. Change-Id: Ice853d0136ee4c697d61add68a996548ac44a0ce Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: Generate Apple privacy manifest files for Qt modulesTor Arne Vestbø2024-02-135-0/+57
| | | | | | | | | | | | | | | | | | | The default manifest is a minimal file that claims NSPrivacyTracking false, along with an empty list of NSPrivacyTrackingDomains and NSPrivacyCollectedDataTypes, as Qt does not generally do user tracking. Modules can override the default manifest by setting the PRIVACY_MANIFEST target property, specifying a custom privacy manifest. The NSPrivacyAccessedAPITypes key is only required for iOS for now. Even though we don't build Qt for iOS as frameworks yet, which is required to embed a privacy manifest, we include the keys for the APIs we known we use. Task-number: QTBUG-114319 Change-Id: I654bb52b98ee963adeeb744b35f3a1c2a1270969 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* wasm: Make sure emrun.bat is used when running autotests on windowsEven Oscar Andersen2024-02-132-3/+7
| | | | | | | | | | | | | | | | | | The test system tried to run emrun (No .bat). This failed with a file-not-found error on windows. Also there was a test for (WIN32) when deciding to use cmd /c. This test has been updated to (CMAKE_HOST_WIN32) Also the aforementioned cmd /c was not present in the test run output. It has been added. Fixes: QTBUG-121996 Change-Id: Ib3c053949865038ad43abd479402f5e8e3c015ac Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Simplify feature calculationJoerg Bornemann2024-02-131-15/+3
| | | | | | | | | | Since configure doesn't translate -feature-foo to INPUT_foo=ON anymore, we can remove the code that tries to calculate the feature value from INPUT_foo. Task-number: QTBUG-120529 Change-Id: I4829bb634ca8c3f08b489469532b65541d76fa70 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Remove qt_internal_compute_features_from_possible_inputsJoerg Bornemann2024-02-133-59/+0
| | | | | | | | | | | This function calculated the values of the features 'no-prefix' and 'developer-build' from INPUT_* values. Since configure directly translates -no-prefix and -developer-build to FEATURE_no_prefix and FEATURE_developer_build, we can remove the function. Task-number: QTBUG-120529 Change-Id: Ide1fa61af175d8f6a6aa6363dfdfa94912836345 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* configure: translate inputs matching feature names to FEATURE_fooJoerg Bornemann2024-02-131-1/+10
| | | | | | | | | | | Inputs (in the sense of configure commandline options) are now translated to -DFEATURE_foo=ON/OFF if the input name matches a feature name. This is going to replace more complicated logic in our feature evaluation. Task-number: QTBUG-120529 Change-Id: I3ef45cd0e0a1462c53543cd2152eaf7f94318d9d Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* configure: Set -DFEATURE_stdlib_libcpp on "-platform *-libc++"Joerg Bornemann2024-02-131-1/+1
| | | | | | | | | Directly set the feature variable instead of the INPUT_* variable. The magic translation from INPUT_* to FEATURE_* is removed in a subsequent commit. Change-Id: I8156a20e9af6883783c9a7fa6b4f591d7a2f587c Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* configure: Convert -feature-* arguments to -DFEATURE_foo CMake argsJoerg Bornemann2024-02-131-16/+20
| | | | | | | | | | | | We now convert the configure arguments -feature-foo and -no-feature-foo to the CMake arguments -DFEATURE_foo=ON and -DFEATURE_foo=OFF. This is done, because the former behavior was surprising, and it allows us to remove quite some code that was needed to calculate feature values from INPUT_foo and FEATURE_foo. Task-number: QTBUG-120529 Change-Id: I94f8eb4adbbcaa1090aedce6e711012781c62a3c Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Fix the namespaceless target condition in __qt_internal_walk_libsAlexey Edelev2024-02-131-1/+1
| | | | | | | | | | Access the target name value, but not use the variable name in when checking the target existence. Pick-to: 6.2 6.5 6.6 6.7 Change-Id: I0f86e3c7665d9c028bf4cbdc5aa8fb840fe1d542 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Add the missing versioned alias for the GlobalConfigPrivate targetAlexey Edelev2024-02-121-0/+1
| | | | | | | | The build tree versioned alias is missing for the GlobalConfigPrivate target. Change-Id: I42e9f63363be472e661b656f665e29ea894b7e33 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Introduce NO_GENERATE_CPP_EXPORTS argument for qt_internal_add_moduleAlexey Edelev2024-02-091-2/+4
| | | | | | | | | | | The argument is inverted GENERATE_CPP_EXPORTS argument. Use it explicitly for the modules that do not require the autogenerated cpp exports. Task-number: QTBUG-90492 Change-Id: Ic67772ba9ed5e40f132a97e7d6844102ad023ff3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: build repo helpers - fine-grained test/example optionsTim Blechmann2024-02-081-4/+12
| | | | | | | | | | | the tests/examples could only be enabled globally. when working on a specific repo, it's beneficial to disable tests/examples for other projects to reduce project sizes (and cmake configure/generate times) Change-Id: I0026ba87b667d427043cc8eb1baa6c28b2046dd7 Pick-to: 6.7 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: improve documentation of NO_PCH_SOURCESTim Blechmann2024-02-081-1/+1
| | | | | | | | Add the reference to unity builds in the documentation of NO_PCH_SOURCES to fully describe the semantics. Change-Id: Icfd3ee401efa154da4b8ed9a307d29f2605d948a Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Add sanity check for QT_NAMESPACE validnessAlexey Edelev2024-02-071-0/+5
| | | | | | | | | It looks like we don't even support nested namespace(RCC namespace mangling fails). Assuming that QT_NAMESPACE should be the valid C/C++ indentifier. Change-Id: I5c2073c21964eb96abb3e894d83e1df65f7730b4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Improve the QT_NAMESPACE definition in Qt6CoreExtrasAlexey Edelev2024-02-071-0/+8
| | | | | | | | | The perivous version generated weird condition, and seems changing the QT_NAMESPACE after qtbase configuration is noop, we may replace the generated condition with the conditional generation. Change-Id: Ifa09dba4db00099a07da2cff5505e6fd0b008289 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add plugins of imported QtModules to the _qt_plugins propertyAlexey Edelev2024-02-061-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 6.6 6.7 Change-Id: I9824351ebab5a24509800da4db69f1e282a35884 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Fix configuring a standalone test on Apple platformsAlexandru Croitor2024-02-022-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 Pick-to: 6.6 6.7 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>
* Bump macOS minimum deployment target to 12 (Monterey)Elias Toivola2024-02-011-1/+1
| | | | | | | | | | macOS 11 is at its end-of-life and no longer supported by Apple. It should be dropped from dev (Qt 6.8). Task-number: QTQAINFRA-6009 Change-Id: Ib5fc5adbc13eb08e4603b226b9d7748417765b15 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Add the the implicit promotion to global for Qt platform targetsAlexey Edelev2024-01-312-0/+30
| | | | | | | | | | | | | | | | | | | | | Bundled 3rdparty libraries link Qt platform targets implicitly, which lead to the dependency resolution when the library is used by another targets. For qtbase this works just fine since all platform targets are not imported and they are used from a build tree. But in case if 3rdparty library is built as part of Qt repo different from qtbase platform targets are imported and trigger the global promotion in CMake. Usually qt_find_package for the 3rdparty libraries is called somewhere in src/... directory and since Qt::Platform* targets are already created in the top-level repo CMakeLists.txt by the find_package(Qt ...) call, this leads to an error. The propsed fix forces the global promotion of Qt platform targets as soon as they created by the one of the initial find_package(Qt ...) calls. Change-Id: Iceb53f9ecccbdc438f9bc3bcc836583cfd4de535 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>