Explorar o código

CMP0048: Remove support for OLD behavior

Brad King hai 1 ano
pai
achega
292048874f
Modificáronse 43 ficheiros con 19 adicións e 138 borrados
  1. 5 4
      Help/policy/CMP0048.rst
  2. 3 7
      Source/cmMakefile.cxx
  3. 1 1
      Source/cmPolicies.h
  4. 2 29
      Source/cmProjectCommand.cxx
  5. 0 7
      Tests/RunCMake/project/CMP0048-NEW-stderr.txt
  6. 0 2
      Tests/RunCMake/project/CMP0048-NEW.cmake
  7. 0 1
      Tests/RunCMake/project/CMP0048-OLD-VERSION-result.txt
  8. 0 4
      Tests/RunCMake/project/CMP0048-OLD-VERSION-stderr.txt
  9. 0 2
      Tests/RunCMake/project/CMP0048-OLD-VERSION.cmake
  10. 0 18
      Tests/RunCMake/project/CMP0048-OLD-stderr.txt
  11. 0 2
      Tests/RunCMake/project/CMP0048-OLD-stdout.txt
  12. 0 6
      Tests/RunCMake/project/CMP0048-OLD.cmake
  13. 0 12
      Tests/RunCMake/project/CMP0048-WARN-stderr.txt
  14. 0 3
      Tests/RunCMake/project/CMP0048-WARN.cmake
  15. 0 1
      Tests/RunCMake/project/CMP0096-NEW.cmake
  16. 0 1
      Tests/RunCMake/project/CMP0096-OLD.cmake
  17. 0 2
      Tests/RunCMake/project/CMP0096-WARN.cmake
  18. 0 2
      Tests/RunCMake/project/CMakeLists.txt
  19. 0 1
      Tests/RunCMake/project/ProjectDescription.cmake
  20. 0 1
      Tests/RunCMake/project/ProjectDescription2.cmake
  21. 0 1
      Tests/RunCMake/project/ProjectDescriptionNoArg.cmake
  22. 0 1
      Tests/RunCMake/project/ProjectDescriptionNoArg2.cmake
  23. 0 1
      Tests/RunCMake/project/ProjectHomepage.cmake
  24. 1 1
      Tests/RunCMake/project/ProjectHomepage2-stderr.txt
  25. 0 1
      Tests/RunCMake/project/ProjectHomepage2.cmake
  26. 1 1
      Tests/RunCMake/project/ProjectHomepageNoArg-stderr.txt
  27. 0 1
      Tests/RunCMake/project/ProjectHomepageNoArg.cmake
  28. 0 1
      Tests/RunCMake/project/ProjectTwice.cmake
  29. 0 3
      Tests/RunCMake/project/RunCMakeTest.cmake
  30. 0 1
      Tests/RunCMake/project/VersionAndLanguagesEmpty.cmake
  31. 0 1
      Tests/RunCMake/project/VersionEmpty.cmake
  32. 1 1
      Tests/RunCMake/project/VersionInvalid-stderr.txt
  33. 0 1
      Tests/RunCMake/project/VersionInvalid.cmake
  34. 0 1
      Tests/RunCMake/project/VersionMax.cmake
  35. 1 1
      Tests/RunCMake/project/VersionMissingLanguages-stderr.txt
  36. 0 1
      Tests/RunCMake/project/VersionMissingLanguages.cmake
  37. 0 1
      Tests/RunCMake/project/VersionMissingValueOkay.cmake
  38. 1 1
      Tests/RunCMake/project/VersionTwice-stderr.txt
  39. 0 1
      Tests/RunCMake/project/VersionTwice.cmake
  40. 1 1
      Tests/RunCMake/project_injected/CMakeLists.txt
  41. 1 9
      Tests/RunCMake/project_injected/Inject-stderr.txt
  42. 0 0
      Tests/RunCMake/project_injected/Inject.cmake
  43. 1 1
      Tests/RunCMake/project_injected/RunCMakeTest.cmake

