summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2007-04-04 18:50:35 (GMT)
committerBrad King <brad.king@kitware.com>2007-04-04 18:50:35 (GMT)
commit438a7e2fcef6c82dd93e0106208dbaee7e9ccfc4 (patch)
tree457a6595797e62866b70c4d7e6b4f428b7da033b /Tests
parent2803688998cebbd40df1a0678106e62271217add (diff)
downloadCMake-438a7e2fcef6c82dd93e0106208dbaee7e9ccfc4.zip
CMake-438a7e2fcef6c82dd93e0106208dbaee7e9ccfc4.tar.gz
CMake-438a7e2fcef6c82dd93e0106208dbaee7e9ccfc4.tar.bz2
BUG: Fix utility dependencies for static libraries in VS generators. This addresses bug#4789.
Diffstat (limited to 'Tests')
-rw-r--r--Tests/Dependency/Two/CMakeLists.txt17
-rw-r--r--Tests/Dependency/Two/TwoCustomSrc.c10
-rw-r--r--Tests/Dependency/Two/TwoSrc.c2
-rw-r--r--Tests/Dependency/Two/two-test.h.in1
4 files changed, 29 insertions, 1 deletions
diff --git a/Tests/Dependency/Two/CMakeLists.txt b/Tests/Dependency/Two/CMakeLists.txt
index 6a9630e..587c848 100644
--- a/Tests/Dependency/Two/CMakeLists.txt
+++ b/Tests/Dependency/Two/CMakeLists.txt
@@ -1,3 +1,20 @@
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
ADD_LIBRARY( Two TwoSrc.c )
TARGET_LINK_LIBRARIES( Two Three )
+# Setup a target to cause failure if Two does not depend on it or if
+# Two actually links to it. This will test that a utility dependency
+# on a library target works properly.
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/two-test.h
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${CMAKE_CURRENT_SOURCE_DIR}/two-test.h.in
+ ${CMAKE_CURRENT_BINARY_DIR}/two-test.h
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/two-test.h.in
+ )
+ADD_LIBRARY( TwoCustom TwoCustomSrc.c ${CMAKE_CURRENT_BINARY_DIR}/two-test.h)
+SET_TARGET_PROPERTIES(TwoCustom PROPERTIES EXCLUDE_FROM_ALL 1)
+TARGET_LINK_LIBRARIES(TwoCustom Three)
+
+# Add a utility dependency to make sure it works without linking.
+ADD_DEPENDENCIES(Two TwoCustom)
diff --git a/Tests/Dependency/Two/TwoCustomSrc.c b/Tests/Dependency/Two/TwoCustomSrc.c
new file mode 100644
index 0000000..ac31dcf
--- /dev/null
+++ b/Tests/Dependency/Two/TwoCustomSrc.c
@@ -0,0 +1,10 @@
+extern void NoFunction();
+
+/* Provide a function that is supposed to be found in the Three
+ library. If Two links to TwoCustom then TwoCustom will come before
+ Three and this symbol will be used. Since NoFunction is not
+ defined, that will cause a link failure. */
+void ThreeFunction()
+{
+ NoFunction();
+}
diff --git a/Tests/Dependency/Two/TwoSrc.c b/Tests/Dependency/Two/TwoSrc.c
index 981df09..0b3366b 100644
--- a/Tests/Dependency/Two/TwoSrc.c
+++ b/Tests/Dependency/Two/TwoSrc.c
@@ -1,4 +1,4 @@
-void ThreeFunction();
+#include <two-test.h>
void TwoFunction()
{
diff --git a/Tests/Dependency/Two/two-test.h.in b/Tests/Dependency/Two/two-test.h.in
new file mode 100644
index 0000000..8c6a7f7
--- /dev/null
+++ b/Tests/Dependency/Two/two-test.h.in
@@ -0,0 +1 @@
+extern void ThreeFunction();