[Cmake-commits] CMake branch, next, updated. v2.8.10.2-1747-g1cd5f61
Brad King
brad.king at kitware.com
Thu Jan 24 08:19:25 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 1cd5f61fc9c7c7a1b16f6011136cd9bf015f0944 (commit)
via 6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03 (commit)
from a8d88e0d93a554e4637e7417316b388b534fffa9 (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=1cd5f61fc9c7c7a1b16f6011136cd9bf015f0944
commit 1cd5f61fc9c7c7a1b16f6011136cd9bf015f0944
Merge: a8d88e0 6fbe3ce
Author: Brad King <brad.king at kitware.com>
AuthorDate: Thu Jan 24 08:19:21 2013 -0500
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jan 24 08:19:21 2013 -0500
Merge topic 'fix-COMPATIBLE_INTERFACE-link-libraries' into next
6fbe3ce Exclude the LINK_LIBRARIES related properties from INTERFACE evaluation.
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03
commit 6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Jan 23 22:17:14 2013 +0100
Commit: Brad King <brad.king at kitware.com>
CommitDate: Thu Jan 24 08:17:46 2013 -0500
Exclude the LINK_LIBRARIES related properties from INTERFACE evaluation.
These interface-related link-libraries properties are used to determine
the value of the other INTERFACE properties, so we were getting infinite
recursion and segfaults otherwise.
diff --git a/Source/cmGeneratorExpressionDAGChecker.cxx b/Source/cmGeneratorExpressionDAGChecker.cxx
index 057f4c3..269211b 100644
--- a/Source/cmGeneratorExpressionDAGChecker.cxx
+++ b/Source/cmGeneratorExpressionDAGChecker.cxx
@@ -114,8 +114,14 @@ bool cmGeneratorExpressionDAGChecker::EvaluatingLinkLibraries()
const cmGeneratorExpressionDAGChecker *parent = this->Parent;
while (parent)
{
- parent = parent->Parent;
top = parent;
+ parent = parent->Parent;
}
- return top->Property == "LINK_LIBRARIES";
+
+ const char *prop = top->Property.c_str();
+ return (strcmp(prop, "LINK_LIBRARIES") == 0
+ || strcmp(prop, "LINK_INTERFACE_LIBRARIES") == 0
+ || strcmp(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES") == 0
+ || strncmp(prop, "LINK_INTERFACE_LIBRARIES_", 26) == 0
+ || strncmp(prop, "IMPORTED_LINK_INTERFACE_LIBRARIES_", 35) == 0);
}
diff --git a/Tests/CompatibleInterface/CMakeLists.txt b/Tests/CompatibleInterface/CMakeLists.txt
index d0eb60f..7280652 100644
--- a/Tests/CompatibleInterface/CMakeLists.txt
+++ b/Tests/CompatibleInterface/CMakeLists.txt
@@ -3,12 +3,16 @@ cmake_minimum_required(VERSION 2.8)
project(CompatibleInterface)
+include(GenerateExportHeader)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
add_library(iface1 empty.cpp)
set_property(TARGET iface1 APPEND PROPERTY
COMPATIBLE_INTERFACE_BOOL
BOOL_PROP1
BOOL_PROP2
BOOL_PROP3
+ BOOL_PROP4
)
set_property(TARGET iface1 PROPERTY INTERFACE_BOOL_PROP1 ON)
@@ -26,3 +30,15 @@ target_compile_definitions(CompatibleInterface
$<$<BOOL:$<TARGET_PROPERTY:BOOL_PROP2>>:BOOL_PROP2>
$<$<BOOL:$<TARGET_PROPERTY:BOOL_PROP3>>:BOOL_PROP3>
)
+
+
+add_library(iface2 SHARED iface2.cpp)
+generate_export_header(iface2)
+
+# For the LINK_LIBRARIES and related properties, we should not evaluate
+# properties defined only in the interface - they should be implicitly zero
+set_property(TARGET iface2
+ APPEND PROPERTY
+ LINK_INTERFACE_LIBRARIES $<$<BOOL:$<TARGET_PROPERTY:BOOL_PROP4>>:nonexistant>
+)
+target_link_libraries(CompatibleInterface iface2)
diff --git a/Tests/CompatibleInterface/iface2.cpp b/Tests/CompatibleInterface/iface2.cpp
new file mode 100644
index 0000000..a9b5015
--- /dev/null
+++ b/Tests/CompatibleInterface/iface2.cpp
@@ -0,0 +1,7 @@
+
+#include "iface2.h"
+
+int Iface2::foo()
+{
+ return 0;
+}
diff --git a/Tests/CompatibleInterface/iface2.h b/Tests/CompatibleInterface/iface2.h
new file mode 100644
index 0000000..ef4ebee
--- /dev/null
+++ b/Tests/CompatibleInterface/iface2.h
@@ -0,0 +1,13 @@
+
+#ifndef IFACE2_H
+#define IFACE2_H
+
+#include "iface2_export.h"
+
+class IFACE2_EXPORT Iface2
+{
+public:
+ int foo();
+};
+
+#endif
diff --git a/Tests/CompatibleInterface/main.cpp b/Tests/CompatibleInterface/main.cpp
index b7c6638..ae0e985 100644
--- a/Tests/CompatibleInterface/main.cpp
+++ b/Tests/CompatibleInterface/main.cpp
@@ -11,7 +11,10 @@
#error Expected BOOL_PROP3
#endif
+#include "iface2.h"
+
int main(int argc, char **argv)
{
- return 0;
+ Iface2 if2;
+ return if2.foo();
}
-----------------------------------------------------------------------
Summary of changes:
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list