+ 5 - 4
Help/policy/CMP0048.rst

@@ -1,6 +1,9 @@
 CMP0048
 -------
 
+.. |REMOVED_IN_CMAKE_VERSION| replace:: 4.0
+.. include:: REMOVED_PROLOGUE.txt
+
 The :command:`project` command manages ``VERSION`` variables.
 
 CMake version 3.0 introduced the ``VERSION`` option of the :command:`project`
@@ -17,7 +20,5 @@ The ``NEW`` behavior for this policy is to set ``VERSION`` as documented by the
 :command:`project` command.
 
 .. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.0
-.. |WARNS_OR_DOES_NOT_WARN| replace:: warns
-.. include:: STANDARD_ADVICE.txt
-
-.. include:: DEPRECATED.txt
+.. |WARNED_OR_DID_NOT_WARN| replace:: warned
+.. include:: REMOVED_EPILOGUE.txt

+ 3 - 7
Source/cmMakefile.cxx

@@ -1694,13 +1694,9 @@ void cmMakefile::Configure()
         "CMake is pretending there is a \"project(Project)\" command on "
         "the first line.",
         this->Backtrace);
-      cmListFileFunction project{ "project",
-                                  0,
-                                  0,
-                                  { { "Project", cmListFileArgument::Unquoted,
-                                      0 },
-                                    { "__CMAKE_INJECTED_PROJECT_COMMAND__",
-                                      cmListFileArgument::Unquoted, 0 } } };
+      cmListFileFunction project{
+        "project", 0, 0, { { "Project", cmListFileArgument::Unquoted, 0 } }
+      };
       listFile.Functions.insert(listFile.Functions.begin(), project);
     }
   }

+ 1 - 1
Source/cmPolicies.h

