[Cmake-commits] CMake branch, next, updated. v2.8.10.2-2303-g634feee

Stephen Kelly steveire at gmail.com
Fri Feb 22 11:30:43 EST 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  634feee1453189f58ffeb26352ae2fb75b4101df (commit)
       via  fcd4ab5a153c4040eb971366c38971ce5773aa57 (commit)
       via  a6743c073ab20ce5bb09ea97b27ff20e9b7ad213 (commit)
      from  0e40f0768ba409bd68b689038c3084e5c91c22d3 (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=634feee1453189f58ffeb26352ae2fb75b4101df
commit 634feee1453189f58ffeb26352ae2fb75b4101df
Merge: 0e40f07 fcd4ab5
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 22 11:30:35 2013 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Feb 22 11:30:35 2013 -0500

    Merge topic 'interface-property-external-read' into next
    
    fcd4ab5 Restore fatal error for self-references in genexes.
    a6743c0 Workaround broken code where a target has itself in its link iface.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fcd4ab5a153c4040eb971366c38971ce5773aa57
commit fcd4ab5a153c4040eb971366c38971ce5773aa57
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 22 17:17:32 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Feb 22 17:26:50 2013 +0100

    Restore fatal error for self-references in genexes.
    
    This reverts most of commit 953def1e (Fix DAG checker finding cycling
    dependencies., 2013-02-18). The only remaining change is the logical
    change in the DagChecker implementation.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index edd2bd4..683245c 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -429,13 +429,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
     switch (dagChecker.check())
       {
     case cmGeneratorExpressionDAGChecker::SELF_REFERENCE:
-      // It would be better to consider it an error for the foo target
-      // to have a INTERFACE_INCLUDE_DIRECTORIES which depends directly on its
-      // own INTERFACE_INCLUDE_DIRECTORIES property, but as the error of a
-      // target having itself in its own LINK_INTERFACE_LIBRARIES is 'allowed'
-      // and tested, and as the interface includes and defines are now based
-      // on the link interface, it breaks the CMakeOnly.LinkInterfaceLoop test.
-//       dagChecker.reportError(context, content->GetOriginalExpression());
+      dagChecker.reportError(context, content->GetOriginalExpression());
       return std::string();
     case cmGeneratorExpressionDAGChecker::CYCLIC_REFERENCE:
       // No error. We just skip cyclic references.
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-stderr.txt
new file mode 100644
index 0000000..791c4a9
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>
+
+  Self reference on target "TargetPropertyGeneratorExpressions".$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1.cmake
new file mode 100644
index 0000000..a85731e
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1.cmake
@@ -0,0 +1,7 @@
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
+           "int main(int, char **) { return 0; }\n")
+
+add_executable(TargetPropertyGeneratorExpressions
+           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
+include_directories("$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>")
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-stderr.txt
new file mode 100644
index 0000000..791c4a9
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>
+
+  Self reference on target "TargetPropertyGeneratorExpressions".$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2.cmake
new file mode 100644
index 0000000..f1459b8
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2.cmake
@@ -0,0 +1,9 @@
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
+           "int main(int, char **) { return 0; }\n")
+
+add_executable(TargetPropertyGeneratorExpressions
+           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
+set_property(TARGET TargetPropertyGeneratorExpressions PROPERTY
+  INCLUDE_DIRECTORIES "$<TARGET_PROPERTY:INCLUDE_DIRECTORIES>"
+)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-stderr.txt
new file mode 100644
index 0000000..f60d726
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_PROPERTY:TargetPropertyGeneratorExpressions,INCLUDE_DIRECTORIES>
+
+  Self reference on target "TargetPropertyGeneratorExpressions".$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3.cmake
new file mode 100644
index 0000000..433b730
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3.cmake
@@ -0,0 +1,8 @@
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
+           "int main(int, char **) { return 0; }\n")
+
+add_executable(TargetPropertyGeneratorExpressions
+           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
+include_directories(
+  "$<TARGET_PROPERTY:TargetPropertyGeneratorExpressions,INCLUDE_DIRECTORIES>")
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-stderr.txt
new file mode 100644
index 0000000..f60d726
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_PROPERTY:TargetPropertyGeneratorExpressions,INCLUDE_DIRECTORIES>
+
+  Self reference on target "TargetPropertyGeneratorExpressions".$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4.cmake
new file mode 100644
index 0000000..4b64459
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4.cmake
@@ -0,0 +1,10 @@
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
+           "int main(int, char **) { return 0; }\n")
+
+add_executable(TargetPropertyGeneratorExpressions
+           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
+set_property(TARGET TargetPropertyGeneratorExpressions PROPERTY
+INCLUDE_DIRECTORIES
+  "$<TARGET_PROPERTY:TargetPropertyGeneratorExpressions,INCLUDE_DIRECTORIES>"
+)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-stderr.txt
new file mode 100644
index 0000000..2b22d0f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_PROPERTY:COMPILE_DEFINITIONS>
+
+  Self reference on target "TargetPropertyGeneratorExpressions".$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5.cmake
new file mode 100644
index 0000000..74fff67
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5.cmake
@@ -0,0 +1,10 @@
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
+           "int main(int, char **) { return 0; }\n")
+
+add_executable(TargetPropertyGeneratorExpressions
+           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
+set_property(TARGET TargetPropertyGeneratorExpressions
+PROPERTY
+  COMPILE_DEFINITIONS "$<TARGET_PROPERTY:COMPILE_DEFINITIONS>"
+)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-result.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-stderr.txt b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-stderr.txt
new file mode 100644
index 0000000..fe7caa3
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-stderr.txt
@@ -0,0 +1,6 @@
+CMake Error:
+  Error evaluating generator expression:
+
+    \$<TARGET_PROPERTY:TargetPropertyGeneratorExpressions,COMPILE_DEFINITIONS>
+
+  Self reference on target "TargetPropertyGeneratorExpressions".$
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6.cmake
new file mode 100644
index 0000000..d6650d3
--- /dev/null
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6.cmake
@@ -0,0 +1,10 @@
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/main.cpp"
+           "int main(int, char **) { return 0; }\n")
+
+add_executable(TargetPropertyGeneratorExpressions
+           "${CMAKE_CURRENT_BINARY_DIR}/main.cpp")
+set_property(TARGET TargetPropertyGeneratorExpressions PROPERTY
+COMPILE_DEFINITIONS
+  "$<TARGET_PROPERTY:TargetPropertyGeneratorExpressions,COMPILE_DEFINITIONS>"
+)
diff --git a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake b/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
index fa14d4c..0ee3238 100644
--- a/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
+++ b/Tests/RunCMake/TargetPropertyGeneratorExpressions/RunCMakeTest.cmake
@@ -1,5 +1,11 @@
 include(RunCMake)
 
+run_cmake(BadSelfReference1)
+run_cmake(BadSelfReference2)
+run_cmake(BadSelfReference3)
+run_cmake(BadSelfReference4)
+run_cmake(BadSelfReference5)
+run_cmake(BadSelfReference6)
 run_cmake(BadNonTarget)
 run_cmake(BadInvalidName1)
 run_cmake(BadInvalidName2)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a6743c073ab20ce5bb09ea97b27ff20e9b7ad213
commit a6743c073ab20ce5bb09ea97b27ff20e9b7ad213
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Feb 22 17:16:19 2013 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Feb 22 17:25:06 2013 +0100

    Workaround broken code where a target has itself in its link iface.
    
    There is a test for this since commit 8e756d2b (Tolerate cycles in
    shared library link interfaces (#12647), 2012-01-12), so make sure
    it continues to pass, even as we require no self-references in new
    INTERFACE_ property generator expressions.

diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index c294425..edd2bd4 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -506,6 +506,13 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
             it = iface->Libraries.begin();
             it != iface->Libraries.end(); ++it)
           {
+          if (*it == target->GetName())
+            {
+            // Broken code can have a target in its own link interface.
+            // Don't follow such link interface entries so as not to create a
+            // self-referencing loop.
+            continue;
+            }
           if (context->Makefile->FindTargetToUse(it->c_str()))
             {
             depString +=

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

Summary of changes:
 Source/cmGeneratorExpressionEvaluator.cxx          |   15 ++++++++-------
 .../BadSelfReference1-result.txt}                  |    0
 .../BadSelfReference1-stderr.txt                   |    6 ++++++
 .../BadSelfReference1.cmake                        |    7 +++++++
 .../BadSelfReference2-result.txt}                  |    0
 .../BadSelfReference2-stderr.txt                   |    6 ++++++
 .../BadSelfReference2.cmake                        |    9 +++++++++
 .../BadSelfReference3-result.txt}                  |    0
 .../BadSelfReference3-stderr.txt                   |    6 ++++++
 .../BadSelfReference3.cmake                        |    8 ++++++++
 .../BadSelfReference4-result.txt}                  |    0
 .../BadSelfReference4-stderr.txt                   |    6 ++++++
 .../BadSelfReference4.cmake                        |   10 ++++++++++
 .../BadSelfReference5-result.txt}                  |    0
 .../BadSelfReference5-stderr.txt                   |    6 ++++++
 .../BadSelfReference5.cmake                        |   10 ++++++++++
 .../BadSelfReference6-result.txt}                  |    0
 .../BadSelfReference6-stderr.txt                   |    6 ++++++
 .../BadSelfReference6.cmake                        |   10 ++++++++++
 .../RunCMakeTest.cmake                             |    6 ++++++
 20 files changed, 104 insertions(+), 7 deletions(-)
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference1-result.txt} (100%)
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1-stderr.txt
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference1.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference2-result.txt} (100%)
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2-stderr.txt
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference2.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference3-result.txt} (100%)
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3-stderr.txt
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference3.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference4-result.txt} (100%)
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4-stderr.txt
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference4.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference5-result.txt} (100%)
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5-stderr.txt
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference5.cmake
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => TargetPropertyGeneratorExpressions/BadSelfReference6-result.txt} (100%)
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6-stderr.txt
 create mode 100644 Tests/RunCMake/TargetPropertyGeneratorExpressions/BadSelfReference6.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list