From 2eb4382d6bccebc1df895954b19b66b18f3c2f61 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 5 Jun 2024 13:16:36 -0400 Subject: Tests: Modernize RunCMake.CMP0129 test conventions and conditions --- Tests/RunCMake/CMP0129/C-NEW.cmake | 2 ++ Tests/RunCMake/CMP0129/C-OLD.cmake | 2 ++ Tests/RunCMake/CMP0129/C-WARN.cmake | 1 + Tests/RunCMake/CMP0129/C-common.cmake | 4 ++++ Tests/RunCMake/CMP0129/C.cmake | 8 -------- Tests/RunCMake/CMP0129/CMakeLists.txt | 2 +- Tests/RunCMake/CMP0129/CXX-NEW.cmake | 2 ++ Tests/RunCMake/CMP0129/CXX-OLD.cmake | 2 ++ Tests/RunCMake/CMP0129/CXX-WARN.cmake | 1 + Tests/RunCMake/CMP0129/CXX-common.cmake | 4 ++++ Tests/RunCMake/CMP0129/CXX.cmake | 8 -------- Tests/RunCMake/CMP0129/Fortran-NEW.cmake | 2 ++ Tests/RunCMake/CMP0129/Fortran-OLD.cmake | 2 ++ Tests/RunCMake/CMP0129/Fortran-WARN.cmake | 1 + Tests/RunCMake/CMP0129/Fortran-common.cmake | 4 ++++ Tests/RunCMake/CMP0129/Fortran.cmake | 15 --------------- Tests/RunCMake/CMP0129/RunCMakeTest.cmake | 16 +++++++++++----- Tests/RunCMake/CMakeLists.txt | 3 +++ 18 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 Tests/RunCMake/CMP0129/C-NEW.cmake create mode 100644 Tests/RunCMake/CMP0129/C-OLD.cmake create mode 100644 Tests/RunCMake/CMP0129/C-WARN.cmake create mode 100644 Tests/RunCMake/CMP0129/C-common.cmake delete mode 100644 Tests/RunCMake/CMP0129/C.cmake create mode 100644 Tests/RunCMake/CMP0129/CXX-NEW.cmake create mode 100644 Tests/RunCMake/CMP0129/CXX-OLD.cmake create mode 100644 Tests/RunCMake/CMP0129/CXX-WARN.cmake create mode 100644 Tests/RunCMake/CMP0129/CXX-common.cmake delete mode 100644 Tests/RunCMake/CMP0129/CXX.cmake create mode 100644 Tests/RunCMake/CMP0129/Fortran-NEW.cmake create mode 100644 Tests/RunCMake/CMP0129/Fortran-OLD.cmake create mode 100644 Tests/RunCMake/CMP0129/Fortran-WARN.cmake create mode 100644 Tests/RunCMake/CMP0129/Fortran-common.cmake delete mode 100644 Tests/RunCMake/CMP0129/Fortran.cmake diff --git a/Tests/RunCMake/CMP0129/C-NEW.cmake b/Tests/RunCMake/CMP0129/C-NEW.cmake new file mode 100644 index 0000000..1c8f4c0 --- /dev/null +++ b/Tests/RunCMake/CMP0129/C-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0129 NEW) +include(C-common.cmake) diff --git a/Tests/RunCMake/CMP0129/C-OLD.cmake b/Tests/RunCMake/CMP0129/C-OLD.cmake new file mode 100644 index 0000000..789bf64 --- /dev/null +++ b/Tests/RunCMake/CMP0129/C-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0129 OLD) +include(C-common.cmake) diff --git a/Tests/RunCMake/CMP0129/C-WARN.cmake b/Tests/RunCMake/CMP0129/C-WARN.cmake new file mode 100644 index 0000000..09b5167 --- /dev/null +++ b/Tests/RunCMake/CMP0129/C-WARN.cmake @@ -0,0 +1 @@ +include(C-common.cmake) diff --git a/Tests/RunCMake/CMP0129/C-common.cmake b/Tests/RunCMake/CMP0129/C-common.cmake new file mode 100644 index 0000000..1e91327 --- /dev/null +++ b/Tests/RunCMake/CMP0129/C-common.cmake @@ -0,0 +1,4 @@ +enable_language(C) +set(CMAKE_VERBOSE_MAKEFILE TRUE) +include(CompareCompilerVersion.cmake) +compare_compiler_version(C) diff --git a/Tests/RunCMake/CMP0129/C.cmake b/Tests/RunCMake/CMP0129/C.cmake deleted file mode 100644 index e9ebe90..0000000 --- a/Tests/RunCMake/CMP0129/C.cmake +++ /dev/null @@ -1,8 +0,0 @@ -if(SET_CMP0129) - cmake_policy(SET CMP0129 ${SET_CMP0129}) -endif() - -enable_language(C) -set(CMAKE_VERBOSE_MAKEFILE TRUE) -include(CompareCompilerVersion.cmake) -compare_compiler_version(C) diff --git a/Tests/RunCMake/CMP0129/CMakeLists.txt b/Tests/RunCMake/CMP0129/CMakeLists.txt index d8200fc..f5cf5b7 100644 --- a/Tests/RunCMake/CMP0129/CMakeLists.txt +++ b/Tests/RunCMake/CMP0129/CMakeLists.txt @@ -1,3 +1,3 @@ cmake_minimum_required(VERSION 3.22) project(${RunCMake_TEST} NONE) -include(${RunCMake_TEST}.cmake) +include(${RunCMake_TEST}.cmake NO_POLICY_SCOPE) diff --git a/Tests/RunCMake/CMP0129/CXX-NEW.cmake b/Tests/RunCMake/CMP0129/CXX-NEW.cmake new file mode 100644 index 0000000..00cd7c5 --- /dev/null +++ b/Tests/RunCMake/CMP0129/CXX-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0129 NEW) +include(CXX-common.cmake) diff --git a/Tests/RunCMake/CMP0129/CXX-OLD.cmake b/Tests/RunCMake/CMP0129/CXX-OLD.cmake new file mode 100644 index 0000000..b7d8641 --- /dev/null +++ b/Tests/RunCMake/CMP0129/CXX-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0129 OLD) +include(CXX-common.cmake) diff --git a/Tests/RunCMake/CMP0129/CXX-WARN.cmake b/Tests/RunCMake/CMP0129/CXX-WARN.cmake new file mode 100644 index 0000000..db36956 --- /dev/null +++ b/Tests/RunCMake/CMP0129/CXX-WARN.cmake @@ -0,0 +1 @@ +include(CXX-common.cmake) diff --git a/Tests/RunCMake/CMP0129/CXX-common.cmake b/Tests/RunCMake/CMP0129/CXX-common.cmake new file mode 100644 index 0000000..016e8ff --- /dev/null +++ b/Tests/RunCMake/CMP0129/CXX-common.cmake @@ -0,0 +1,4 @@ +enable_language(CXX) +set(CMAKE_VERBOSE_MAKEFILE TRUE) +include(CompareCompilerVersion.cmake) +compare_compiler_version(CXX) diff --git a/Tests/RunCMake/CMP0129/CXX.cmake b/Tests/RunCMake/CMP0129/CXX.cmake deleted file mode 100644 index ffb81b8..0000000 --- a/Tests/RunCMake/CMP0129/CXX.cmake +++ /dev/null @@ -1,8 +0,0 @@ -if(SET_CMP0129) - cmake_policy(SET CMP0129 ${SET_CMP0129}) -endif() - -enable_language(CXX) -set(CMAKE_VERBOSE_MAKEFILE TRUE) -include(CompareCompilerVersion.cmake) -compare_compiler_version(CXX) diff --git a/Tests/RunCMake/CMP0129/Fortran-NEW.cmake b/Tests/RunCMake/CMP0129/Fortran-NEW.cmake new file mode 100644 index 0000000..6ac9cb9 --- /dev/null +++ b/Tests/RunCMake/CMP0129/Fortran-NEW.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0129 NEW) +include(Fortran-common.cmake) diff --git a/Tests/RunCMake/CMP0129/Fortran-OLD.cmake b/Tests/RunCMake/CMP0129/Fortran-OLD.cmake new file mode 100644 index 0000000..df6ca83 --- /dev/null +++ b/Tests/RunCMake/CMP0129/Fortran-OLD.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0129 OLD) +include(Fortran-common.cmake) diff --git a/Tests/RunCMake/CMP0129/Fortran-WARN.cmake b/Tests/RunCMake/CMP0129/Fortran-WARN.cmake new file mode 100644 index 0000000..3dc27c3 --- /dev/null +++ b/Tests/RunCMake/CMP0129/Fortran-WARN.cmake @@ -0,0 +1 @@ +include(Fortran-common.cmake) diff --git a/Tests/RunCMake/CMP0129/Fortran-common.cmake b/Tests/RunCMake/CMP0129/Fortran-common.cmake new file mode 100644 index 0000000..7b6ecc7 --- /dev/null +++ b/Tests/RunCMake/CMP0129/Fortran-common.cmake @@ -0,0 +1,4 @@ +enable_language(Fortran) +set(CMAKE_VERBOSE_MAKEFILE TRUE) +include(CompareCompilerVersion.cmake) +compare_compiler_version(Fortran) diff --git a/Tests/RunCMake/CMP0129/Fortran.cmake b/Tests/RunCMake/CMP0129/Fortran.cmake deleted file mode 100644 index abaca7e..0000000 --- a/Tests/RunCMake/CMP0129/Fortran.cmake +++ /dev/null @@ -1,15 +0,0 @@ -include(CheckLanguage) -check_language(Fortran) -if(NOT CMAKE_Fortran_COMPILER) - # No Fortran compiler, skipping Fortran test - return() -endif() - -if(SET_CMP0129) - cmake_policy(SET CMP0129 ${SET_CMP0129}) -endif() - -enable_language(Fortran) -set(CMAKE_VERBOSE_MAKEFILE TRUE) -include(CompareCompilerVersion.cmake) -compare_compiler_version(Fortran) diff --git a/Tests/RunCMake/CMP0129/RunCMakeTest.cmake b/Tests/RunCMake/CMP0129/RunCMakeTest.cmake index 1b0e11b..c147352 100644 --- a/Tests/RunCMake/CMP0129/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMP0129/RunCMakeTest.cmake @@ -1,8 +1,14 @@ set(RunCMake_TEST_NO_CMP0129 ON) include(RunCMake) -foreach(lang C CXX Fortran) - run_cmake(${lang}) - run_cmake_with_options(${lang} "-DSET_CMP0129=NEW") - run_cmake_with_options(${lang} "-DSET_CMP0129=OLD") -endforeach() +run_cmake(C-WARN) +run_cmake(C-OLD) +run_cmake(C-NEW) +run_cmake(CXX-WARN) +run_cmake(CXX-OLD) +run_cmake(CXX-NEW) +if(CMake_TEST_Fortran) + run_cmake(Fortran-WARN) + run_cmake(Fortran-OLD) + run_cmake(Fortran-NEW) +endif() diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index e205d9f..213c18d 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -153,6 +153,9 @@ add_RunCMake_test(CMP0126) if("${CMAKE_C_COMPILER_ID}" STREQUAL "LCC" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "LCC" OR "${CMAKE_Fortran_COMPILER_ID}" STREQUAL "LCC") + if(CMAKE_Fortran_COMPILER) + list(APPEND CMP0129_ARGS -DCMake_TEST_Fortran=1) + endif() add_RunCMake_test("CMP0129") set_property(TEST RunCMake.CMP0129 APPEND PROPERTY LABELS "Fortran") endif() -- cgit v0.12 From 43944645019a8241485950384e3e9dba48a27347 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 5 Jun 2024 13:19:07 -0400 Subject: Add deprecation warnings for policies CMP0129 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.23 and below to encourage projects to port away from setting policies to OLD. --- Source/cmMakefile.cxx | 2 +- Tests/RunCMake/CMP0129/C-OLD-stderr.txt | 10 ++++++++++ Tests/RunCMake/CMP0129/CXX-OLD-stderr.txt | 10 ++++++++++ Tests/RunCMake/CMP0129/Fortran-OLD-stderr.txt | 10 ++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/CMP0129/C-OLD-stderr.txt create mode 100644 Tests/RunCMake/CMP0129/CXX-OLD-stderr.txt create mode 100644 Tests/RunCMake/CMP0129/Fortran-OLD-stderr.txt diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index ba9fab5..b8a59a3 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4657,7 +4657,7 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, } // Deprecate old policies. - if (status == cmPolicies::OLD && id <= cmPolicies::CMP0128 && + if (status == cmPolicies::OLD && id <= cmPolicies::CMP0129 && !(this->GetCMakeInstance()->GetIsInTryCompile() && ( // Policies set by cmCoreTryCompile::TryCompileCode. diff --git a/Tests/RunCMake/CMP0129/C-OLD-stderr.txt b/Tests/RunCMake/CMP0129/C-OLD-stderr.txt new file mode 100644 index 0000000..5c622d2 --- /dev/null +++ b/Tests/RunCMake/CMP0129/C-OLD-stderr.txt @@ -0,0 +1,10 @@ +^CMake Deprecation Warning at C-OLD\.cmake:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0129 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/CMP0129/CXX-OLD-stderr.txt b/Tests/RunCMake/CMP0129/CXX-OLD-stderr.txt new file mode 100644 index 0000000..71a1ecf --- /dev/null +++ b/Tests/RunCMake/CMP0129/CXX-OLD-stderr.txt @@ -0,0 +1,10 @@ +^CMake Deprecation Warning at CXX-OLD\.cmake:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0129 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/CMP0129/Fortran-OLD-stderr.txt b/Tests/RunCMake/CMP0129/Fortran-OLD-stderr.txt new file mode 100644 index 0000000..01260c0 --- /dev/null +++ b/Tests/RunCMake/CMP0129/Fortran-OLD-stderr.txt @@ -0,0 +1,10 @@ +^CMake Deprecation Warning at Fortran-OLD\.cmake:[0-9]+ \(cmake_policy\): + The OLD behavior for policy CMP0129 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 ed376e470ea973cff05002fe07c7bd0c81039ee4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 5 Jun 2024 13:23:38 -0400 Subject: export: Increase maximum policy version in exported files to 3.29 The files generated by `install(EXPORT)`, `export()`, and `install_jar_exports()` commands are known to work with policies as of CMake 3.29, so enable them in sufficiently new CMake versions. --- Modules/UseJava/javaTargets.cmake.in | 2 +- Source/cmExportFileGenerator.cxx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/UseJava/javaTargets.cmake.in b/Modules/UseJava/javaTargets.cmake.in index dc20c82..6002d4e 100644 --- a/Modules/UseJava/javaTargets.cmake.in +++ b/Modules/UseJava/javaTargets.cmake.in @@ -1,5 +1,5 @@ cmake_policy(PUSH) -cmake_policy(VERSION 2.8.12...3.28) +cmake_policy(VERSION 2.8.12...3.29) #---------------------------------------------------------------- # Generated CMake Java target import file. diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index a5348f2..afc571d 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -1009,7 +1009,7 @@ void cmExportFileGenerator::GeneratePolicyHeaderCode(std::ostream& os) // Isolate the file policy level. // Support CMake versions as far back as the // RequiredCMakeVersion{Major,Minor,Patch}, but also support using NEW - // policy settings for up to CMake 3.28 (this upper limit may be reviewed + // policy settings for up to CMake 3.29 (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. @@ -1018,7 +1018,7 @@ void cmExportFileGenerator::GeneratePolicyHeaderCode(std::ostream& os) << "cmake_policy(VERSION " << this->RequiredCMakeVersionMajor << '.' << this->RequiredCMakeVersionMinor << '.' - << this->RequiredCMakeVersionPatch << "...3.28)\n"; + << this->RequiredCMakeVersionPatch << "...3.29)\n"; /* clang-format on */ } -- cgit v0.12 From 115425e68c234258607330c777ead234ddce40a8 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 5 Jun 2024 13:24:36 -0400 Subject: Configure CMake itself with policies through CMake 3.29 --- CMakeLists.txt | 2 +- Source/Checks/Curses/CMakeLists.txt | 2 +- Utilities/Doxygen/CMakeLists.txt | 2 +- Utilities/Sphinx/CMakeLists.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 081bd7d..51c2b3f 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.13...3.28 FATAL_ERROR) +cmake_minimum_required(VERSION 3.13...3.29 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) diff --git a/Source/Checks/Curses/CMakeLists.txt b/Source/Checks/Curses/CMakeLists.txt index 5d0e240..bd7c415 100644 --- a/Source/Checks/Curses/CMakeLists.txt +++ b/Source/Checks/Curses/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.13...3.28 FATAL_ERROR) +cmake_minimum_required(VERSION 3.13...3.29 FATAL_ERROR) project(CheckCurses C) set(CURSES_NEED_NCURSES TRUE) diff --git a/Utilities/Doxygen/CMakeLists.txt b/Utilities/Doxygen/CMakeLists.txt index 8bf591b..111bd6f 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.13...3.28 FATAL_ERROR) + cmake_minimum_required(VERSION 3.13...3.29 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 746c872..ed7b631 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.13...3.28 FATAL_ERROR) + cmake_minimum_required(VERSION 3.13...3.29 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