@@ -145,7 +145,7 @@ class cmMakefile;
   SELECT(POLICY, CMP0047, "Use QCC compiler id for the qcc drivers on QNX.",  \
          3, 0, 0, NEW)                                                        \
   SELECT(POLICY, CMP0048, "project() command manages VERSION variables.", 3,  \
-         0, 0, WARN)                                                          \
+         0, 0, NEW)                                                           \
   SELECT(POLICY, CMP0049,                                                     \
          "Do not expand variables in target source entries.", 3, 0, 0, WARN)  \
   SELECT(POLICY, CMP0050, "Disallow add_custom_command SOURCE signatures.",   \

+ 2 - 29
Source/cmProjectCommand.cxx

@@ -107,7 +107,6 @@ bool cmProjectCommand(std::vector<std::string> const& args,
   bool haveLanguages = false;
   bool haveDescription = false;
   bool haveHomepage = false;
-  bool injectedProjectCommand = false;
   std::string version;
   std::string description;
   std::string homepage;
@@ -198,8 +197,6 @@ bool cmProjectCommand(std::vector<std::string> const& args,
           "by a value that expanded to nothing.");
         resetReporter();
       };
-    } else if (i == 1 && args[i] == "__CMAKE_INJECTED_PROJECT_COMMAND__") {
-      injectedProjectCommand = true;
     } else if (doing == DoingVersion) {
       doing = DoingLanguages;
       version = args[i];
@@ -234,17 +231,7 @@ bool cmProjectCommand(std::vector<std::string> const& args,
     languages.emplace_back("NONE");
   }
 
-  cmPolicies::PolicyStatus const cmp0048 =
-    mf.GetPolicyStatus(cmPolicies::CMP0048);
   if (haveVersion) {
-    // Set project VERSION variables to given values
-    if (cmp0048 == cmPolicies::OLD || cmp0048 == cmPolicies::WARN) {
-      mf.IssueMessage(MessageType::FATAL_ERROR,
-                      "VERSION not allowed unless CMP0048 is set to NEW");
-      cmSystemTools::SetFatalErrorOccurred();
-      return true;
-    }
-
     cmsys::RegularExpression vx(
       R"(^([0-9]+(\.[0-9]+(\.[0-9]+(\.[0-9]+)?)?)?)?$)");
     if (!vx.find(version)) {
@@ -315,7 +302,7 @@ bool cmProjectCommand(std::vector<std::string> const& args,
                             version_components[2]);
     TopLevelCMakeVarCondSet(mf, "CMAKE_PROJECT_VERSION_TWEAK",
                             version_components[3]);
-  } else if (cmp0048 != cmPolicies::OLD) {
+  } else {
     // Set project VERSION variables to empty
     std::vector<std::string> vv = { "PROJECT_VERSION",
                                     "PROJECT_VERSION_MAJOR",
@@ -334,26 +321,12 @@ bool cmProjectCommand(std::vector<std::string> const& args,
       vv.emplace_back("CMAKE_PROJECT_VERSION_PATCH");
       vv.emplace_back("CMAKE_PROJECT_VERSION_TWEAK");
     }
-    std::string vw;
     for (std::string const& i : vv) {
       cmValue v = mf.GetDefinition(i);
       if (cmNonempty(v)) {
-        if (cmp0048 == cmPolicies::WARN) {
-          if (!injectedProjectCommand) {
-            vw += "\n  ";
-            vw += i;
-          }
-        } else {
-          mf.AddDefinition(i, "");
-        }
+        mf.AddDefinition(i, "");
       }
     }
-    if (!vw.empty()) {
-      mf.IssueMessage(
-        MessageType::AUTHOR_WARNING,
-        cmStrCat(cmPolicies::GetPolicyWarning(cmPolicies::CMP0048),
-                 "\nThe following variable(s) would be set to empty:", vw));
-    }
   }
 
   mf.AddDefinition("PROJECT_DESCRIPTION", description);

+ 0 - 7
Tests/RunCMake/project/CMP0048-NEW-stderr.txt

@@ -1,7 +0,0 @@
-^CMake Deprecation Warning at CMakeLists\.txt:[0-9]+ \(cmake_minimum_required\):
-  Compatibility with CMake < 3\.10 will be removed from a future version of
-  CMake\.
-
-  Update the VERSION argument <min> value\.  Or, use the <min>\.\.\.<max> syntax
-  to tell CMake that the project requires at least <min> but has been updated
-  to work with policies introduced by <max> or earlier\.$

+ 0 - 2
Tests/RunCMake/project/CMP0048-NEW.cmake

@@ -1,7 +1,5 @@
 include(PrintVersions.cmake)
 
-cmake_policy(SET CMP0048 NEW)
-
 project(ProjectA VERSION 1.2.3.4 LANGUAGES NONE)
 print_versions(ProjectA)
 

+ 0 - 1
Tests/RunCMake/project/CMP0048-OLD-VERSION-result.txt

@@ -1 +0,0 @@
-1

+ 0 - 4
Tests/RunCMake/project/CMP0048-OLD-VERSION-stderr.txt

@@ -1,4 +0,0 @@
-CMake Error at CMP0048-OLD-VERSION.cmake:1 \(project\):
-  VERSION not allowed unless CMP0048 is set to NEW
-Call Stack \(most recent call first\):
-  CMakeLists.txt:[0-9]+ \(include\)$

+ 0 - 2
Tests/RunCMake/project/CMP0048-OLD-VERSION.cmake

@@ -1,2 +0,0 @@
-project(MyProject VERSION 1 LANGUAGES NONE)
-message("This line not reached.")

+ 0 - 18
Tests/RunCMake/project/CMP0048-OLD-stderr.txt

@@ -1,18 +0,0 @@
-^CMake Deprecation Warning at CMakeLists\.txt:[0-9]+ \(cmake_minimum_required\):
-  Compatibility with CMake < 3\.10 will be removed from a future version of
-  CMake\.
-
-  Update the VERSION argument <min> value\.  Or, use the <min>\.\.\.<max> syntax
-  to tell CMake that the project requires at least <min> but has been updated
-  to work with policies introduced by <max> or earlier\.
-+
-CMake Deprecation Warning at CMP0048-OLD\.cmake:1 \(cmake_policy\):
-  The OLD behavior for policy CMP0048 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\)$

+ 0 - 2
Tests/RunCMake/project/CMP0048-OLD-stdout.txt

@@ -1,2 +0,0 @@
--- PROJECT_VERSION='1'
--- MyProject_VERSION_TWEAK='0'

+ 0 - 6
Tests/RunCMake/project/CMP0048-OLD.cmake

@@ -1,6 +0,0 @@
-cmake_policy(SET CMP0048 OLD)
-set(PROJECT_VERSION 1)
-set(MyProject_VERSION_TWEAK 0)
-project(MyProject NONE)
-message(STATUS "PROJECT_VERSION='${PROJECT_VERSION}'")
-message(STATUS "MyProject_VERSION_TWEAK='${MyProject_VERSION_TWEAK}'")

+ 0 - 12
Tests/RunCMake/project/CMP0048-WARN-stderr.txt

@@ -1,12 +0,0 @@
-CMake Warning \(dev\) at CMP0048-WARN.cmake:3 \(project\):
-  Policy CMP0048 is not set: project\(\) command manages VERSION variables.
-  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
-  command to set the policy and suppress this warning.
-
-  The following variable\(s\) would be set to empty:
-
-    PROJECT_VERSION
-    MyProject_VERSION_TWEAK
-Call Stack \(most recent call first\):
-  CMakeLists.txt:[0-9]+ \(include\)
-This warning is for project developers.  Use -Wno-dev to suppress it.

+ 0 - 3
Tests/RunCMake/project/CMP0048-WARN.cmake

@@ -1,3 +0,0 @@
-set(PROJECT_VERSION 1)
-set(MyProject_VERSION_TWEAK 0)
-project(MyProject NONE)

+ 0 - 1
Tests/RunCMake/project/CMP0096-NEW.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 cmake_policy(SET CMP0096 NEW)
 include(CMP0096-common.cmake)
 

+ 0 - 1
Tests/RunCMake/project/CMP0096-OLD.cmake

@@ -1,3 +1,2 @@
-cmake_policy(SET CMP0048 NEW)
 cmake_policy(SET CMP0096 OLD)
 include(CMP0096-common.cmake)

+ 0 - 2
Tests/RunCMake/project/CMP0096-WARN.cmake

@@ -1,3 +1 @@
-cmake_policy(SET CMP0048 NEW)
-
 include(CMP0096-common.cmake)

+ 0 - 2
Tests/RunCMake/project/CMakeLists.txt

@@ -1,7 +1,5 @@
 if("x${RunCMake_TEST}" STREQUAL "xNoMinimumRequired")
   # No cmake_minimum_required(VERSION)
-elseif(RunCMake_TEST MATCHES "^CMP0048")
-  cmake_minimum_required(VERSION 2.8.12) # old enough to not set CMP0048
 else()
   cmake_minimum_required(VERSION 3.10)
   # CMP0180 needs to be set before the project() call for these tests

+ 0 - 1
Tests/RunCMake/project/ProjectDescription.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectDescriptionTest VERSION 1.0.0 DESCRIPTION "Test Project" LANGUAGES)
 if(NOT PROJECT_DESCRIPTION)
   message(FATAL_ERROR "PROJECT_DESCRIPTION expected to be set")

+ 0 - 1
Tests/RunCMake/project/ProjectDescription2.cmake

@@ -1,2 +1 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectDescriptionTest VERSION 1.0.0 DESCRIPTION "Test Project" DESCRIPTION "Only once allowed" LANGUAGES)

