From 6cd10ffed786b998e5b6f12557b6733fc325b558 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 20 Feb 2025 15:31:18 -0500 Subject: Tests: Cover CMAKE_POLICY_VERSION_MINIMUM as cache entry --- .../RunCMake/cmake_minimum_required/PolicyVersionVar-stderr.txt | 4 ++++ Tests/RunCMake/cmake_minimum_required/PolicyVersionVar.cmake | 7 +++++++ .../cmake_minimum_required/PolicyVersionVarBad-result.txt | 1 + .../cmake_minimum_required/PolicyVersionVarBad-stderr.txt | 9 +++++++++ Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad.cmake | 1 + .../cmake_minimum_required/PolicyVersionVariable-stderr.txt | 3 --- .../RunCMake/cmake_minimum_required/PolicyVersionVariable.cmake | 7 ------- .../cmake_minimum_required/PolicyVersionVariableBad-result.txt | 1 - .../cmake_minimum_required/PolicyVersionVariableBad-stderr.txt | 5 ----- .../cmake_minimum_required/PolicyVersionVariableBad.cmake | 2 -- Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake | 4 ++-- 11 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVar-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVar.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-result.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad.cmake delete mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable-stderr.txt delete mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable.cmake delete mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-result.txt delete mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-stderr.txt delete mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad.cmake diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVar-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVar-stderr.txt new file mode 100644 index 0000000..75d5a7e --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVar-stderr.txt @@ -0,0 +1,4 @@ +^CMAKE_POLICY_VERSION_MINIMUM='3\.10' +CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' +CMP0071='NEW' +CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVar.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVar.cmake new file mode 100644 index 0000000..c8975dd --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVar.cmake @@ -0,0 +1,7 @@ +message("CMAKE_POLICY_VERSION_MINIMUM='${CMAKE_POLICY_VERSION_MINIMUM}'") +cmake_minimum_required(VERSION 3.1...3.4) +message("CMAKE_MINIMUM_REQUIRED_VERSION='${CMAKE_MINIMUM_REQUIRED_VERSION}'") +foreach(policy CMP0071 CMP0072) + cmake_policy(GET ${policy} status) + message("${policy}='${status}'") +endforeach() diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-stderr.txt new file mode 100644 index 0000000..ff6997d --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad-stderr.txt @@ -0,0 +1,9 @@ +^CMake Error at CMakeLists\.txt:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. ++ +CMake Error at PolicyVersionVarBad\.cmake:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad.cmake new file mode 100644 index 0000000..c602a4a --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBad.cmake @@ -0,0 +1 @@ +cmake_minimum_required(VERSION 3.1...3.4) diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable-stderr.txt deleted file mode 100644 index 4f161bf..0000000 --- a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable-stderr.txt +++ /dev/null @@ -1,3 +0,0 @@ -^CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' -CMP0071='NEW' -CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable.cmake deleted file mode 100644 index 553fc94..0000000 --- a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariable.cmake +++ /dev/null @@ -1,7 +0,0 @@ -set(CMAKE_POLICY_VERSION_MINIMUM 3.10) -cmake_minimum_required(VERSION 3.1...3.4) -message("CMAKE_MINIMUM_REQUIRED_VERSION='${CMAKE_MINIMUM_REQUIRED_VERSION}'") -foreach(policy CMP0071 CMP0072) - cmake_policy(GET ${policy} status) - message("${policy}='${status}'") -endforeach() diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-stderr.txt deleted file mode 100644 index 3a59bb7..0000000 --- a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -^CMake Error at PolicyVersionVariableBad\.cmake:2 \(cmake_minimum_required\): - Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric - major\.minor\[\.patch\[\.tweak\]\] must be given\. -Call Stack \(most recent call first\): - CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad.cmake deleted file mode 100644 index 763997b..0000000 --- a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVariableBad.cmake +++ /dev/null @@ -1,2 +0,0 @@ -set(CMAKE_POLICY_VERSION_MINIMUM ...3.10) -cmake_minimum_required(VERSION 3.1...3.4) diff --git a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake index d91f171..0d2d0f6 100644 --- a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake @@ -7,5 +7,5 @@ run_cmake(BeforeVersionDeprecated) run_cmake(Range) run_cmake(RangeBad) run_cmake(Unknown) -run_cmake(PolicyVersionVariable) -run_cmake(PolicyVersionVariableBad) +run_cmake_with_options(PolicyVersionVar -DCMAKE_POLICY_VERSION_MINIMUM=3.10) +run_cmake_with_options(PolicyVersionVarBad -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) -- cgit v0.12 From 729470ff6da7509eac65aea762b08a9dfde713b4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 20 Feb 2025 15:36:52 -0500 Subject: Tests: Cover CMAKE_POLICY_VERSION_MINIMUM in script mode --- .../cmake_minimum_required/PolicyVersionVarBadScript-result.txt | 1 + .../cmake_minimum_required/PolicyVersionVarBadScript-stderr.txt | 7 +++++++ .../cmake_minimum_required/PolicyVersionVarBadScript.cmake | 1 + .../cmake_minimum_required/PolicyVersionVarScript-stderr.txt | 4 ++++ Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript.cmake | 1 + Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake | 2 ++ 6 files changed, 16 insertions(+) create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-result.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript.cmake diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-stderr.txt new file mode 100644 index 0000000..e07ff15 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript-stderr.txt @@ -0,0 +1,7 @@ +^CMake Error at [^ +]*/PolicyVersionVarBad\.cmake:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. +Call Stack \(most recent call first\): + [^ +]*/PolicyVersionVarBadScript\.cmake:1 \(include\)$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript.cmake new file mode 100644 index 0000000..8ae5e2a --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadScript.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVarBad.cmake) diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript-stderr.txt new file mode 100644 index 0000000..75d5a7e --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript-stderr.txt @@ -0,0 +1,4 @@ +^CMAKE_POLICY_VERSION_MINIMUM='3\.10' +CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' +CMP0071='NEW' +CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript.cmake new file mode 100644 index 0000000..e158354 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarScript.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVar.cmake) diff --git a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake index 0d2d0f6..865440d 100644 --- a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake @@ -8,4 +8,6 @@ run_cmake(Range) run_cmake(RangeBad) run_cmake(Unknown) run_cmake_with_options(PolicyVersionVar -DCMAKE_POLICY_VERSION_MINIMUM=3.10) +run_cmake_script(PolicyVersionVarScript -DCMAKE_POLICY_VERSION_MINIMUM=3.10) run_cmake_with_options(PolicyVersionVarBad -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) +run_cmake_script(PolicyVersionVarBadScript -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) -- cgit v0.12 From 04721acc6c8d1f68f82a20aac900e795c680084e Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 20 Feb 2025 16:20:09 -0500 Subject: Tests: Cover CMAKE_POLICY_VERSION_MINIMUM in initial cache script --- .../cmake_minimum_required/PolicyVersionVarBadCache-result.txt | 1 + .../cmake_minimum_required/PolicyVersionVarBadCache-stderr.txt | 7 +++++++ .../RunCMake/cmake_minimum_required/PolicyVersionVarBadCache.cmake | 0 .../cmake_minimum_required/PolicyVersionVarCache-stderr.txt | 4 ++++ Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache.cmake | 0 Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake | 3 +++ 6 files changed, 15 insertions(+) create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-result.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache.cmake diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-stderr.txt new file mode 100644 index 0000000..808a6e1 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache-stderr.txt @@ -0,0 +1,7 @@ +^CMake Error at PolicyVersionVarBad\.cmake:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. ++ +CMake Error at CMakeLists\.txt:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\.$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarBadCache.cmake new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache-stderr.txt new file mode 100644 index 0000000..75d5a7e --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache-stderr.txt @@ -0,0 +1,4 @@ +^CMAKE_POLICY_VERSION_MINIMUM='3\.10' +CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' +CMP0071='NEW' +CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionVarCache.cmake new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake index 865440d..b4cc911 100644 --- a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake @@ -7,7 +7,10 @@ run_cmake(BeforeVersionDeprecated) run_cmake(Range) run_cmake(RangeBad) run_cmake(Unknown) + run_cmake_with_options(PolicyVersionVar -DCMAKE_POLICY_VERSION_MINIMUM=3.10) +run_cmake_with_options(PolicyVersionVarCache -DCMAKE_POLICY_VERSION_MINIMUM=3.10 -C ${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVar.cmake) run_cmake_script(PolicyVersionVarScript -DCMAKE_POLICY_VERSION_MINIMUM=3.10) run_cmake_with_options(PolicyVersionVarBad -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) +run_cmake_with_options(PolicyVersionVarBadCache -DCMAKE_POLICY_VERSION_MINIMUM=...3.10 -C ${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVarBad.cmake) run_cmake_script(PolicyVersionVarBadScript -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) -- cgit v0.12 From 33856b1d62e5311f456c458295ccc900eb9a38f0 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 20 Feb 2025 16:30:51 -0500 Subject: Add CMAKE_POLICY_VERSION_MINIMUM environment variable Extend commit 1a35351125 (Add CMAKE_POLICY_VERSION_MINIMUM to help configure outdated projects, 2025-02-13, v4.0.0-rc1~12^2) with an environment variable to initialize the cache entry. That will make it easier to use when `cmake` is invoked under layers of scripting. Closes: #26715 --- Help/envvar/CMAKE_POLICY_VERSION_MINIMUM.rst | 11 +++++++++++ Help/manual/cmake-env-variables.7.rst | 1 + Help/release/4.0.rst | 2 ++ Help/variable/CMAKE_POLICY_VERSION_MINIMUM.rst | 4 ++++ Source/cmake.cxx | 15 +++++++++++++++ Tests/EnforceConfig.cmake.in | 1 + .../cmake_minimum_required/PolicyVersionEnvVar-stderr.txt | 4 ++++ .../cmake_minimum_required/PolicyVersionEnvVar.cmake | 1 + .../PolicyVersionEnvVarBad-result.txt | 1 + .../PolicyVersionEnvVarBad-stderr.txt | 10 ++++++++++ .../cmake_minimum_required/PolicyVersionEnvVarBad.cmake | 1 + .../PolicyVersionEnvVarBadCache-result.txt | 1 + .../PolicyVersionEnvVarBadCache-stderr.txt | 9 +++++++++ .../PolicyVersionEnvVarBadCache.cmake | 0 .../PolicyVersionEnvVarBadScript-result.txt | 1 + .../PolicyVersionEnvVarBadScript-stderr.txt | 7 +++++++ .../PolicyVersionEnvVarBadScript.cmake | 1 + .../PolicyVersionEnvVarCache-stderr.txt | 4 ++++ .../cmake_minimum_required/PolicyVersionEnvVarCache.cmake | 0 .../PolicyVersionEnvVarScript-stderr.txt | 4 ++++ .../PolicyVersionEnvVarScript.cmake | 1 + Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake | 10 ++++++++++ 22 files changed, 89 insertions(+) create mode 100644 Help/envvar/CMAKE_POLICY_VERSION_MINIMUM.rst create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-result.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-result.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-result.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache.cmake create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript-stderr.txt create mode 100644 Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript.cmake diff --git a/Help/envvar/CMAKE_POLICY_VERSION_MINIMUM.rst b/Help/envvar/CMAKE_POLICY_VERSION_MINIMUM.rst new file mode 100644 index 0000000..0521f5c --- /dev/null +++ b/Help/envvar/CMAKE_POLICY_VERSION_MINIMUM.rst @@ -0,0 +1,11 @@ +CMAKE_POLICY_VERSION_MINIMUM +---------------------------- + +.. versionadded:: 4.0 + +.. include:: ENV_VAR.txt + +The default value for :variable:`CMAKE_POLICY_VERSION_MINIMUM` when there +is no explicit configuration given on the first run while creating a new +build tree. On later runs in an existing build tree the value persists in +the cache as :variable:`CMAKE_POLICY_VERSION_MINIMUM`. diff --git a/Help/manual/cmake-env-variables.7.rst b/Help/manual/cmake-env-variables.7.rst index 140fc83..198e71f 100644 --- a/Help/manual/cmake-env-variables.7.rst +++ b/Help/manual/cmake-env-variables.7.rst @@ -27,6 +27,7 @@ Environment Variables that Change Behavior /envvar/CMAKE_INCLUDE_PATH /envvar/CMAKE_LIBRARY_PATH /envvar/CMAKE_MAXIMUM_RECURSION_DEPTH + /envvar/CMAKE_POLICY_VERSION_MINIMUM /envvar/CMAKE_PREFIX_PATH /envvar/CMAKE_PROGRAM_PATH /envvar/CMAKE_TLS_VERIFY diff --git a/Help/release/4.0.rst b/Help/release/4.0.rst index a7a7860..9122798 100644 --- a/Help/release/4.0.rst +++ b/Help/release/4.0.rst @@ -75,6 +75,8 @@ Variables * The :variable:`CMAKE_POLICY_VERSION_MINIMUM` variable was added to help packagers and end users try to configure existing projects that have not been updated to work with supported CMake versions. + The :envvar:`CMAKE_POLICY_VERSION_MINIMUM` environment variable was + added to initialize it. * The :variable:`CMAKE_XCODE_SCHEME_LLDB_INIT_FILE` variable and corresponding :prop_tgt:`XCODE_SCHEME_LLDB_INIT_FILE` target property were added to tell diff --git a/Help/variable/CMAKE_POLICY_VERSION_MINIMUM.rst b/Help/variable/CMAKE_POLICY_VERSION_MINIMUM.rst index cf48ecf..d1fa143 100644 --- a/Help/variable/CMAKE_POLICY_VERSION_MINIMUM.rst +++ b/Help/variable/CMAKE_POLICY_VERSION_MINIMUM.rst @@ -16,6 +16,10 @@ to externally set policies for which a project has not itself been updated: ``-DCMAKE_POLICY_VERSION_MINIMUM=3.5``, to try configuring a project that has not been updated to set at least that policy version itself. + Alternatively, users may set the :envvar:`CMAKE_POLICY_VERSION_MINIMUM` + environment variable to initialize the cache entry in new build trees + automatically. + * Projects may set this variable before a call to :command:`add_subdirectory` that adds a third-party project in order to set its policy version without modifying third-party code. diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 0bee1cc..934f635 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -547,6 +547,21 @@ void cmake::PrintPresetEnvironment() // Parse the args bool cmake::SetCacheArgs(std::vector const& args) { + static std::string const kCMAKE_POLICY_VERSION_MINIMUM = + "CMAKE_POLICY_VERSION_MINIMUM"; + if (!this->State->GetInitializedCacheValue(kCMAKE_POLICY_VERSION_MINIMUM)) { + cm::optional policyVersion = + cmSystemTools::GetEnvVar(kCMAKE_POLICY_VERSION_MINIMUM); + if (policyVersion && !policyVersion->empty()) { + this->AddCacheEntry( + kCMAKE_POLICY_VERSION_MINIMUM, *policyVersion, + "Override policy version for cmake_minimum_required calls.", + cmStateEnums::STRING); + this->State->SetCacheEntryProperty(kCMAKE_POLICY_VERSION_MINIMUM, + "ADVANCED", "1"); + } + } + auto DefineLambda = [](std::string const& entry, cmake* state) -> bool { std::string var; std::string value; diff --git a/Tests/EnforceConfig.cmake.in b/Tests/EnforceConfig.cmake.in index fd785a5..f9f476d 100644 --- a/Tests/EnforceConfig.cmake.in +++ b/Tests/EnforceConfig.cmake.in @@ -36,6 +36,7 @@ unset(ENV{CMAKE_GENERATOR_INSTANCE}) unset(ENV{CMAKE_GENERATOR_PLATFORM}) unset(ENV{CMAKE_GENERATOR_TOOLSET}) unset(ENV{CMAKE_EXPORT_COMPILE_COMMANDS}) +unset(ENV{CMAKE_POLICY_VERSION_MINIMUM}) # Verify that our module implementations do not recurse too much. set(ENV{CMAKE_MAXIMUM_RECURSION_DEPTH} 100) diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar-stderr.txt new file mode 100644 index 0000000..75d5a7e --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar-stderr.txt @@ -0,0 +1,4 @@ +^CMAKE_POLICY_VERSION_MINIMUM='3\.10' +CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' +CMP0071='NEW' +CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar.cmake new file mode 100644 index 0000000..e158354 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVar.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVar.cmake) diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-stderr.txt new file mode 100644 index 0000000..1ddab39 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad-stderr.txt @@ -0,0 +1,10 @@ +^CMake Error at CMakeLists\.txt:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. ++ +CMake Error at PolicyVersionVarBad\.cmake:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. +Call Stack \(most recent call first\): + PolicyVersionEnvVarBad\.cmake:[0-9]+ \(include\) + CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad.cmake new file mode 100644 index 0000000..8ae5e2a --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBad.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVarBad.cmake) diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-stderr.txt new file mode 100644 index 0000000..cb46948 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache-stderr.txt @@ -0,0 +1,9 @@ +^CMake Error at PolicyVersionVarBad\.cmake:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. +Call Stack \(most recent call first\): + PolicyVersionEnvVarBad\.cmake:[0-9]+ \(include\) ++ +CMake Error at CMakeLists\.txt:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\.$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadCache.cmake new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-result.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-stderr.txt new file mode 100644 index 0000000..b808e08 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript-stderr.txt @@ -0,0 +1,7 @@ +^CMake Error at [^ +]*/PolicyVersionVarBad\.cmake:1 \(cmake_minimum_required\): + Invalid CMAKE_POLICY_VERSION_MINIMUM value "\.\.\.3\.10"\. A numeric + major\.minor\[\.patch\[\.tweak\]\] must be given\. +Call Stack \(most recent call first\): + [^ +]*/PolicyVersionEnvVarBadScript\.cmake:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript.cmake new file mode 100644 index 0000000..8ae5e2a --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarBadScript.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVarBad.cmake) diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache-stderr.txt new file mode 100644 index 0000000..75d5a7e --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache-stderr.txt @@ -0,0 +1,4 @@ +^CMAKE_POLICY_VERSION_MINIMUM='3\.10' +CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' +CMP0071='NEW' +CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarCache.cmake new file mode 100644 index 0000000..e69de29 diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript-stderr.txt b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript-stderr.txt new file mode 100644 index 0000000..75d5a7e --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript-stderr.txt @@ -0,0 +1,4 @@ +^CMAKE_POLICY_VERSION_MINIMUM='3\.10' +CMAKE_MINIMUM_REQUIRED_VERSION='3\.1' +CMP0071='NEW' +CMP0072=''$ diff --git a/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript.cmake b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript.cmake new file mode 100644 index 0000000..e158354 --- /dev/null +++ b/Tests/RunCMake/cmake_minimum_required/PolicyVersionEnvVarScript.cmake @@ -0,0 +1 @@ +include(${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVar.cmake) diff --git a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake index b4cc911..8871447 100644 --- a/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_minimum_required/RunCMakeTest.cmake @@ -14,3 +14,13 @@ run_cmake_script(PolicyVersionVarScript -DCMAKE_POLICY_VERSION_MINIMUM=3.10) run_cmake_with_options(PolicyVersionVarBad -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) run_cmake_with_options(PolicyVersionVarBadCache -DCMAKE_POLICY_VERSION_MINIMUM=...3.10 -C ${CMAKE_CURRENT_LIST_DIR}/PolicyVersionVarBad.cmake) run_cmake_script(PolicyVersionVarBadScript -DCMAKE_POLICY_VERSION_MINIMUM=...3.10) + +set(ENV{CMAKE_POLICY_VERSION_MINIMUM} 3.10) +run_cmake(PolicyVersionEnvVar) +run_cmake_with_options(PolicyVersionEnvVarCache -C ${CMAKE_CURRENT_LIST_DIR}/PolicyVersionEnvVar.cmake) +run_cmake_script(PolicyVersionEnvVarScript) +set(ENV{CMAKE_POLICY_VERSION_MINIMUM} ...3.10) +run_cmake(PolicyVersionEnvVarBad) +run_cmake_with_options(PolicyVersionEnvVarBadCache -C ${CMAKE_CURRENT_LIST_DIR}/PolicyVersionEnvVarBad.cmake) +run_cmake_script(PolicyVersionEnvVarBadScript) +unset(ENV{CMAKE_POLICY_VERSION_MINIMUM}) -- cgit v0.12