summaryrefslogtreecommitdiffstats
path: root/Tests/CompatibleInterface/CMakeLists.txt
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2013-01-23 21:17:14 (GMT)
committerBrad King <brad.king@kitware.com>2013-01-24 13:17:46 (GMT)
commit6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03 (patch)
treea7eefb8914cf7e8b50bd13875b7f6880e7aea900 /Tests/CompatibleInterface/CMakeLists.txt
parent76ace2b95aba4b12c049224aa8a2d18c67129d45 (diff)
downloadCMake-6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03.zip
CMake-6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03.tar.gz
CMake-6fbe3ce4ef1178cc4f2f14f281cd48ef82a11e03.tar.bz2
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.
Diffstat (limited to 'Tests/CompatibleInterface/CMakeLists.txt')
-rw-r--r--Tests/CompatibleInterface/CMakeLists.txt16
1 files changed, 16 insertions, 0 deletions
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)