[Cmake-commits] CMake branch, next, updated. v2.8.11.1-2733-g39aa1bd

Stephen Kelly steveire at gmail.com
Mon Jun 24 11:50:56 EDT 2013


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  39aa1bdefed9c58bf2c1950518689d19c2b28358 (commit)
       via  ff015ee11e66388f50f9a1350e2731e7a240ccb1 (commit)
       via  b58aff90c5a3633ae7fa0d78731433d40a02d8bd (commit)
       via  b1c19ce3837036bde3b639f8285fa228b8e6f278 (commit)
       via  0e1cb07e841c5ca9207bc4e32ff0672476226cc0 (commit)
      from  6a5d577d67e5845aee01d2020ae1dc7252d993e7 (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=39aa1bdefed9c58bf2c1950518689d19c2b28358
commit 39aa1bdefed9c58bf2c1950518689d19c2b28358
Merge: 6a5d577 ff015ee
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Jun 24 11:50:35 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Mon Jun 24 11:50:35 2013 -0400

    Merge topic 'dag-LINKER_LANGUAGE' into next
    
    ff015ee Genex: Report error if a target file is needed to evaluate link libraries.
    b58aff9 Genex: Extend EvaluatingLinkLibraries to also check the top target name.
    b1c19ce Genex: Make LINK_LANGUAGE report an error when evaluating link libraries.
    0e1cb07 Add missing return after error report.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ff015ee11e66388f50f9a1350e2731e7a240ccb1
commit ff015ee11e66388f50f9a1350e2731e7a240ccb1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jun 14 16:25:29 2013 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Jun 24 16:22:15 2013 +0200

    Genex: Report error if a target file is needed to evaluate link libraries.
    
    Constructs such as
    
     target_link_libraries(foo $<$<STREQUAL:$<TARGET_FILE:foo>,foo.so>:bar>)
    
    segfault before this patch.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index cd0d26b..f57e683 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -1100,7 +1100,7 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
   std::string Evaluate(const std::vector<std::string> &parameters,
                        cmGeneratorExpressionContext *context,
                        const GeneratorExpressionContent *content,
-                       cmGeneratorExpressionDAGChecker *) const
+                       cmGeneratorExpressionDAGChecker *dagChecker) const
   {
     // Lookup the referenced target.
     std::string name = *parameters.begin();
@@ -1125,6 +1125,13 @@ struct TargetFilesystemArtifact : public cmGeneratorExpressionNode
                   "Target \"" + name + "\" is not an executable or library.");
       return std::string();
       }
+    if (dagChecker && dagChecker->EvaluatingLinkLibraries(name.c_str()))
+      {
+      ::reportError(context, content->GetOriginalExpression(),
+                    "Expressions which require the linker language may not "
+                    "be used while evaluating link libraries");
+      return std::string();
+      }
     context->DependTargets.insert(target);
     context->AllTargets.insert(target);
 
diff --git a/Tests/RunCMake/Languages/RunCMakeTest.cmake b/Tests/RunCMake/Languages/RunCMakeTest.cmake
index 59ef5dc..6517a81 100644
--- a/Tests/RunCMake/Languages/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Languages/RunCMakeTest.cmake
@@ -2,3 +2,5 @@ include(RunCMake)
 
 run_cmake(NoLangSHARED)
 run_cmake(LINK_LANGUAGE-genex)
+run_cmake(link-libraries-TARGET_FILE-genex)
+run_cmake(link-libraries-TARGET_FILE-genex-ok)
diff --git a/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok-result.txt b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok-result.txt
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok.cmake b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok.cmake
new file mode 100644
index 0000000..f0fd6e5
--- /dev/null
+++ b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok.cmake
@@ -0,0 +1,6 @@
+
+enable_language(CXX)
+
+add_library(foo SHARED empty.cpp)
+add_library(bar SHARED empty.cpp)
+target_link_libraries(foo $<$<STREQUAL:$<TARGET_FILE:bar>,anything>:bar>)
diff --git a/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-result.txt b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-stderr.txt b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-stderr.txt
new file mode 100644
index 0000000..2d7a3c9
--- /dev/null
+++ b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-stderr.txt
@@ -0,0 +1,7 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_FILE:foo>
+
+  Expressions which require the linker language may not be used while
+  evaluating link libraries
diff --git a/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex.cmake b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex.cmake
new file mode 100644
index 0000000..eca73e9
--- /dev/null
+++ b/Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex.cmake
@@ -0,0 +1,4 @@
+
+add_library(foo SHARED empty.cpp)
+add_library(bar SHARED empty.cpp)
+target_link_libraries(foo $<$<STREQUAL:$<TARGET_FILE:foo>,anything>:bar>)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b58aff90c5a3633ae7fa0d78731433d40a02d8bd
commit b58aff90c5a3633ae7fa0d78731433d40a02d8bd
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jun 14 15:58:04 2013 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Jun 24 16:22:15 2013 +0200

    Genex: Extend EvaluatingLinkLibraries to also check the top target name.
    
    This will allow testing whether we are evaluating the link libraries
    of a particular target.

diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx
index 3e03c09..5b79e35 100644
--- a/Source/cmGeneratorExpressionDAGChecker.cxx
+++ b/Source/cmGeneratorExpressionDAGChecker.cxx
@@ -139,7 +139,7 @@ cmGeneratorExpressionDAGChecker::checkGraph() const
 }
 
 //----------------------------------------------------------------------------
-bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries()
+bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries(const char *tgt)
 {
   const cmGeneratorExpressionDAGChecker *top = this;
   const cmGeneratorExpressionDAGChecker *parent = this->Parent;
@@ -150,6 +150,12 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries()
     }
 
   const char *prop = top->Property.c_str();
+
+  if (tgt)
+    {
+    return top->Target == tgt && strcmp(prop, "LINK_LIBRARIES") == 0;
+    }
+
   return (strcmp(prop, "LINK_LIBRARIES") == 0
        || strcmp(prop, "LINK_INTERFACE_LIBRARIES") == 0
        || strcmp(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES") == 0
diff --git a/Source/cmGeneratorExpressionDAGChecker.h b/Source/cmGeneratorExpressionDAGChecker.h
index 85b13e5..95d466a 100644
--- a/Source/cmGeneratorExpressionDAGChecker.h
+++ b/Source/cmGeneratorExpressionDAGChecker.h
@@ -47,7 +47,7 @@ struct cmGeneratorExpressionDAGChecker
   void reportError(cmGeneratorExpressionContext *context,
                    const std::string &expr);
 
-  bool EvaluatingLinkLibraries();
+  bool EvaluatingLinkLibraries(const char *tgt = 0);
 
 #define DECLARE_TRANSITIVE_PROPERTY_METHOD(METHOD) \
   bool METHOD () const;

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b1c19ce3837036bde3b639f8285fa228b8e6f278
commit b1c19ce3837036bde3b639f8285fa228b8e6f278
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jun 14 15:59:23 2013 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Jun 24 16:21:53 2013 +0200

    Genex: Make LINK_LANGUAGE report an error when evaluating link libraries.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 3e18bba..cd0d26b 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -415,8 +415,15 @@ static const struct LinkLanguageNode : public cmGeneratorExpressionNode
   std::string Evaluate(const std::vector<std::string> &parameters,
                        cmGeneratorExpressionContext *context,
                        const GeneratorExpressionContent *content,
-                       cmGeneratorExpressionDAGChecker *) const
+                       cmGeneratorExpressionDAGChecker *dagChecker) const
   {
+    if (dagChecker && dagChecker->EvaluatingLinkLibraries())
+      {
+      reportError(context, content->GetOriginalExpression(),
+          "$<LINK_LANGUAGE> expression can not be used while evaluating "
+          "link libraries");
+      return std::string();
+      }
     if (parameters.size() != 0 && parameters.size() != 1)
       {
       reportError(context, content->GetOriginalExpression(),
diff --git a/Tests/RunCMake/Languages/LINK_LANGUAGE-genex-result.txt b/Tests/RunCMake/Languages/LINK_LANGUAGE-genex-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/Languages/LINK_LANGUAGE-genex-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/Languages/LINK_LANGUAGE-genex-stderr.txt b/Tests/RunCMake/Languages/LINK_LANGUAGE-genex-stderr.txt
new file mode 100644
index 0000000..8e0591d
--- /dev/null
+++ b/Tests/RunCMake/Languages/LINK_LANGUAGE-genex-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<LINK_LANGUAGE>
+
+  \$<LINK_LANGUAGE> expression can not be used while evaluating link libraries
diff --git a/Tests/RunCMake/Languages/LINK_LANGUAGE-genex.cmake b/Tests/RunCMake/Languages/LINK_LANGUAGE-genex.cmake
new file mode 100644
index 0000000..e0f8c57
--- /dev/null
+++ b/Tests/RunCMake/Languages/LINK_LANGUAGE-genex.cmake
@@ -0,0 +1,4 @@
+
+add_library(foo SHARED empty.cpp)
+add_library(bar SHARED empty.cpp)
+target_link_libraries(foo $<$<STREQUAL:$<LINK_LANGUAGE>,anything>:bar>)
diff --git a/Tests/RunCMake/Languages/RunCMakeTest.cmake b/Tests/RunCMake/Languages/RunCMakeTest.cmake
index a99548f..59ef5dc 100644
--- a/Tests/RunCMake/Languages/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Languages/RunCMakeTest.cmake
@@ -1,3 +1,4 @@
 include(RunCMake)
 
 run_cmake(NoLangSHARED)
+run_cmake(LINK_LANGUAGE-genex)
diff --git a/Tests/RunCMake/Languages/empty.cpp b/Tests/RunCMake/Languages/empty.cpp
new file mode 100644
index 0000000..7279c5e
--- /dev/null
+++ b/Tests/RunCMake/Languages/empty.cpp
@@ -0,0 +1,7 @@
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int empty(void)
+{
+  return 0;
+}

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0e1cb07e841c5ca9207bc4e32ff0672476226cc0
commit 0e1cb07e841c5ca9207bc4e32ff0672476226cc0
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jun 14 15:45:12 2013 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Mon Jun 24 16:21:53 2013 +0200

    Add missing return after error report.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 701c547..3e18bba 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -429,6 +429,7 @@ static const struct LinkLanguageNode : public cmGeneratorExpressionNode
       reportError(context, content->GetOriginalExpression(),
           "$<LINK_LANGUAGE> may only be used with targets.  It may not "
           "be used with add_custom_command.");
+      return std::string();
       }
 
     const char *lang = target->GetLinkerLanguage(context->Config);

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

Summary of changes:
 Source/cmGeneratorExpressionDAGChecker.cxx         |    8 +++++++-
 Source/cmGeneratorExpressionDAGChecker.h           |    2 +-
 Source/cmGeneratorExpressionEvaluator.cxx          |   19 +++++++++++++++++--
 .../LINK_LANGUAGE-genex-result.txt}                |    0
 .../Languages/LINK_LANGUAGE-genex-stderr.txt       |    6 ++++++
 Tests/RunCMake/Languages/LINK_LANGUAGE-genex.cmake |    4 ++++
 Tests/RunCMake/Languages/RunCMakeTest.cmake        |    3 +++
 .../Languages}/empty.cpp                           |    0
 ...link-libraries-TARGET_FILE-genex-ok-result.txt} |    0
 .../link-libraries-TARGET_FILE-genex-ok.cmake      |    6 ++++++
 .../link-libraries-TARGET_FILE-genex-result.txt}   |    0
 .../link-libraries-TARGET_FILE-genex-stderr.txt    |    7 +++++++
 .../link-libraries-TARGET_FILE-genex.cmake         |    4 ++++
 13 files changed, 55 insertions(+), 4 deletions(-)
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Languages/LINK_LANGUAGE-genex-result.txt} (100%)
 create mode 100644 Tests/RunCMake/Languages/LINK_LANGUAGE-genex-stderr.txt
 create mode 100644 Tests/RunCMake/Languages/LINK_LANGUAGE-genex.cmake
 copy Tests/{IncludeDirectories/TargetIncludeDirectories => RunCMake/Languages}/empty.cpp (100%)
 copy Tests/RunCMake/{include_directories/DebugIncludes-result.txt => Languages/link-libraries-TARGET_FILE-genex-ok-result.txt} (100%)
 create mode 100644 Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-ok.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => Languages/link-libraries-TARGET_FILE-genex-result.txt} (100%)
 create mode 100644 Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex-stderr.txt
 create mode 100644 Tests/RunCMake/Languages/link-libraries-TARGET_FILE-genex.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list