diff options
author | Brad King <brad.king@kitware.com> | 2007-04-04 18:50:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2007-04-04 18:50:35 (GMT) |
commit | 438a7e2fcef6c82dd93e0106208dbaee7e9ccfc4 (patch) | |
tree | 457a6595797e62866b70c4d7e6b4f428b7da033b /Tests/Dependency | |
parent | 2803688998cebbd40df1a0678106e62271217add (diff) | |
download | CMake-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/Dependency')
-rw-r--r-- | Tests/Dependency/Two/CMakeLists.txt | 17 | ||||
-rw-r--r-- | Tests/Dependency/Two/TwoCustomSrc.c | 10 | ||||
-rw-r--r-- | Tests/Dependency/Two/TwoSrc.c | 2 | ||||
-rw-r--r-- | Tests/Dependency/Two/two-test.h.in | 1 |
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(); |