[CMake] Warn when the version is older than 3.20.0.

This is a preparation to require CMake 3.20.0 after LLVM 16 has been
released.

This change has been discussed on discourse
https://discourse.llvm.org/t/rfc-upgrading-llvms-minimum-required-cmake-version/66193

Reviewed By: #libc_vendors, MaskRay, ChuanqiXu, to268, thieta, stellaraccident, ldionne, #libc, #libc_abi, phosek

Differential Revision: https://reviews.llvm.org/D137724
This commit is contained in:
Mark de Wever
2022-11-09 18:08:54 +01:00
parent ba237cb268
commit d40dc41738
15 changed files with 109 additions and 0 deletions

View File

@@ -11,6 +11,13 @@ include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
project(Clang)
set(CLANG_BUILT_STANDALONE TRUE)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
endif()
# Must go below project(..)

View File

@@ -10,6 +10,13 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR OR COMPILER_RT_STANDALONE
project(CompilerRT C CXX ASM)
set(COMPILER_RT_STANDALONE_BUILD TRUE)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
endif()
set(LLVM_COMMON_CMAKE_UTILS "${CMAKE_CURRENT_SOURCE_DIR}/../cmake")

View File

@@ -4,6 +4,13 @@
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
cmake_minimum_required(VERSION 3.13.4)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
project(CompilerRTBuiltins C ASM)

View File

@@ -1,5 +1,12 @@
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
cmake_minimum_required(VERSION 3.13.4)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
project(CompilerRTCRT C)

View File

@@ -31,6 +31,13 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
message("Building Flang as a standalone project.")
project(Flang)
set(FLANG_STANDALONE_BUILD ON)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
else()
set(FLANG_STANDALONE_BUILD OFF)
endif()

View File

@@ -8,6 +8,13 @@
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
cmake_minimum_required(VERSION 3.13.4)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
project(FlangRuntime C CXX)

View File

@@ -11,6 +11,13 @@ include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
project(lld)
set(LLD_BUILT_STANDALONE TRUE)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
endif()
# Must go below project(..)

View File

@@ -19,6 +19,13 @@ if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
project(lldb)
set(LLDB_BUILT_STANDALONE TRUE)
set(LLVM_INCLUDE_TESTS ON CACHE INTERNAL "")
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
endif()
# Must go below project(..)

View File

@@ -7,6 +7,13 @@ include(GNUInstallDirs)
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(LLDB_BUILT_STANDALONE TRUE)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
set(CMAKE_MODULE_PATH
${CMAKE_MODULE_PATH}

View File

@@ -1,6 +1,13 @@
# See docs/CMake.html for instructions about how to build LLVM with CMake.
cmake_minimum_required(VERSION 3.13.4)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake

View File

@@ -64,6 +64,17 @@ and there is no way to suppress this error.
* Apple Clang >= 10.0
* Visual Studio 2019 >= 16.7
With LLVM 16.x we will raise the version requirement of CMake used to build
LLVM. The new requirements are as follows:
* CMake >= 3.20.0
In LLVM 16.x this requirement will be "soft", there will only be a diagnostic.
With the release of LLVM 17.x this requirement will be hard and LLVM developers
can start using CMake 3.20.0 features, making it impossible to build with older
versions of CMake.
Changes to the LLVM IR
----------------------

View File

@@ -11,6 +11,13 @@ include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
project(mlir)
set(MLIR_STANDALONE_BUILD TRUE)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
endif()
# Must go below project(..)

View File

@@ -12,6 +12,13 @@ list(INSERT CMAKE_MODULE_PATH 0
if (OPENMP_STANDALONE_BUILD OR "${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
set(OPENMP_STANDALONE_BUILD TRUE)
project(openmp C CXX)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
endif()
# Must go below project(..)

View File

@@ -2,6 +2,13 @@
if (NOT DEFINED LLVM_MAIN_SRC_DIR)
project(Polly)
cmake_minimum_required(VERSION 3.13.4)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
set(POLLY_STANDALONE_BUILD TRUE)
endif()

View File

@@ -1,5 +1,12 @@
# This file handles building LLVM runtime sub-projects.
cmake_minimum_required(VERSION 3.13.4)
if ("${CMAKE_VERSION}" VERSION_LESS "3.20.0")
message(WARNING
"Your CMake version is ${CMAKE_VERSION}. Starting with LLVM 17.0.0, the "
"minimum version of CMake required to build LLVM will become 3.20.0, and "
"using an older CMake will become an error. Please upgrade your CMake to "
"at least 3.20.0 now to avoid issues in the future!")
endif()
project(Runtimes C CXX ASM)
# Add path for custom and the LLVM build's modules to the CMake module path.