+ 0 - 1
Tests/RunCMake/project/ProjectDescriptionNoArg.cmake

@@ -1,2 +1 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectDescriptionTest VERSION 1.0.0 LANGUAGES NONE DESCRIPTION)

+ 0 - 1
Tests/RunCMake/project/ProjectDescriptionNoArg2.cmake

@@ -1,2 +1 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectDescriptionTest VERSION 1.0.0 DESCRIPTION LANGUAGES NONE)

+ 0 - 1
Tests/RunCMake/project/ProjectHomepage.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectHomepageTest VERSION 1.0.0 HOMEPAGE_URL "http://example.com" LANGUAGES)
 if(NOT PROJECT_HOMEPAGE_URL)
   message(FATAL_ERROR "PROJECT_HOMEPAGE_URL expected to be set")

+ 1 - 1
Tests/RunCMake/project/ProjectHomepage2-stderr.txt

@@ -1,4 +1,4 @@
-^CMake Error at ProjectHomepage2.cmake:2 \(project\):
+^CMake Error at ProjectHomepage2.cmake:[0-9]+ \(project\):
   HOMEPAGE_URL may be specified at most once.
 Call Stack \(most recent call first\):
   CMakeLists.txt:[0-9]+ \(include\)$

+ 0 - 1
Tests/RunCMake/project/ProjectHomepage2.cmake

