summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2022-03-04 11:50:49 +0100
committerAlexandru Croitor <alexandru.croitor@qt.io>2022-03-04 22:35:18 +0100
commit0332065357a5f65bb43d113f99a7138d0bc65261 (patch)
treeced9ffad455152c0098931e8842cfc62c13544d0
parentd706d7ceb91507c71d779463cfc25982acaa36b1 (diff)
CMake: Fail gracefully when using an unsupported CMake version
Previously if qtwebengine was configured with a CMake version lower than 3.19, CMake would exit with a fatal error saying the version is too low. Now the CMake version check is delayed to the configure summary which changes the hard error into a build time warning instead, just like with all the other repo requirements. An additional cmake_minimum_required call is used to require all 3.19 behaviors (upgraded policies) once configure establishes that the CMake version is new enough. Pick-to: 6.2 6.3 Change-Id: I03a20ae62ce2dcee23e5615241c6c97a86df4d2f Reviewed-by: Michal Klocek <michal.klocek@qt.io>
-rw-r--r--.cmake.conf1
-rw-r--r--CMakeLists.txt5
-rw-r--r--configure.cmake10
-rw-r--r--src/CMakeLists.txt4
4 files changed, 18 insertions, 2 deletions
diff --git a/.cmake.conf b/.cmake.conf
index 280060834..e6e4d0d75 100644
--- a/.cmake.conf
+++ b/.cmake.conf
@@ -1,2 +1,3 @@
set(QT_REPO_MODULE_VERSION "6.4.0")
set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1")
+set(QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_WEBENGINE "3.19")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b0a0c7ffb..649c8c885 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,7 @@
-cmake_minimum_required(VERSION 3.19)
+# Require the Qt (not WebEngine) minimum supported CMake version.
+# Another WebEngine-specific version check will be done in configure.cmake
+# and reported in the configure summary.
+cmake_minimum_required(VERSION 3.16)
include(.cmake.conf)
include(ExternalProject)
diff --git a/configure.cmake b/configure.cmake
index 40059662b..3baf5d4ad 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -366,6 +366,16 @@ else()
set(WIN_ARM_64 OFF)
endif()
+add_check_for_support(
+ MODULES QtWebEngine QtPdf
+ CONDITION
+ CMAKE_VERSION
+ VERSION_GREATER_EQUAL
+ ${QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_WEBENGINE}
+ MESSAGE
+ "Build requires CMake ${QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_WEBENGINE} or higher."
+)
+
assertTargets(
MODULES QtWebEngine QtPdf
TARGETS Gui Quick Qml
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 227e1186e..31123d06c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 3.19)
##
# MAIN CONFIGURE
##
@@ -52,6 +51,9 @@ if(NOT QT_FEATURE_qtwebengine_build AND NOT QT_FEATURE_qtpdf_build)
return()
endif()
+# Upgrade CMake policies to the minimum supported version.
+cmake_minimum_required(VERSION ${QT_SUPPORTED_MIN_CMAKE_VERSION_FOR_BUILDING_WEBENGINE})
+
##
# MODULES
##