From 2b8b17106c2b26dbba5ac11de813eb472d8d5e2a Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 26 Mar 2025 11:24:30 -0400 Subject: [PATCH] FindCABLE: Add policy to remove this module CABLE has not been maintained in a long time. --- Help/manual/cmake-modules.7.rst | 2 +- Help/manual/cmake-policies.7.rst | 1 + Help/policy/CMP0191.rst | 21 +++++++++++++++++++ Help/release/dev/remove-FindCABLE.rst | 5 +++++ Modules/FindCABLE.cmake | 13 ++++++++++++ Source/cmFindPackageCommand.cxx | 1 + Source/cmIncludeCommand.cxx | 1 + Source/cmPolicies.h | 3 ++- .../find_package/CMP0191-NEW-stderr.txt | 4 ++++ Tests/RunCMake/find_package/CMP0191-NEW.cmake | 7 +++++++ Tests/RunCMake/find_package/CMP0191-OLD.cmake | 7 +++++++ .../find_package/CMP0191-WARN-stderr.txt | 8 +++++++ .../RunCMake/find_package/CMP0191-WARN.cmake | 6 ++++++ .../RunCMake/find_package/RunCMakeTest.cmake | 3 +++ .../include/CMP0191-NEW-name-result.txt | 1 + .../include/CMP0191-NEW-name-stderr.txt | 6 ++++++ Tests/RunCMake/include/CMP0191-NEW-name.cmake | 2 ++ .../include/CMP0191-NEW-path-result.txt | 1 + .../include/CMP0191-NEW-path-stderr.txt | 6 ++++++ Tests/RunCMake/include/CMP0191-NEW-path.cmake | 2 ++ Tests/RunCMake/include/CMP0191-OLD.cmake | 7 +++++++ .../RunCMake/include/CMP0191-WARN-stderr.txt | 8 +++++++ Tests/RunCMake/include/CMP0191-WARN.cmake | 7 +++++++ Tests/RunCMake/include/RunCMakeTest.cmake | 5 +++++ 24 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 Help/policy/CMP0191.rst create mode 100644 Help/release/dev/remove-FindCABLE.rst create mode 100644 Tests/RunCMake/find_package/CMP0191-NEW-stderr.txt create mode 100644 Tests/RunCMake/find_package/CMP0191-NEW.cmake create mode 100644 Tests/RunCMake/find_package/CMP0191-OLD.cmake create mode 100644 Tests/RunCMake/find_package/CMP0191-WARN-stderr.txt create mode 100644 Tests/RunCMake/find_package/CMP0191-WARN.cmake create mode 100644 Tests/RunCMake/include/CMP0191-NEW-name-result.txt create mode 100644 Tests/RunCMake/include/CMP0191-NEW-name-stderr.txt create mode 100644 Tests/RunCMake/include/CMP0191-NEW-name.cmake create mode 100644 Tests/RunCMake/include/CMP0191-NEW-path-result.txt create mode 100644 Tests/RunCMake/include/CMP0191-NEW-path-stderr.txt create mode 100644 Tests/RunCMake/include/CMP0191-NEW-path.cmake create mode 100644 Tests/RunCMake/include/CMP0191-OLD.cmake create mode 100644 Tests/RunCMake/include/CMP0191-WARN-stderr.txt create mode 100644 Tests/RunCMake/include/CMP0191-WARN.cmake diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst index 5f06a8c1e6..7542e936c3 100644 --- a/Help/manual/cmake-modules.7.rst +++ b/Help/manual/cmake-modules.7.rst @@ -112,7 +112,6 @@ They are normally called through the :command:`find_package` command. /module/FindBLAS /module/FindBullet /module/FindBZip2 - /module/FindCABLE /module/FindCoin3D /module/FindCUDAToolkit /module/FindCups @@ -289,6 +288,7 @@ Deprecated Find Modules :maxdepth: 1 /module/FindBoost + /module/FindCABLE /module/FindCUDA /module/FindDart /module/FindGCCXML diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 868dcf6504..aec3d5e3af 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -98,6 +98,7 @@ Policies Introduced by CMake 4.1 .. toctree:: :maxdepth: 1 + CMP0191: The FindCABLE module is removed. CMP0190: FindPython enforce consistency in cross-compiling mode. CMP0189: TARGET_PROPERTY evaluates LINK_LIBRARIES properties transitively. CMP0188: The FindGCCXML module is removed. diff --git a/Help/policy/CMP0191.rst b/Help/policy/CMP0191.rst new file mode 100644 index 0000000000..42a727010e --- /dev/null +++ b/Help/policy/CMP0191.rst @@ -0,0 +1,21 @@ +CMP0191 +------- + +.. versionadded:: 4.1 + +The :module:`FindCABLE` module is removed. + +CMake 4.0 and below provide the :module:`FindCABLE` module, but the CABLE +tool is no longer maintained. CMake 4.1 and above prefer to not provide +the :module:`FindCABLE` module. This policy provides compatibility for +projects that have not been ported away from it. + +The ``OLD`` behavior of this policy is for ``find_package(CABLE)`` to load +the deprecated module. The ``NEW`` behavior is for ``find_package(CABLE)`` +to fail as if the module does not exist. + +.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.1 +.. |WARNS_OR_DOES_NOT_WARN| replace:: warns +.. include:: STANDARD_ADVICE.txt + +.. include:: DEPRECATED.txt diff --git a/Help/release/dev/remove-FindCABLE.rst b/Help/release/dev/remove-FindCABLE.rst new file mode 100644 index 0000000000..db46c667bb --- /dev/null +++ b/Help/release/dev/remove-FindCABLE.rst @@ -0,0 +1,5 @@ +remove-FindCABLE +----------------- + +* The :module:`FindCABLE` module has been deprecated via policy + :policy:`CMP0191`. diff --git a/Modules/FindCABLE.cmake b/Modules/FindCABLE.cmake index 6e530c3a1e..af0e6b6d70 100644 --- a/Modules/FindCABLE.cmake +++ b/Modules/FindCABLE.cmake @@ -5,6 +5,9 @@ FindCABLE --------- +.. versionchanged:: 4.1 + This module is available only if policy :policy:`CMP0191` is not set to ``NEW``. + Finds the CABLE installation and determines its include paths and libraries. Package called CABLE (CABLE Automates Bindings for Language Extension) was @@ -44,6 +47,16 @@ directories: target_include_directories(tcl_wrapper_target PRIVATE ${CABLE_INCLUDE_DIR}) #]=======================================================================] +cmake_policy(GET CMP0191 _FindCABLE_CMP0191) +if(_FindCABLE_CMP0191 STREQUAL "NEW") + message(FATAL_ERROR "The FindCABLE module has been removed by policy CMP0191.") +endif() + +if(_FindCABLE_testing) + set(_FindCABLE_included TRUE) + return() +endif() + if(NOT CABLE) find_path(CABLE_BUILD_DIR cableVersion.h) endif() diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx index 8ba00bedc5..3eabc8ae3b 100644 --- a/Source/cmFindPackageCommand.cxx +++ b/Source/cmFindPackageCommand.cxx @@ -530,6 +530,7 @@ cmFindPackageCommand::cmFindPackageCommand(cmExecutionStatus& status) this->AppendSearchPathGroups(); this->DeprecatedFindModules["Boost"] = cmPolicies::CMP0167; + this->DeprecatedFindModules["CABLE"] = cmPolicies::CMP0191; this->DeprecatedFindModules["CUDA"] = cmPolicies::CMP0146; this->DeprecatedFindModules["Dart"] = cmPolicies::CMP0145; this->DeprecatedFindModules["GCCXML"] = cmPolicies::CMP0188; diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx index 7381a42a90..3ced9031a2 100644 --- a/Source/cmIncludeCommand.cxx +++ b/Source/cmIncludeCommand.cxx @@ -23,6 +23,7 @@ bool cmIncludeCommand(std::vector const& args, DeprecatedModules["Dart"] = cmPolicies::CMP0145; DeprecatedModules["Documentation"] = cmPolicies::CMP0106; DeprecatedModules["FindBoost"] = cmPolicies::CMP0167; + DeprecatedModules["FindCABLE"] = cmPolicies::CMP0191; DeprecatedModules["FindCUDA"] = cmPolicies::CMP0146; DeprecatedModules["FindDart"] = cmPolicies::CMP0145; DeprecatedModules["FindGCCXML"] = cmPolicies::CMP0188; diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index a64558e9d1..b9f3945871 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -569,7 +569,8 @@ class cmMakefile; 4, 1, 0, WARN) \ SELECT(POLICY, CMP0190, \ "FindPython enforce consistency in cross-compiling mode.", 4, 1, 0, \ - WARN) + WARN) \ + SELECT(POLICY, CMP0191, "The FindCABLE module is removed.", 4, 1, 0, WARN) #define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1) #define CM_FOR_EACH_POLICY_ID(POLICY) \ diff --git a/Tests/RunCMake/find_package/CMP0191-NEW-stderr.txt b/Tests/RunCMake/find_package/CMP0191-NEW-stderr.txt new file mode 100644 index 0000000000..490aa28506 --- /dev/null +++ b/Tests/RunCMake/find_package/CMP0191-NEW-stderr.txt @@ -0,0 +1,4 @@ +^CMake Warning at CMP0191-NEW\.cmake:[0-9]+ \(find_package\): + No "FindCABLE\.cmake" found in CMAKE_MODULE_PATH\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/find_package/CMP0191-NEW.cmake b/Tests/RunCMake/find_package/CMP0191-NEW.cmake new file mode 100644 index 0000000000..290a1fc294 --- /dev/null +++ b/Tests/RunCMake/find_package/CMP0191-NEW.cmake @@ -0,0 +1,7 @@ +cmake_policy(SET CMP0191 NEW) +set(_FindCABLE_testing TRUE) +find_package(CABLE MODULE) + +if(_FindCABLE_included) + message(FATAL_ERROR "FindCABLE.cmake erroneously included") +endif() diff --git a/Tests/RunCMake/find_package/CMP0191-OLD.cmake b/Tests/RunCMake/find_package/CMP0191-OLD.cmake new file mode 100644 index 0000000000..6e5e33eebd --- /dev/null +++ b/Tests/RunCMake/find_package/CMP0191-OLD.cmake @@ -0,0 +1,7 @@ +cmake_policy(SET CMP0191 OLD) +set(_FindCABLE_testing TRUE) +find_package(CABLE MODULE) + +if(NOT _FindCABLE_included) + message(FATAL_ERROR "FindCABLE.cmake not included") +endif() diff --git a/Tests/RunCMake/find_package/CMP0191-WARN-stderr.txt b/Tests/RunCMake/find_package/CMP0191-WARN-stderr.txt new file mode 100644 index 0000000000..c552623218 --- /dev/null +++ b/Tests/RunCMake/find_package/CMP0191-WARN-stderr.txt @@ -0,0 +1,8 @@ +CMake Warning \(dev\) at CMP0191-WARN\.cmake:[0-9]+ \(find_package\): + Policy CMP0191 is not set: The FindCABLE module is removed\. Run "cmake + --help-policy CMP0191" for policy details\. Use the cmake_policy command to + set the policy and suppress this warning\. + +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\.$ diff --git a/Tests/RunCMake/find_package/CMP0191-WARN.cmake b/Tests/RunCMake/find_package/CMP0191-WARN.cmake new file mode 100644 index 0000000000..2a31478666 --- /dev/null +++ b/Tests/RunCMake/find_package/CMP0191-WARN.cmake @@ -0,0 +1,6 @@ +set(_FindCABLE_testing TRUE) +find_package(CABLE MODULE) + +if(NOT _FindCABLE_included) + message(FATAL_ERROR "FindCABLE.cmake not included") +endif() diff --git a/Tests/RunCMake/find_package/RunCMakeTest.cmake b/Tests/RunCMake/find_package/RunCMakeTest.cmake index 0c05d2dd3c..476fcaa38d 100644 --- a/Tests/RunCMake/find_package/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_package/RunCMakeTest.cmake @@ -64,6 +64,9 @@ run_cmake(CMP0167-NEW) run_cmake(CMP0188-OLD) run_cmake(CMP0188-WARN) run_cmake(CMP0188-NEW) +run_cmake(CMP0191-OLD) +run_cmake(CMP0191-WARN) +run_cmake(CMP0191-NEW) run_cmake(WrongVersionRange) run_cmake(EmptyVersionRange) run_cmake(VersionRangeWithEXACT) diff --git a/Tests/RunCMake/include/CMP0191-NEW-name-result.txt b/Tests/RunCMake/include/CMP0191-NEW-name-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-NEW-name-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/include/CMP0191-NEW-name-stderr.txt b/Tests/RunCMake/include/CMP0191-NEW-name-stderr.txt new file mode 100644 index 0000000000..e0dcbab064 --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-NEW-name-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at CMP0191-NEW-name\.cmake:[0-9]+ \(include\): + include could not find requested file: + + FindCABLE +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/include/CMP0191-NEW-name.cmake b/Tests/RunCMake/include/CMP0191-NEW-name.cmake new file mode 100644 index 0000000000..7c91fd6ad8 --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-NEW-name.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0191 NEW) +include(FindCABLE) diff --git a/Tests/RunCMake/include/CMP0191-NEW-path-result.txt b/Tests/RunCMake/include/CMP0191-NEW-path-result.txt new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-NEW-path-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/include/CMP0191-NEW-path-stderr.txt b/Tests/RunCMake/include/CMP0191-NEW-path-stderr.txt new file mode 100644 index 0000000000..cfe66e965b --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-NEW-path-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at [^ +]*/Modules/FindCABLE.cmake:[0-9]+ \(message\): + The FindCABLE module has been removed by policy CMP0191\. +Call Stack \(most recent call first\): + CMP0191-NEW-path\.cmake:[0-9]+ \(include\) + CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/include/CMP0191-NEW-path.cmake b/Tests/RunCMake/include/CMP0191-NEW-path.cmake new file mode 100644 index 0000000000..4ef4c4b586 --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-NEW-path.cmake @@ -0,0 +1,2 @@ +cmake_policy(SET CMP0191 NEW) +include(${CMAKE_ROOT}/Modules/FindCABLE.cmake) diff --git a/Tests/RunCMake/include/CMP0191-OLD.cmake b/Tests/RunCMake/include/CMP0191-OLD.cmake new file mode 100644 index 0000000000..6a0c486564 --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-OLD.cmake @@ -0,0 +1,7 @@ +cmake_policy(SET CMP0191 OLD) +set(_FindCABLE_testing 1) +include(FindCABLE) + +if(NOT _FindCABLE_included) + message(FATAL_ERROR "FindCABLE.cmake not included") +endif() diff --git a/Tests/RunCMake/include/CMP0191-WARN-stderr.txt b/Tests/RunCMake/include/CMP0191-WARN-stderr.txt new file mode 100644 index 0000000000..ab4d433044 --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-WARN-stderr.txt @@ -0,0 +1,8 @@ +^CMake Warning \(dev\) at CMP0191-WARN\.cmake:[0-9]+ \(include\): + Policy CMP0191 is not set: The FindCABLE module is removed\. Run "cmake + --help-policy CMP0191" for policy details\. Use the cmake_policy command to + set the policy and suppress this warning\. + +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) +This warning is for project developers\. Use -Wno-dev to suppress it\.$ diff --git a/Tests/RunCMake/include/CMP0191-WARN.cmake b/Tests/RunCMake/include/CMP0191-WARN.cmake new file mode 100644 index 0000000000..3e9beea7a2 --- /dev/null +++ b/Tests/RunCMake/include/CMP0191-WARN.cmake @@ -0,0 +1,7 @@ +# Do not set CMP0191. +set(_FindCABLE_testing 1) +include(FindCABLE) + +if(NOT _FindCABLE_included) + message(FATAL_ERROR "FindCABLE.cmake not included") +endif() diff --git a/Tests/RunCMake/include/RunCMakeTest.cmake b/Tests/RunCMake/include/RunCMakeTest.cmake index 994f2a552e..f7481797ae 100644 --- a/Tests/RunCMake/include/RunCMakeTest.cmake +++ b/Tests/RunCMake/include/RunCMakeTest.cmake @@ -30,3 +30,8 @@ run_cmake(CMP0188-OLD) run_cmake(CMP0188-WARN) run_cmake(CMP0188-NEW-name) run_cmake(CMP0188-NEW-path) + +run_cmake(CMP0191-OLD) +run_cmake(CMP0191-WARN) +run_cmake(CMP0191-NEW-name) +run_cmake(CMP0191-NEW-path)