From 2b218883cda6b16d38eb2372ab080aa5f5326e0c Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 13 Oct 2020 14:01:54 -0400 Subject: Add deprecation warnings for policies CMP0075 and below The OLD behaviors of all policies are deprecated, but only by documentation. Add an explicit deprecation diagnostic for policies introduced in CMake 3.12 and below to encourage projects to port away from setting policies to OLD. --- Source/cmMakefile.cxx | 2 +- Tests/RunCMake/CheckModules/CMP0075-stderr.txt | 13 ++++++++++++- Tests/RunCMake/add_library/CMP0073-stderr.txt | 10 ++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 Tests/RunCMake/add_library/CMP0073-stderr.txt diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 9286e93..c366b48 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4427,7 +4427,7 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, // Deprecate old policies, especially those that require a lot // of code to maintain the old behavior. - if (status == cmPolicies::OLD && id <= cmPolicies::CMP0072 && + if (status == cmPolicies::OLD && id <= cmPolicies::CMP0075 && !(this->GetCMakeInstance()->GetIsInTryCompile() && ( // Policies set by cmCoreTryCompile::TryCompileCode. diff --git a/Tests/RunCMake/CheckModules/CMP0075-stderr.txt b/Tests/RunCMake/CheckModules/CMP0075-stderr.txt index 960fe94..97833f5 100644 --- a/Tests/RunCMake/CheckModules/CMP0075-stderr.txt +++ b/Tests/RunCMake/CheckModules/CMP0075-stderr.txt @@ -47,4 +47,15 @@ CMake Warning \(dev\) at [^ Call Stack \(most recent call first\): CMP0075.cmake:41 \(check_include_files\) CMakeLists.txt:[0-9]+ \(include\) -This warning is for project developers. Use -Wno-dev to suppress it.$ +This warning is for project developers. Use -Wno-dev to suppress it. ++ +CMake Deprecation Warning at CMP0075.cmake:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0075 will be removed from a future version + of CMake. + + The cmake-policies\(7\) manual explains that the OLD behaviors of all + policies are deprecated and that a policy should be set to OLD only under + specific short-term circumstances. Projects should be ported to the NEW + behavior and not rely on setting a policy to OLD. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/add_library/CMP0073-stderr.txt b/Tests/RunCMake/add_library/CMP0073-stderr.txt new file mode 100644 index 0000000..7f43fd7 --- /dev/null +++ b/Tests/RunCMake/add_library/CMP0073-stderr.txt @@ -0,0 +1,10 @@ +^CMake Deprecation Warning at CMP0073.cmake:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0073 will be removed from a future version + of CMake. + + The cmake-policies\(7\) manual explains that the OLD behaviors of all + policies are deprecated and that a policy should be set to OLD only under + specific short-term circumstances. Projects should be ported to the NEW + behavior and not rely on setting a policy to OLD. +Call Stack \(most recent call first\): + CMakeLists.txt:[0-9]+ \(include\)$ -- cgit v0.12 From 3eaf053940682a0ca69cc9118ac7237b4b3e006f Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 13 Oct 2020 14:37:47 -0400 Subject: export: Increase maximum policy version in exported files to 3.18 The files generatd by `install(EXPORT)` and `export()` commands are known to work with policies as of CMake 3.18, so enable them in sufficiently new CMake versions. --- Source/cmExportFileGenerator.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index cbae4e5..a853bb1 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -924,13 +924,13 @@ void cmExportFileGenerator::GeneratePolicyHeaderCode(std::ostream& os) // Isolate the file policy level. // Support CMake versions as far back as 2.6 but also support using NEW - // policy settings for up to CMake 3.17 (this upper limit may be reviewed + // policy settings for up to CMake 3.18 (this upper limit may be reviewed // and increased from time to time). This reduces the opportunity for CMake // warnings when an older export file is later used with newer CMake // versions. /* clang-format off */ os << "cmake_policy(PUSH)\n" - << "cmake_policy(VERSION 2.6...3.17)\n"; + << "cmake_policy(VERSION 2.6...3.18)\n"; /* clang-format on */ } -- cgit v0.12 From a0e474aaf25f5554750eb72cc1cff1f73effa30a Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 13 Oct 2020 14:42:08 -0400 Subject: Configure CMake itself with policies through CMake 3.18 --- CMakeLists.txt | 2 +- Utilities/Doxygen/CMakeLists.txt | 2 +- Utilities/Sphinx/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d860d4..a2fcf2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ # Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. -cmake_minimum_required(VERSION 3.1...3.15 FATAL_ERROR) +cmake_minimum_required(VERSION 3.1...3.18 FATAL_ERROR) set(CMAKE_USER_MAKE_RULES_OVERRIDE_C ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideC.cmake) set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX ${CMAKE_CURRENT_SOURCE_DIR}/Source/Modules/OverrideCXX.cmake) project(CMake) diff --git a/Utilities/Doxygen/CMakeLists.txt b/Utilities/Doxygen/CMakeLists.txt index 5bf13f3..a880f7a 100644 --- a/Utilities/Doxygen/CMakeLists.txt +++ b/Utilities/Doxygen/CMakeLists.txt @@ -3,7 +3,7 @@ if(NOT CMake_SOURCE_DIR) set(CMakeDeveloperReference_STANDALONE 1) - cmake_minimum_required(VERSION 3.1...3.15 FATAL_ERROR) + cmake_minimum_required(VERSION 3.1...3.18 FATAL_ERROR) get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH) get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH) include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake) diff --git a/Utilities/Sphinx/CMakeLists.txt b/Utilities/Sphinx/CMakeLists.txt index e5be43a..f989907 100644 --- a/Utilities/Sphinx/CMakeLists.txt +++ b/Utilities/Sphinx/CMakeLists.txt @@ -3,7 +3,7 @@ if(NOT CMake_SOURCE_DIR) set(CMakeHelp_STANDALONE 1) - cmake_minimum_required(VERSION 3.1...3.15 FATAL_ERROR) + cmake_minimum_required(VERSION 3.1...3.18 FATAL_ERROR) get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH) get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH) include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake) -- cgit v0.12 From 8b13f1a5272696250494e7e9692d4447ce4a20bc Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 13 Oct 2020 14:44:09 -0400 Subject: Help/dev: Add maintainer guide step for post-release policy updates --- Help/dev/maint.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Help/dev/maint.rst b/Help/dev/maint.rst index 75d685c..664b7a4 100644 --- a/Help/dev/maint.rst +++ b/Help/dev/maint.rst @@ -357,3 +357,13 @@ policies added for that version. Commit with a message such as:: The files generatd by `install(EXPORT)` and `export()` commands are known to work with policies as of CMake $prev, so enable them in sufficiently new CMake versions. + +Update the ``cmake_minimum_required`` version range in CMake itself: + +* ``CMakeLists.txt`` +* ``Utilities/Doxygen/CMakeLists.txt`` +* ``Utilities/Sphinx/CMakeLists.txt`` + +to end in the previous release. Commit with a message such as:: + + Configure CMake itself with policies through CMake $prev -- cgit v0.12