aboutsummaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* CMake: Take custom libdir into accountJoerg Bornemann2022-06-161-1/+1
| | | | | | | | | | | | | When configuring with -libdir set to something that is not recognized by CMake's find_package search procedure, top-level builds failed to configure. This was due to a hard-coded lib/cmake directory added to CMAKE_PREFIX_PATH. Fixes: QTBUG-103823 Change-Id: If8b48e35e654089f32cbe4af9936238cd82b3dbb Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 96be84d703fb6b0c9ab95040b53c3b78b7a06ce7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Normalize submodule names by stripping tqtc- prefixesAlexandru Croitor2022-04-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In tqtc repos, the dependencies.yaml files may point to tqtc- prefixed repos, which can lead to build failures when doing a top-level build and the local repo directory names have no tqtc- prefix. This is the case both in the CI, and when using init-repository or git submodule init --recursive, because qt5.git specifies the 'path' key for each submodule to not contain any tqtc- prefix. Normalize the repo names by removing the tqtc- prefix when doing dependency resolution for CMake add_subdirectory calls, if such a submodule name does not exist on-disk. The normalization is conditional, to allow inclusion of repos that don't have a non-tqtc mirror. qt_internal_sync_to and the other git related operations are currently broken (both before and after this change) when used in conjunction with tqtc- repos and is non-trivial to fix. The first problem is the assumption of using the 'origin' remote, which will likely be an open-source repo that doesn't contain any tqtc repos. The second problem is that we would need to agree upon requiring 2 remotes, one open source and one tqtc one, to reliably choose where to clone / fetch from, as well as determining whether the checked out repo name needs to have a tqtc- prefix (by checking whether the repo does not exist in the open source remote for commercial only repos). Alternatively we could hard code a list of known open source repos, and anything not in the list will have its tqtc- prefix kept, but we still need to know which remote to use. As a drive-by, adjusted some of the shown messages for better readability and easier grepping. Fixes: QTBUG-102883 Change-Id: I6806b119dd32b14dc0d9711dc829bfc5130d1e6f Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 30068f2223b112650a1fb61ca6fd3b42cb26fcd3)
* CMake: Rework inter-repository dependency resolutionJoerg Bornemann2022-04-291-4/+3
| | | | | | | | | | | | | | | | | | | | | | In certain cases the dependency resolution between Qt repositories resulted in a wrong order, for example qtsvg being handled before qtbase. See the linked task for an example. Replace the existing algorithm with a post-order traversal of the dependency graph to produce a topological ordering. Rename qt_internal_add_module_dependencies to qt_internal_resolve_module_dependencies and remove unnecessary positional arguments. Use keyword arguments for a nicer API. Raise the cmake_policy in QtSynchronizeRepo.cmake to avoid policy warnings we now would get due to the use of IN_LIST. Fixes: QTBUG-98268 Change-Id: I1425fd9c802fa71ae42549ceb14bcfc4c0a62078 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 8a94d1e2946644253cf2979c35636cbfb850422d) Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Set QT_SUPERBUILD earlyFabian Kosmale2022-03-201-1/+4
| | | | | | | | | | | That will allow qtbase's .cmake.conf to check whether it is meant to be used in a superbuild or only for qtbase. Task-number: QTBUG-101640 Change-Id: I035c86f32497004cc1b8441456604106bacadad4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 14e486a8c43dd364aae2277daced99da19911ed9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* CMake: Remove CMake minimum version check in top-level projectAlexandru Croitor2021-07-271-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | The check is done in qtbase instead. Trying to do it in the top-level project is cumbersome due to needing to know whether it will be a static or shared Qt build. It's also cumbersome because the top-level build used to use qtbase's minimum cmake version values and that can get awkward to handle with submodule dependency updates. Replace the check with a regular minimum required call. The minimum version is 3.16 and the upper range value for NEW policy assignments is 3.20, while 3.21.0 is still kind of fresh and has some AUTOUIC issues. As a drive-by, add a clarifying comment about QtAutoDetect.cmake. Pick-to: 6.2 Task-number: QTBUG-95018 Change-Id: Ifb4ec0b4ed7f56ab0179feb79072c93d1d66ce63 Reviewed-by: Craig Scott <craig.scott@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Use qtbase's version as the top-level project versionAlexandru Croitor2021-04-151-1/+1
| | | | | | | | | | | This avoids the need to bump the qt5.git project version when branching the next minor Qt version. Pick-to: 6.1 6.0 Task-number: QTBUG-92861 Change-Id: Ib20ab614caefece00bd9e0172d9269077239ba6a Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Cache list of submodulesTor Arne Vestbø2021-04-131-0/+1
| | | | | | | | | Otherwise running cmake with QT_BUILD_SUBMODULES set in the environment would not persist for later cmake runs without the environment set, resulting in trying to reconfigure with every single available module. Change-Id: I85e57b16fdc8e51cae8fff083c7a7536b0ed16f1 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* cmake: Allow specifying list of submodules using environmentTor Arne Vestbø2021-03-301-5/+9
| | | | | | | | | | The variable now has a QT prefix to make it less likely to clash with other environment variables. For simplicity we use the same variable name internally. Change-Id: I4c8b1a43ae1facc2e33ae3cd21a8f6b43a437a9b Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Do not error out on missing optional repository dependenciesJoerg Bornemann2021-03-121-7/+22
| | | | | | | | | | | | | Read the 'required' value from dependencies.yaml and store all required dependencies of repository 'qtfoo' in a global property QT_REQUIRED_DEPS_FOR_qtfoo. Check this property in the top-level CMakeLists.txt and only print informational messages instead of errors for optional dependencies. Fixes: QTBUG-91144 Change-Id: I0e1b84a70221857cebba1b9a27456ad3667bfe3a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Bump versionPaul Wicking2021-01-071-1/+1
| | | | | | Task-number: QTQAINFRA-4126 Change-Id: Iafa83105ecceaa1c520c941314cb33449ef8ed54 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* CMake: Fix fuzzer-no-link check for super buildsAlexey Edelev2020-11-191-0/+1
| | | | | | | | | | | | Add platform detection before report enties evaluation in root CMakeLists.txt. QtPlatformSupport.cmake defines required platform-specific variables line CLANG before qt_configure_eval_commands call. Fixes: QTBUG-88496 Change-Id: I13afdbe29f2bffeb2c36c17e231b98b2aa2b41e6 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
* CMake: Check module dependency before configureAlexey Edelev2020-11-161-2/+4
| | | | | | | | Move all modules dependency check before actual configuration of any module. Change-Id: I40838ab59de1be1cd8ca3a006e195455f2692982 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Fix dependency handling when module is skippedAlexey Edelev2020-11-141-20/+23
| | | | | | | | | Put dependencies of all modules to top-level variables and check for unmet dependencies before module configuring. Fixes: QTBUG-88214 Change-Id: I089feb474687652f3f8fd1bb1959179ea1114983 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Use dependencies.yaml to order sub modulesVolker Hilsheimer2020-11-111-59/+16
| | | | | | | | | | | | | Don't rely on .gitmodules, instead parse the dependencies.yaml file from every subdirectory with a CMakeLists.txt, and sort all projects based on that data. Projects with no dependencies are added last. This allows us to get rid of the duplication of dependency information in .gitmodules, and makes each module the authoritative source of its own dependencies. Change-Id: Ib1ec6c63bde2aa1852399d598dac5b8e1efda31d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Bump the minimum required CMake version to 3.18Alexandru Croitor2020-11-061-1/+5
| | | | | | | | | This is the top-level counterpart change that uses the infra introduced in qtbase. Task-number: QTBUG-88086 Change-Id: I2524cd88da43cffb2b3742caedd1cd2f3130dff5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Deduplicate qtbase source path referencesAlexandru Croitor2020-11-061-4/+7
| | | | | Change-Id: I857d97c3844ab0a9fe728a499aac1ecd07a1c779 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Run auto-detection routines before any project commandJoerg Bornemann2020-10-121-0/+2
| | | | | | | | | | | | | | This is needed to ensure that the auto-detection runs before any toolchain file is loaded, like in a stand-alone qtbase build. This fixes the issue that we had to specify ANDROID_STL=c++_shared in a top-level build, even though it's properly defaulted in QtAutoDetect.cmake. Task-number: QTBUG-87309 Change-Id: I8ced2213ca2e5a877bfd210e59da4ef4d6c8ac74 Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Fix find_package puzzle piece of top-level cross-buildsJoerg Bornemann2020-10-121-1/+2
| | | | | | | | | | | | | | | | | | | The subdirectories, the top-level CMakeLists.txt adds, contain find_package(Qt6 COMPONENTS ...) calls. When cross-compiling to Android, the toolchain file sets CMAKE_FIND_ROOT_PATH and CMAKE_FIND_ROOT_PATH_MODE to ONLY. That means, the packages that are created in qtbase can never be found by other Qt repositories, e.g. qtdeclarative. Append the qtbase build dir to CMAKE_FIND_ROOT_PATH to find the Qt packages of the build dir when cross-compiling. Because of some CMake idiosyncracy, we need to append "${QtBase_BINARY_DIR}/lib/cmake" to CMAKE_PREFIX_PATH and not just "${QtBase_BINARY_DIR}". See qtbase/ec90f9013b4c6b63d7e03a964f66f97329be7885 for details. Task-number: QTBUG-85080 Change-Id: I799f851316538c310d73f5ab59c809229e16e8a8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Remove ${CMAKE_BINARY_DIR} from CMAKE_PREFIX_PATHJoerg Bornemann2020-10-111-2/+0
| | | | | | | | This is a left-over from before the bin, lib, ... directories were moved to the qtbase build directory. Change-Id: I24bfa36289648288b2b44cc809e0c390cd2c043b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Cmake: Include 3rdparty cmake dependencies in CMAKE_MODULE_PATHDavid Edmundson2020-09-101-0/+2
| | | | | | | | | | | | QtWayland looks for WaylandScanner. If QtBase is installed our CMake find files will be installed and everything will work correctly. If QtBase is not installed yet or out of date, we need to add our source cmake files to the search path. We currently add one of the 3rd party directories, but not the subdirectories. Change-Id: I53ce26b5b21b7e5e74752c730bca90295147f851 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Fix parsing of .gitmodules to be more robustAlexandru Croitor2020-06-181-8/+10
| | | | | | | | | | | | | | Fix empty lines in .gitmodules, rather than failing to configure with an error message that the line is malformed. Quote all relevant values, to avoid errors that string REGEX does not have enough arguments in cases when the parsed content is malformed. Remove some dead code. Change-Id: I300a76f82fe174290442c659ca2e84391db361a1 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Read module list from .gitmodulesLeander Beernaert2020-03-181-8/+72
| | | | | | | | | | | | | | | This patch mimics the behavior of qt.pro, where the module list is extracted from the .gitmodules file and then topologically sorted based on the modules dependencies. This patch also introduces a small check to make sure all the required dependencies are met and will be built. Change-Id: Idd3df9b618805ca0b2347eac57aaa39c1bcdb3dd Reviewed-by: Qt CMake Build Bot Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit b01225fb3257fa4c26d364c9a8fe5e19a04039e3) Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
* Start the CMake superbuildKevin Funk2020-03-181-0/+50
Also import and use ECMOptionalAddSubdirectory.cmake to add other module's as subdirectories, in case the directories exist. Additionally this module allows to disable the build of submodules by passing e.g. BUILD_qtsvg=OFF. This probably needs more though on how to hande the intermodule dependencies, but it's a start. Task-number: QTBUG-75582 Change-Id: Ic3de9711d9b865b2d96bdaee0089f570408b9693 Reviewed-by: Qt CMake Build Bot Reviewed-by: Cristian Adam <cristian.adam@qt.io> (cherry picked from commit 7509458d5f1ed5a48285471e32eda333cc3eeb8c) Reviewed-by: Leander Beernaert <leander.beernaert@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>