[Cmake-commits] CMake branch, next, updated. v3.0.0-rc4-3079-g72fb3b2

Brad King brad.king at kitware.com
Fri May 9 11:28:07 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  72fb3b274cae0c69f5148a5e16158174b3273a78 (commit)
       via  911cc9a39e1f26344d47743885626060c2d94d2c (commit)
       via  cb810abe6d1c4189517d84fa6e08849a02e3f873 (commit)
      from  380a053aae3136483fee1491a3f5d9fc74904823 (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=72fb3b274cae0c69f5148a5e16158174b3273a78
commit 72fb3b274cae0c69f5148a5e16158174b3273a78
Merge: 380a053 911cc9a
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 9 11:28:06 2014 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri May 9 11:28:06 2014 -0400

    Merge topic 'target-property-policy-context' into next
    
    911cc9a3 cmTarget: Evaluate CMP0026 and CMP0051 in calling context
    cb810abe cmTarget: Drop unused GetProperty signature


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=911cc9a39e1f26344d47743885626060c2d94d2c
commit 911cc9a39e1f26344d47743885626060c2d94d2c
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 9 10:50:29 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri May 9 11:24:15 2014 -0400

    cmTarget: Evaluate CMP0026 and CMP0051 in calling context
    
    These policies should be checked at the call site that tries to access
    the LOCATION or SOURCES property, not the directory scope containing the
    target.  Thread the caller context through cmTarget::GetProperty to use
    for checking the policy setting and emitting a diagnostic with proper
    backtrace.
    
    Extend the RunCMake.CMP0026 and RunCMake.CMP0051 tests with
    cross-directory cases.

diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx
index 6dd40c9..512d789 100644
--- a/Source/cmGetPropertyCommand.cxx
+++ b/Source/cmGetPropertyCommand.cxx
@@ -302,7 +302,8 @@ bool cmGetPropertyCommand::HandleTargetMode()
     }
   if(cmTarget* target = this->Makefile->FindTargetToUse(this->Name))
     {
-    return this->StoreResult(target->GetProperty(this->PropertyName));
+    return this->StoreResult(target->GetProperty(this->PropertyName,
+                                                 this->Makefile));
     }
   else
     {
diff --git a/Source/cmGetTargetPropertyCommand.cxx b/Source/cmGetTargetPropertyCommand.cxx
index e3ec0bc..aa6f0c1 100644
--- a/Source/cmGetTargetPropertyCommand.cxx
+++ b/Source/cmGetTargetPropertyCommand.cxx
@@ -38,7 +38,7 @@ bool cmGetTargetPropertyCommand
   else if(cmTarget* tgt = this->Makefile->FindTargetToUse(targetName))
     {
     cmTarget& target = *tgt;
-    const char* prop_cstr = target.GetProperty(args[2]);
+    const char* prop_cstr = target.GetProperty(args[2], this->Makefile);
     if(prop_cstr)
       {
       prop = prop_cstr;
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 6b8d51d..3f2ae9e 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -3178,7 +3178,7 @@ const char* cmTarget::GetFeature(const std::string& feature,
 }
 
 //----------------------------------------------------------------------------
-bool cmTarget::HandleLocationPropertyPolicy() const
+bool cmTarget::HandleLocationPropertyPolicy(cmMakefile* context) const
 {
   if (this->IsImported())
     {
@@ -3187,7 +3187,7 @@ bool cmTarget::HandleLocationPropertyPolicy() const
   cmOStringStream e;
   const char *modal = 0;
   cmake::MessageType messageType = cmake::AUTHOR_WARNING;
-  switch (this->Makefile->GetPolicyStatus(cmPolicies::CMP0026))
+  switch (context->GetPolicyStatus(cmPolicies::CMP0026))
     {
     case cmPolicies::WARN:
       e << (this->Makefile->GetPolicies()
@@ -3208,7 +3208,7 @@ bool cmTarget::HandleLocationPropertyPolicy() const
       << this->GetName() << "\".  Use the target name directly with "
       "add_custom_command, or use the generator expression $<TARGET_FILE>, "
       "as appropriate.\n";
-    this->Makefile->IssueMessage(messageType, e.str());
+    context->IssueMessage(messageType, e.str());
     }
 
   return messageType != cmake::FATAL_ERROR;
@@ -3217,13 +3217,20 @@ bool cmTarget::HandleLocationPropertyPolicy() const
 //----------------------------------------------------------------------------
 const char *cmTarget::GetProperty(const std::string& prop) const
 {
+  return this->GetProperty(prop, this->Makefile);
+}
+
+//----------------------------------------------------------------------------
+const char *cmTarget::GetProperty(const std::string& prop,
+                                  cmMakefile* context) const
+{
   if (this->GetType() == INTERFACE_LIBRARY
       && !whiteListedInterfaceProperty(prop))
     {
     cmOStringStream e;
     e << "INTERFACE_LIBRARY targets may only have whitelisted properties.  "
          "The property \"" << prop << "\" is not allowed.";
-    this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str());
+    context->IssueMessage(cmake::FATAL_ERROR, e.str());
     return 0;
     }
 
@@ -3242,7 +3249,7 @@ const char *cmTarget::GetProperty(const std::string& prop) const
     {
     if(prop == "LOCATION")
       {
-      if (!this->HandleLocationPropertyPolicy())
+      if (!this->HandleLocationPropertyPolicy(context))
         {
         return 0;
         }
@@ -3263,7 +3270,7 @@ const char *cmTarget::GetProperty(const std::string& prop) const
     // Support "LOCATION_<CONFIG>".
     if(cmHasLiteralPrefix(prop, "LOCATION_"))
       {
-      if (!this->HandleLocationPropertyPolicy())
+      if (!this->HandleLocationPropertyPolicy(context))
         {
         return 0;
         }
@@ -3278,7 +3285,7 @@ const char *cmTarget::GetProperty(const std::string& prop) const
       std::string configName(prop.c_str(), prop.size() - 9);
       if(configName != "IMPORTED")
         {
-        if (!this->HandleLocationPropertyPolicy())
+        if (!this->HandleLocationPropertyPolicy(context))
           {
           return 0;
           }
@@ -3416,7 +3423,7 @@ const char *cmTarget::GetProperty(const std::string& prop) const
           bool noMessage = true;
           cmOStringStream e;
           cmake::MessageType messageType = cmake::AUTHOR_WARNING;
-          switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0051))
+          switch(context->GetPolicyStatus(cmPolicies::CMP0051))
             {
             case cmPolicies::WARN:
               e << (this->Makefile->GetPolicies()
@@ -3437,7 +3444,7 @@ const char *cmTarget::GetProperty(const std::string& prop) const
             "read at configure time.  Code reading that property needs to be "
             "adapted to ignore the generator expression using the "
             "string(GENEX_STRIP) command.";
-            this->Makefile->IssueMessage(messageType, e.str());
+            context->IssueMessage(messageType, e.str());
             }
           if (addContent)
             {
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 22462b9..bee6b34 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -231,6 +231,7 @@ public:
   void AppendProperty(const std::string&  prop, const char* value,
           bool asString=false);
   const char *GetProperty(const std::string& prop) const;
+  const char *GetProperty(const std::string& prop, cmMakefile* context) const;
   bool GetPropertyAsBool(const std::string& prop) const;
   void CheckProperty(const std::string& prop, cmMakefile* context) const;
 
@@ -587,7 +588,7 @@ public:
                             const std::string &compatibilityType) const;
 
 private:
-  bool HandleLocationPropertyPolicy() const;
+  bool HandleLocationPropertyPolicy(cmMakefile* context) const;
 
   // The set of include directories that are marked as system include
   // directories.
diff --git a/Tests/RunCMake/CMP0026/CMP0026-WARN-Dir/CMakeLists.txt b/Tests/RunCMake/CMP0026/CMP0026-WARN-Dir/CMakeLists.txt
new file mode 100644
index 0000000..17a7db0
--- /dev/null
+++ b/Tests/RunCMake/CMP0026/CMP0026-WARN-Dir/CMakeLists.txt
@@ -0,0 +1 @@
+add_library(otherlib ../empty.cpp)
diff --git a/Tests/RunCMake/CMP0026/CMP0026-WARN-stderr.txt b/Tests/RunCMake/CMP0026/CMP0026-WARN-stderr.txt
index 9b88194..d122c4a 100644
--- a/Tests/RunCMake/CMP0026/CMP0026-WARN-stderr.txt
+++ b/Tests/RunCMake/CMP0026/CMP0026-WARN-stderr.txt
@@ -10,3 +10,16 @@ CMake Warning \(dev\) at CMP0026-WARN.cmake:5 \(get_target_property\):
 Call Stack \(most recent call first\):
   CMakeLists.txt:3 \(include\)
 This warning is for project developers.  Use -Wno-dev to suppress it.
++
+CMake Warning \(dev\) at CMP0026-WARN.cmake:8 \(get_target_property\):
+  Policy CMP0026 is not set: Disallow use of the LOCATION target property.
+  Run "cmake --help-policy CMP0026" for policy details.  Use the cmake_policy
+  command to set the policy and suppress this warning.
+
+  The LOCATION property should not be read from target "otherlib".  Use the
+  target name directly with add_custom_command, or use the generator
+  expression \$<TARGET_FILE>, as appropriate.
+
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CMP0026/CMP0026-WARN.cmake b/Tests/RunCMake/CMP0026/CMP0026-WARN.cmake
index 89c5a8a..bfc9203 100644
--- a/Tests/RunCMake/CMP0026/CMP0026-WARN.cmake
+++ b/Tests/RunCMake/CMP0026/CMP0026-WARN.cmake
@@ -3,3 +3,6 @@ enable_language(CXX)
 
 add_library(somelib empty.cpp)
 get_target_property(_loc somelib LOCATION)
+
+add_subdirectory(CMP0026-WARN-Dir)
+get_target_property(_loc otherlib LOCATION)
diff --git a/Tests/RunCMake/CMP0051/CMP0051-WARN-Dir/CMakeLists.txt b/Tests/RunCMake/CMP0051/CMP0051-WARN-Dir/CMakeLists.txt
new file mode 100644
index 0000000..77cbad5
--- /dev/null
+++ b/Tests/RunCMake/CMP0051/CMP0051-WARN-Dir/CMakeLists.txt
@@ -0,0 +1 @@
+add_library(empty2 ../empty.cpp $<TARGET_OBJECTS:objects>)
diff --git a/Tests/RunCMake/CMP0051/CMP0051-WARN-stderr.txt b/Tests/RunCMake/CMP0051/CMP0051-WARN-stderr.txt
index f1b0357..ae2e468 100644
--- a/Tests/RunCMake/CMP0051/CMP0051-WARN-stderr.txt
+++ b/Tests/RunCMake/CMP0051/CMP0051-WARN-stderr.txt
@@ -12,4 +12,20 @@ Call Stack \(most recent call first\):
   CMakeLists.txt:3 \(include\)
 This warning is for project developers.  Use -Wno-dev to suppress it.
 
-Sources: "empty.cpp"$
+Sources: "empty.cpp"
+*
+CMake Warning \(dev\) at CMP0051-WARN.cmake:12 \(get_target_property\):
+  Policy CMP0051 is not set: List TARGET_OBJECTS in SOURCES target property.
+  Run "cmake --help-policy CMP0051" for policy details.  Use the cmake_policy
+  command to set the policy and suppress this warning.
+
+  Target "empty2" contains \$<TARGET_OBJECTS> generator expression in its
+  sources list.  This content was not previously part of the SOURCES property
+  when that property was read at configure time.  Code reading that property
+  needs to be adapted to ignore the generator expression using the
+  string\(GENEX_STRIP\) command.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
+
+Sources: "../empty.cpp"$
diff --git a/Tests/RunCMake/CMP0051/CMP0051-WARN.cmake b/Tests/RunCMake/CMP0051/CMP0051-WARN.cmake
index fd595ce..744598f 100644
--- a/Tests/RunCMake/CMP0051/CMP0051-WARN.cmake
+++ b/Tests/RunCMake/CMP0051/CMP0051-WARN.cmake
@@ -6,3 +6,9 @@ add_library(empty empty.cpp $<TARGET_OBJECTS:objects>)
 get_target_property(srcs empty SOURCES)
 
 message("Sources: \"${srcs}\"")
+
+add_subdirectory(CMP0051-WARN-Dir)
+
+get_target_property(srcs empty2 SOURCES)
+
+message("Sources: \"${srcs}\"")

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cb810abe6d1c4189517d84fa6e08849a02e3f873
commit cb810abe6d1c4189517d84fa6e08849a02e3f873
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri May 9 10:04:23 2014 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Fri May 9 11:17:32 2014 -0400

    cmTarget: Drop unused GetProperty signature
    
    No callers use the second "scope" argument.  Drop this signature and
    hard-code the default parameter value internally.

diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index dda855f..6b8d51d 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -3178,12 +3178,6 @@ const char* cmTarget::GetFeature(const std::string& feature,
 }
 
 //----------------------------------------------------------------------------
-const char *cmTarget::GetProperty(const std::string& prop) const
-{
-  return this->GetProperty(prop, cmProperty::TARGET);
-}
-
-//----------------------------------------------------------------------------
 bool cmTarget::HandleLocationPropertyPolicy() const
 {
   if (this->IsImported())
@@ -3221,8 +3215,7 @@ bool cmTarget::HandleLocationPropertyPolicy() const
 }
 
 //----------------------------------------------------------------------------
-const char *cmTarget::GetProperty(const std::string& prop,
-                                  cmProperty::ScopeType scope) const
+const char *cmTarget::GetProperty(const std::string& prop) const
 {
   if (this->GetType() == INTERFACE_LIBRARY
       && !whiteListedInterfaceProperty(prop))
@@ -3489,10 +3482,10 @@ const char *cmTarget::GetProperty(const std::string& prop,
     }
   bool chain = false;
   const char *retVal =
-    this->Properties.GetPropertyValue(prop, scope, chain);
+    this->Properties.GetPropertyValue(prop, cmProperty::TARGET, chain);
   if (chain)
     {
-    return this->Makefile->GetProperty(prop,scope);
+    return this->Makefile->GetProperty(prop, cmProperty::TARGET);
     }
   return retVal;
 }
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 4d8022e..22462b9 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -231,8 +231,6 @@ public:
   void AppendProperty(const std::string&  prop, const char* value,
           bool asString=false);
   const char *GetProperty(const std::string& prop) const;
-  const char *GetProperty(const std::string& prop,
-          cmProperty::ScopeType scope) const;
   bool GetPropertyAsBool(const std::string& prop) const;
   void CheckProperty(const std::string& prop, cmMakefile* context) const;
 

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

Summary of changes:
 Source/cmGetPropertyCommand.cxx                    |    3 +-
 Source/cmGetTargetPropertyCommand.cxx              |    2 +-
 Source/cmTarget.cxx                                |   36 ++++++++++----------
 Source/cmTarget.h                                  |    5 ++-
 .../CMP0026/CMP0026-WARN-Dir/CMakeLists.txt        |    1 +
 Tests/RunCMake/CMP0026/CMP0026-WARN-stderr.txt     |   13 +++++++
 Tests/RunCMake/CMP0026/CMP0026-WARN.cmake          |    3 ++
 .../CMP0051/CMP0051-WARN-Dir/CMakeLists.txt        |    1 +
 Tests/RunCMake/CMP0051/CMP0051-WARN-stderr.txt     |   18 +++++++++-
 Tests/RunCMake/CMP0051/CMP0051-WARN.cmake          |    6 ++++
 10 files changed, 64 insertions(+), 24 deletions(-)
 create mode 100644 Tests/RunCMake/CMP0026/CMP0026-WARN-Dir/CMakeLists.txt
 create mode 100644 Tests/RunCMake/CMP0051/CMP0051-WARN-Dir/CMakeLists.txt


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list