diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 85 |
1 files changed, 46 insertions, 39 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 70d67220..b163500c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,6 @@ # The real minimum version will be checked by the qtbase project. # 3.16 is the absolute minimum though. -cmake_minimum_required(VERSION 3.16...3.20) - +cmake_minimum_required(VERSION 3.16...3.21) # set QT_SUPERBUILD early, so that qtbase/.cmake.conf can check it set(QT_SUPERBUILD TRUE) @@ -9,10 +8,9 @@ set(QT_SUPERBUILD TRUE) # Include qtbase's .cmake.conf for access to QT_REPO_MODULE_VERSION set(__qt6_qtbase_src_path "${CMAKE_CURRENT_SOURCE_DIR}/qtbase") include("${__qt6_qtbase_src_path}/.cmake.conf") +include("${__qt6_qtbase_src_path}/cmake/QtBaseTopLevelHelpers.cmake") -# Run platform auto-detection /before/ the first project() call and thus -# before the toolchain file is loaded. -include("${__qt6_qtbase_src_path}/cmake/QtAutoDetect.cmake") +qt_internal_top_level_setup_autodetect() project(Qt VERSION "${QT_REPO_MODULE_VERSION}" @@ -21,43 +19,53 @@ project(Qt LANGUAGES CXX C ASM ) -# Required so we can call ctest from the root build directory -enable_testing() - -set(qt_module_prop_prefix "__qt_prop_") +qt_internal_top_level_setup_after_project() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -if (NOT QT_BUILD_STANDALONE_TESTS) - list(APPEND CMAKE_MODULE_PATH "${__qt6_qtbase_src_path}/cmake") - list(APPEND CMAKE_MODULE_PATH - "${__qt6_qtbase_src_path}/cmake/3rdparty/extra-cmake-modules/find-modules") - list(APPEND CMAKE_MODULE_PATH "${__qt6_qtbase_src_path}/cmake/3rdparty/kwin") -endif() +qt_internal_top_level_setup_cmake_module_path() -include("QtTopLevelHelpers") +include(QtTopLevelHelpers) include(ECMOptionalAddSubdirectory) -# Also make sure the CMake config files do not recreate the already-existing targets -if (NOT QT_BUILD_STANDALONE_TESTS) - set(QT_NO_CREATE_TARGETS TRUE) -endif() +qt_internal_top_level_before_build_submodules() +qt_internal_find_modules(known_submodules) # Get submodule list if not already defined if(NOT QT_BUILD_SUBMODULES) if(DEFINED ENV{QT_BUILD_SUBMODULES}) set(QT_BUILD_SUBMODULES "$ENV{QT_BUILD_SUBMODULES}") else() - qt_internal_find_modules(QT_BUILD_SUBMODULES) + set(QT_BUILD_SUBMODULES "${known_submodules}") endif() endif() set(QT_BUILD_SUBMODULES "${QT_BUILD_SUBMODULES}" CACHE STRING "Submodules to build") -qt_internal_sort_module_dependencies("${QT_BUILD_SUBMODULES}" QT_BUILD_SUBMODULES) +# Preliminary check if module should be skipped since -skip <module> or BUILD_<module> +# are provided. +set(explicitly_skipped_modules "") +foreach(module IN LISTS known_submodules) + if(DEFINED BUILD_${module} AND NOT BUILD_${module}) + list(APPEND explicitly_skipped_modules ${module}) + endif() +endforeach() + +foreach(module IN LISTS QT_BUILD_SUBMODULES) + if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${module}/CMakeLists.txt) + message(FATAL_ERROR + "Module '${module}' cannot be found. Please double-check the " + "spelling and try again. Or run\n" + "`./configure -init-submodules -submodules ${module}` " + "to clone the submodule and its dependencies.") + endif() +endforeach() + +qt_internal_sort_module_dependencies("${QT_BUILD_SUBMODULES}" QT_BUILD_SUBMODULES + SKIP_MODULES ${explicitly_skipped_modules}) foreach(module IN LISTS QT_BUILD_SUBMODULES) # Check for unmet dependencies if(NOT DEFINED BUILD_${module} OR BUILD_${module}) - message(NOTICE "Checking dependencies of submodule '${module}'") + message(STATUS "Checking dependencies of submodule '${module}'") get_property(required_deps GLOBAL PROPERTY QT_REQUIRED_DEPS_FOR_${module}) get_property(dependencies GLOBAL PROPERTY QT_DEPS_FOR_${module}) foreach(dep IN LISTS dependencies) @@ -80,11 +88,17 @@ foreach(module IN LISTS QT_BUILD_SUBMODULES) if(NOT error_reason STREQUAL "") if(required) + if(QT_INTERNAL_CALLED_FROM_CONFIGURE) + set(skip_argument "-skip ${module}") + else() + set(skip_argument "-DBUILD_${module}=OFF") + endif() + message(FATAL_ERROR "Module '${module}' depends on '${dep}', " "but ${error_reason}.\n" - "Note: Use '-skip ${module}' to exclude it from the build.") + "Note: Use '${skip_argument}' to exclude it from the build.") else() - message(NOTICE "Skipping optional dependency '${dep}' of '${module}', " + message(STATUS "Skipping optional dependency '${dep}' of '${module}', " "because ${error_reason}.") endif() endif() @@ -92,22 +106,15 @@ foreach(module IN LISTS QT_BUILD_SUBMODULES) endif() endforeach() +if(NOT DEFINED CMAKE_MESSAGE_CONTEXT_SHOW) + set(CMAKE_MESSAGE_CONTEXT_SHOW TRUE) +endif() + foreach(module IN LISTS QT_BUILD_SUBMODULES) - message(NOTICE "Configuring submodule '${module}'") + message(STATUS "Configuring submodule '${module}'") ecm_optional_add_subdirectory("${module}") - if(module STREQUAL "qtbase") - if (NOT QT_BUILD_STANDALONE_TESTS) - list(APPEND CMAKE_PREFIX_PATH "${QtBase_BINARY_DIR}/${INSTALL_LIBDIR}/cmake") - list(APPEND CMAKE_FIND_ROOT_PATH "${QtBase_BINARY_DIR}") - endif() - endif() + qt_internal_top_level_after_add_subdirectory() endforeach() -if(NOT QT_BUILD_STANDALONE_TESTS) - # Display a summary of everything - include(QtBuildInformation) - include(QtPlatformSupport) - qt_print_feature_summary() - qt_print_build_instructions() -endif() +qt_internal_top_level_end() |