[Cmake-commits] CMake branch, next, updated. v3.0.0-rc3-1759-gb380ac5

Brad King brad.king at kitware.com
Wed Apr 2 14:50:16 EDT 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  b380ac59ae23cf8533056559832ea443d8a70e74 (commit)
       via  13684e2b78bf273b20e6ea3acf9defe61e871327 (commit)
       via  8018fcca6e055a0f12a17fc8324128080a9ec568 (commit)
       via  a41c0a9dcbc201b183bcc0a0c0f6bf9f2cebd079 (commit)
       via  d339653eaf8757b79f02a315cb5e6d63555f17d2 (commit)
      from  d480e4491e3b27d646f3af650cdd6b26c9831d91 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b380ac59ae23cf8533056559832ea443d8a70e74
commit b380ac59ae23cf8533056559832ea443d8a70e74
Merge: d480e44 13684e2
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 2 14:50:15 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Wed Apr 2 14:50:15 2014 -0400

    Merge topic 'revise-compiler-id-policies' into next
    
    13684e2b cmMakefile: Port PolicyOptionalWarningEnabled to string APIs
    8018fcca Merge branch 'master' into revise-compiler-id-policies
    a41c0a9d Do not warn by default when policy CMP0025 or CMP0047 is not set
    d339653e Help: Revise and format policy CMP0025 and CMP0047 docs


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=13684e2b78bf273b20e6ea3acf9defe61e871327
commit 13684e2b78bf273b20e6ea3acf9defe61e871327
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 2 14:31:04 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 2 14:44:45 2014 -0400

    cmMakefile: Port PolicyOptionalWarningEnabled to string APIs
    
    This method was added in a commit based on a release branch that
    pre-dated the std::string API changes.  Port the implementation to use
    the string APIs instead of c_str().

diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index b0ff258..621b8ee 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -4336,7 +4336,7 @@ bool cmMakefile::PolicyOptionalWarningEnabled(std::string const& var)
   // Check for an explicit CMAKE_POLICY_WARNING_CMP<NNNN> setting.
   if(!var.empty())
     {
-    if(const char* val = this->GetDefinition(var.c_str()))
+    if(const char* val = this->GetDefinition(var))
       {
       return cmSystemTools::IsOn(val);
       }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8018fcca6e055a0f12a17fc8324128080a9ec568
commit 8018fcca6e055a0f12a17fc8324128080a9ec568
Merge: a41c0a9 5ada4be
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 2 14:44:35 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 2 14:44:35 2014 -0400

    Merge branch 'master' into revise-compiler-id-policies

diff --cc Source/cmMakefile.h
index f00fd20,460a85c..8ff6daa
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@@ -872,17 -877,15 +877,17 @@@ public
    void AddQtUiFileWithOptions(cmSourceFile *sf);
    std::vector<cmSourceFile*> GetQtUiFilesWithOptions() const;
  
-   std::set<cmStdString> const & GetSystemIncludeDirectories() const
+   std::set<std::string> const & GetSystemIncludeDirectories() const
      { return this->SystemIncludeDirectories; }
  
 +  bool PolicyOptionalWarningEnabled(std::string const& var);
 +
  protected:
    // add link libraries and directories to the target
-   void AddGlobalLinkInformation(const char* name, cmTarget& target);
+   void AddGlobalLinkInformation(const std::string& name, cmTarget& target);
  
    // Check for a an unused variable
-   void CheckForUnused(const char* reason, const char* name) const;
+   void CheckForUnused(const char* reason, const std::string& name) const;
  
    std::string Prefix;
    std::vector<std::string> AuxSourceDirectories; //

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a41c0a9dcbc201b183bcc0a0c0f6bf9f2cebd079
commit a41c0a9dcbc201b183bcc0a0c0f6bf9f2cebd079
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 2 14:02:03 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 2 14:43:54 2014 -0400

    Do not warn by default when policy CMP0025 or CMP0047 is not set
    
    These policies are triggered by the use of a particular compiler rather
    than outdated CMake code in a project.  Avoid warning in every project
    that enables a language by not displaying the policy warning by default.
    Add variable CMAKE_POLICY_WARNING_CMP<NNNN> to control the warning
    explicitly; otherwise enable the warning with --debug-output or --trace.
    
    This breaks with strict policy convention because it does not provide
    developers with any warning about the behavior change by default.
    Existing projects will continue to build without a warning or change in
    behavior.  When a developer changes the minimum required version of
    CMake in a project to a sufficiently high value (3.0), the project will
    suddenly get the new compiler id and may break, but at least the
    breakage comes with a change to the project rather than the version of
    CMake used to build it.
    
    Breaking strict policy convention is worthwhile in this case because
    very few projects will be affected by the behavior change but every
    project would have to see the warning if it were enabled by default.

diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index d9d7a0c..f4b9666 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -131,6 +131,7 @@ Variables that Change Behavior
    /variable/CMAKE_MODULE_PATH
    /variable/CMAKE_NOT_USING_CONFIG_FLAGS
    /variable/CMAKE_POLICY_DEFAULT_CMPNNNN
+   /variable/CMAKE_POLICY_WARNING_CMPNNNN
    /variable/CMAKE_PREFIX_PATH
    /variable/CMAKE_PROGRAM_PATH
    /variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE
diff --git a/Help/policy/CMP0025.rst b/Help/policy/CMP0025.rst
index 5d63efa..8d19edf 100644
--- a/Help/policy/CMP0025.rst
+++ b/Help/policy/CMP0025.rst
@@ -18,6 +18,10 @@ to the invocation of either command.
 The OLD behavior for this policy is to use compiler id ``Clang``.  The
 NEW behavior for this policy is to use compiler id ``AppleClang``.
 
-This policy was introduced in CMake version 3.0.  CMake version
-|release| warns when the policy is not set and uses OLD behavior.  Use
-the :command:`cmake_policy` command to set it to OLD or NEW explicitly.
+This policy was introduced in CMake version 3.0.  Use the
+:command:`cmake_policy` command to set this policy to OLD or NEW explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+by default when this policy is not set and simply uses OLD behavior.
+See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0025 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
diff --git a/Help/policy/CMP0047.rst b/Help/policy/CMP0047.rst
index 896d702..26ae439 100644
--- a/Help/policy/CMP0047.rst
+++ b/Help/policy/CMP0047.rst
@@ -19,7 +19,10 @@ The OLD behavior for this policy is to use the ``GNU`` compiler id
 for the qcc and QCC compiler drivers. The NEW behavior for this policy
 is to use the ``QCC`` compiler id for those drivers.
 
-This policy was introduced in CMake version 3.0.
-CMake version |release| warns when the policy is not set and uses
-OLD behavior.  Use the :command:`cmake_policy` command to set it to
-OLD or NEW explicitly.
+This policy was introduced in CMake version 3.0.  Use the
+:command:`cmake_policy` command to set this policy to OLD or NEW explicitly.
+Unlike most policies, CMake version |release| does *not* warn
+by default when this policy is not set and simply uses OLD behavior.
+See documentation of the
+:variable:`CMAKE_POLICY_WARNING_CMP0047 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
+variable to control the warning.
diff --git a/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst b/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
new file mode 100644
index 0000000..b563aea
--- /dev/null
+++ b/Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst
@@ -0,0 +1,17 @@
+CMAKE_POLICY_WARNING_CMP<NNNN>
+------------------------------
+
+Explicitly enable or disable the warning when CMake Policy ``CMP<NNNN>``
+is not set.  This is meaningful only for the few policies that do not
+warn by default:
+
+* ``CMAKE_POLICY_WARNING_CMP0025`` controls the warning for
+  policy :policy:`CMP0025`.
+* ``CMAKE_POLICY_WARNING_CMP0047`` controls the warning for
+  policy :policy:`CMP0047`.
+
+This variable should not be set by a project in CMake code.  Project
+developers running CMake may set this variable in their cache to
+enable the warning (e.g. ``-DCMAKE_POLICY_WARNING_CMP<NNNN>=ON``).
+Alternatively, running :manual:`cmake(1)` with the ``--debug-output``
+or ``--trace`` option will also enable the warning.
diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx
index 4f3328d..beb10da 100644
--- a/Source/cmGlobalGenerator.cxx
+++ b/Source/cmGlobalGenerator.cxx
@@ -759,7 +759,8 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf,
     switch(mf->GetPolicyStatus(cmPolicies::CMP0025))
       {
       case cmPolicies::WARN:
-        if(!this->CMakeInstance->GetIsInTryCompile())
+        if(!this->CMakeInstance->GetIsInTryCompile() &&
+           mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0025"))
           {
           cmOStringStream w;
           w << policies->GetPolicyWarning(cmPolicies::CMP0025) << "\n"
@@ -790,7 +791,8 @@ void cmGlobalGenerator::CheckCompilerIdCompatibility(cmMakefile* mf,
     switch(mf->GetPolicyStatus(cmPolicies::CMP0047))
       {
       case cmPolicies::WARN:
-        if(!this->CMakeInstance->GetIsInTryCompile())
+        if(!this->CMakeInstance->GetIsInTryCompile() &&
+           mf->PolicyOptionalWarningEnabled("CMAKE_POLICY_WARNING_CMP0047"))
           {
           cmOStringStream w;
           w << policies->GetPolicyWarning(cmPolicies::CMP0047) << "\n"
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index 10137ec..b195943 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -4350,6 +4350,22 @@ cmMakefile::GetPolicyStatusInternal(cmPolicies::PolicyID id) const
   return this->GetPolicies()->GetPolicyStatus(id);
 }
 
+//----------------------------------------------------------------------------
+bool cmMakefile::PolicyOptionalWarningEnabled(std::string const& var)
+{
+  // Check for an explicit CMAKE_POLICY_WARNING_CMP<NNNN> setting.
+  if(!var.empty())
+    {
+    if(const char* val = this->GetDefinition(var.c_str()))
+      {
+      return cmSystemTools::IsOn(val);
+      }
+    }
+  // Enable optional policy warnings with --debug-output or --trace.
+  cmake* cm = this->GetCMakeInstance();
+  return cm->GetDebugOutput() || cm->GetTrace();
+}
+
 bool cmMakefile::SetPolicy(const char *id,
                            cmPolicies::PolicyStatus status)
 {
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 45f3b9f..f00fd20 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -875,6 +875,8 @@ public:
   std::set<cmStdString> const & GetSystemIncludeDirectories() const
     { return this->SystemIncludeDirectories; }
 
+  bool PolicyOptionalWarningEnabled(std::string const& var);
+
 protected:
   // add link libraries and directories to the target
   void AddGlobalLinkInformation(const char* name, cmTarget& target);

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d339653eaf8757b79f02a315cb5e6d63555f17d2
commit d339653eaf8757b79f02a315cb5e6d63555f17d2
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 2 12:51:47 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 2 14:42:45 2014 -0400

    Help: Revise and format policy CMP0025 and CMP0047 docs
    
    Add inline reST markup as appropriate.  Word CMP0047 docs more like
    those of CMP0025.  State explicitly that the policies must be set
    before the project or enable_language command calls.

diff --git a/Help/policy/CMP0025.rst b/Help/policy/CMP0025.rst
index f3b39e3..5d63efa 100644
--- a/Help/policy/CMP0025.rst
+++ b/Help/policy/CMP0025.rst
@@ -1,21 +1,23 @@
 CMP0025
 -------
 
-Compiler id for Apple Clang is now AppleClang.
+Compiler id for Apple Clang is now ``AppleClang``.
 
-CMake >= 3.0 recognize that Apple Clang is a different compiler
+CMake 3.0 and above recognize that Apple Clang is a different compiler
 than upstream Clang and that they have different version numbers.
-CMake now prefers to present this to projects by setting
-CMAKE_<LANG>_COMPILER_ID to "AppleClang" instead of "Clang".  However,
-existing projects may assume the compiler id for Apple Clang is just
-"Clang" as it was in CMake < 3.0.  Therefore this policy determines
-for Apple Clang which compiler id to report in
-CMAKE_<LANG>_COMPILER_ID after <LANG> is enabled by the project() or
-enable_language() command.
+CMake now prefers to present this to projects by setting the
+:variable:`CMAKE_<LANG>_COMPILER_ID` variable to ``AppleClang`` instead
+of ``Clang``.  However, existing projects may assume the compiler id for
+Apple Clang is just ``Clang`` as it was in CMake versions prior to 3.0.
+Therefore this policy determines for Apple Clang which compiler id to
+report in the :variable:`CMAKE_<LANG>_COMPILER_ID` variable after
+language ``<LANG>`` is enabled by the :command:`project` or
+:command:`enable_language` command.  The policy must be set prior
+to the invocation of either command.
 
-The OLD behavior for this policy is to use compiler id "Clang".  The
-NEW behavior for this policy is to use compiler id "AppleClang".
+The OLD behavior for this policy is to use compiler id ``Clang``.  The
+NEW behavior for this policy is to use compiler id ``AppleClang``.
 
 This policy was introduced in CMake version 3.0.  CMake version
 |release| warns when the policy is not set and uses OLD behavior.  Use
-the cmake_policy command to set it to OLD or NEW explicitly.
+the :command:`cmake_policy` command to set it to OLD or NEW explicitly.
diff --git a/Help/policy/CMP0047.rst b/Help/policy/CMP0047.rst
index c2d951b..896d702 100644
--- a/Help/policy/CMP0047.rst
+++ b/Help/policy/CMP0047.rst
@@ -1,16 +1,25 @@
 CMP0047
 -------
 
-Use QCC compiler id for the qcc drivers on QNX.
+Use ``QCC`` compiler id for the qcc drivers on QNX.
 
-CMake 2.8.12 and lower assigned the QNX qcc and QCC compiler drivers the "GNU"
-compiler id.
+CMake 3.0 and above recognize that the QNX qcc compiler driver is
+different from the GNU compiler.
+CMake now prefers to present this to projects by setting the
+:variable:`CMAKE_<LANG>_COMPILER_ID` variable to ``QCC`` instead
+of ``GNU``.  However, existing projects may assume the compiler id for
+QNX qcc is just ``GNU`` as it was in CMake versions prior to 3.0.
+Therefore this policy determines for QNX qcc which compiler id to
+report in the :variable:`CMAKE_<LANG>_COMPILER_ID` variable after
+language ``<LANG>`` is enabled by the :command:`project` or
+:command:`enable_language` command.  The policy must be set prior
+to the invocation of either command.
 
-The OLD behavior for this policy is to use the "GNU" compiler id for the qcc
-and QCC compiler drivers. The NEW behavior for this policy is to use the "QCC"
-compiler id for those drivers.
+The OLD behavior for this policy is to use the ``GNU`` compiler id
+for the qcc and QCC compiler drivers. The NEW behavior for this policy
+is to use the ``QCC`` compiler id for those drivers.
 
 This policy was introduced in CMake version 3.0.
 CMake version |release| warns when the policy is not set and uses
-OLD behavior.  Use the cmake_policy command to set it to OLD or
-NEW explicitly.
+OLD behavior.  Use the :command:`cmake_policy` command to set it to
+OLD or NEW explicitly.

-----------------------------------------------------------------------

Summary of changes:
 Help/manual/cmake-variables.7.rst              |    1 +
 Help/policy/CMP0025.rst                        |   34 ++++++++++++++----------
 Help/policy/CMP0047.rst                        |   32 +++++++++++++++-------
 Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst |   17 ++++++++++++
 Source/cmGlobalGenerator.cxx                   |    6 +++--
 Source/cmMakefile.cxx                          |   16 +++++++++++
 Source/cmMakefile.h                            |    2 ++
 7 files changed, 82 insertions(+), 26 deletions(-)
 create mode 100644 Help/variable/CMAKE_POLICY_WARNING_CMPNNNN.rst


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list