@@ -1,2 +1 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectDescriptionTest VERSION 1.0.0 HOMEPAGE_URL "http://example.com" HOMEPAGE_URL "http://example.com" LANGUAGES)

+ 1 - 1
Tests/RunCMake/project/ProjectHomepageNoArg-stderr.txt

@@ -1,4 +1,4 @@
-^CMake Warning at ProjectHomepageNoArg.cmake:2 \(project\):
+^CMake Warning at ProjectHomepageNoArg.cmake:[0-9]+ \(project\):
   HOMEPAGE_URL keyword not followed by a value or was followed by a value
   that expanded to nothing.
 Call Stack \(most recent call first\):

+ 0 - 1
Tests/RunCMake/project/ProjectHomepageNoArg.cmake

@@ -1,2 +1 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectDescriptionTest VERSION 1.0.0 LANGUAGES NONE HOMEPAGE_URL)

+ 0 - 1
Tests/RunCMake/project/ProjectTwice.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectTwiceTestFirst
   VERSION 1.2.3.4
   DESCRIPTION "Test Project"

+ 0 - 3
Tests/RunCMake/project/RunCMakeTest.cmake

@@ -53,9 +53,6 @@ run_cmake(VersionMissingValueOkay)
 run_cmake(VersionTwice)
 run_cmake(VersionMax)
 
-run_cmake(CMP0048-OLD)
-run_cmake(CMP0048-OLD-VERSION)
-run_cmake(CMP0048-WARN)
 run_cmake(CMP0048-NEW)
 
 run_cmake(CMP0096-WARN)

+ 0 - 1
Tests/RunCMake/project/VersionAndLanguagesEmpty.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectA VERSION 1 LANGUAGES NONE)
 get_property(langs GLOBAL PROPERTY ENABLED_LANGUAGES)
 message(STATUS "ENABLED_LANGUAGES='${langs}'")

+ 0 - 1
Tests/RunCMake/project/VersionEmpty.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 set(PROJECT_VERSION 1)
 project(ProjectA VERSION "" LANGUAGES NONE)
 get_property(langs GLOBAL PROPERTY ENABLED_LANGUAGES)

+ 1 - 1
Tests/RunCMake/project/VersionInvalid-stderr.txt

@@ -1,4 +1,4 @@
-CMake Error at VersionInvalid.cmake:2 \(project\):
+CMake Error at VersionInvalid.cmake:[0-9]+ \(project\):
   VERSION "NONE" format invalid.
 Call Stack \(most recent call first\):
   CMakeLists.txt:[0-9]+ \(include\)$

