[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