+ 0 - 1
Tests/RunCMake/project/VersionInvalid.cmake

@@ -1,3 +1,2 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectA VERSION NONE)
 message("This line not reached.")

+ 0 - 1
Tests/RunCMake/project/VersionMax.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 cmake_policy(SET CMP0096 OLD)
 
 enable_language(C)

+ 1 - 1
Tests/RunCMake/project/VersionMissingLanguages-stderr.txt

@@ -1,4 +1,4 @@
-CMake Error at VersionMissingLanguages.cmake:2 \(project\):
+CMake Error at VersionMissingLanguages.cmake:[0-9]+ \(project\):
   project with VERSION, DESCRIPTION or HOMEPAGE_URL must use LANGUAGES before
   language names.
 Call Stack \(most recent call first\):

+ 0 - 1
Tests/RunCMake/project/VersionMissingLanguages.cmake

@@ -1,3 +1,2 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectA VERSION 1 NONE)
 message("This line not reached.")

+ 0 - 1
Tests/RunCMake/project/VersionMissingValueOkay.cmake

@@ -1,4 +1,3 @@
-cmake_policy(SET CMP0048 NEW)
 set(PROJECT_VERSION 1)
 project(ProjectA VERSION LANGUAGES NONE)
 get_property(langs GLOBAL PROPERTY ENABLED_LANGUAGES)

+ 1 - 1
Tests/RunCMake/project/VersionTwice-stderr.txt

@@ -1,4 +1,4 @@
-CMake Error at VersionTwice.cmake:2 \(project\):
+CMake Error at VersionTwice.cmake:[0-9]+ \(project\):
   VERSION may be specified at most once.
 Call Stack \(most recent call first\):
   CMakeLists.txt:[0-9]+ \(include\)$

+ 0 - 1
Tests/RunCMake/project/VersionTwice.cmake

@@ -1,3 +1,2 @@
-cmake_policy(SET CMP0048 NEW)
 project(ProjectA VERSION 1 VERSION)
 message("This line not reached.")

+ 1 - 1
Tests/RunCMake/project_injected/CMakeLists.txt

@@ -1,3 +1,3 @@
-cmake_minimum_required(VERSION 2.8.12.2) # old enough to not set CMP0048
+cmake_minimum_required(VERSION 3.10)
 # no project(${RunCMake_TEST} NONE)
 include(${RunCMake_TEST}.cmake)

+ 1 - 9
Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt → Tests/RunCMake/project_injected/Inject-stderr.txt

@@ -9,12 +9,4 @@
 
   CMake is pretending there is a "project\(Project\)" command on the first
   line\.
-This warning is for project developers.  Use -Wno-dev to suppress it\.
-+
-CMake Deprecation Warning at CMakeLists\.txt:1 \(cmake_minimum_required\):
-  Compatibility with CMake < 3\.10 will be removed from a future version of
-  CMake\.
-
-  Update the VERSION argument <min> value\.  Or, use the <min>\.\.\.<max> syntax
-  to tell CMake that the project requires at least <min> but has been updated
-  to work with policies introduced by <max> or earlier\.$
+This warning is for project developers.  Use -Wno-dev to suppress it\.$

+ 0 - 0
Tests/RunCMake/project_injected/CMP0048-WARN.cmake → Tests/RunCMake/project_injected/Inject.cmake


+ 1 - 1
Tests/RunCMake/project_injected/RunCMakeTest.cmake

@@ -9,5 +9,5 @@ set(RunCMake_TEST_OPTIONS
   -DCMAKE_PROJECT_VERSION_MINOR:STATIC=2
   -DCMAKE_PROJECT_VERSION_PATCH:STATIC=3
   )
-run_cmake(CMP0048-WARN)
+run_cmake(Inject)
 unset(RunCMake_TEST_OPTIONS)