diff options
author | Brad King <brad.king@kitware.com> | 2013-11-03 14:20:47 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-11-03 14:20:47 (GMT) |
commit | 25b7f87ecadb400db0d206e938ec1d2771d735a7 (patch) | |
tree | 104a6a84f046a6a9a0b9701213fa84c41698eaa7 /Tests | |
parent | 6f6caee388483c913c54f69a75c16b7652449cdd (diff) | |
parent | 0a561a03475f4ed1e017802970a8f17998fe05c3 (diff) | |
download | CMake-25b7f87ecadb400db0d206e938ec1d2771d735a7.zip CMake-25b7f87ecadb400db0d206e938ec1d2771d735a7.tar.gz CMake-25b7f87ecadb400db0d206e938ec1d2771d735a7.tar.bz2 |
Merge branch 'policy-CMP0022-fixes' into policy-CMP0022-fixes-for-master
Resolve conflict in Source/cmTarget.cxx by integrating the changes to
the internal copy constructor from both sides. Also resolve a logical
conflict by dropping the special case for INTERFACE_LIBRARY targets.
Since cmTarget::SetMakefile already forces CMP0022 to NEW for such
targets we need no special handling.
Resolve conflict in Source/cmTargetLinkLibrariesCommand.h by dropping
the documentation change. We will make the same change in the new
location of the same documentation in a separate commit.
Resolve conflicts in
Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt
Tests/RunCMake/CMP0022/RunCMakeTest.cmake
by taking the side from the 'policy-CMP0022-fixes' branch.
Diffstat (limited to 'Tests')
19 files changed, 106 insertions, 12 deletions
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt b/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt index 33757b6..818b8c9 100644 --- a/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt +++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt @@ -28,3 +28,10 @@ endif() add_executable(staticlib_exe staticlib_exe.cpp) target_link_libraries(staticlib_exe staticlib1) + +add_library(onlyplainlib1 SHARED onlyplainlib1.cpp) +add_library(onlyplainlib2 SHARED onlyplainlib2.cpp) +target_link_libraries(onlyplainlib2 onlyplainlib1) + +add_executable(onlyplainlib_user onlyplainlib_user.cpp) +target_link_libraries(onlyplainlib_user onlyplainlib2) diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.cpp b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.cpp new file mode 100644 index 0000000..41dc3ce --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.cpp @@ -0,0 +1,13 @@ + +#include "onlyplainlib1.h" + +OnlyPlainLib1::OnlyPlainLib1() + : result(0) +{ + +} + +int OnlyPlainLib1::GetResult() +{ + return result; +} diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.h b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.h new file mode 100644 index 0000000..c0373ce --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.h @@ -0,0 +1,14 @@ + +struct +#ifdef _WIN32 +__declspec(dllexport) +#endif +OnlyPlainLib1 +{ + OnlyPlainLib1(); + + int GetResult(); + +private: + int result; +}; diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.cpp b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.cpp new file mode 100644 index 0000000..2865ae9 --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.cpp @@ -0,0 +1,8 @@ + +#include "onlyplainlib2.h" + +OnlyPlainLib1 onlyPlainLib2() +{ + OnlyPlainLib1 opl1; + return opl1; +} diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.h b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.h new file mode 100644 index 0000000..74b18a0 --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.h @@ -0,0 +1,7 @@ + +#include "onlyplainlib1.h" + +#ifdef _WIN32 +__declspec(dllexport) +#endif +OnlyPlainLib1 onlyPlainLib2(); diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib_user.cpp b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib_user.cpp new file mode 100644 index 0000000..0fb7b0a --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib_user.cpp @@ -0,0 +1,7 @@ + +#include "onlyplainlib2.h" + +int main(int argc, char **argv) +{ + return onlyPlainLib2().GetResult(); +} diff --git a/Tests/RunCMake/CMP0022/CMP0022-NOWARN-exe-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-exe-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-exe-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CMP0022/CMP0022-NOWARN-exe.cmake b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-exe.cmake new file mode 100644 index 0000000..b0268c8 --- /dev/null +++ b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-exe.cmake @@ -0,0 +1,7 @@ +enable_language(CXX) + +add_library(testLib empty_vs6_1.cpp) +add_executable(testExe empty_vs6_2.cpp) +target_link_libraries(testExe testLib) + +export(TARGETS testExe FILE "${CMAKE_CURRENT_BINARY_DIR}/cmp0022NOWARN-exe.cmake") diff --git a/Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared.cmake b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared.cmake new file mode 100644 index 0000000..57c3ed0 --- /dev/null +++ b/Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared.cmake @@ -0,0 +1,8 @@ +enable_language(CXX) + +add_library(foo SHARED empty_vs6_1.cpp) +add_library(bar SHARED empty_vs6_2.cpp) +target_link_libraries(bar foo) + +add_executable(zot empty.cpp) +target_link_libraries(zot bar) diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt index 6d519f0..6a6a0c7 100644 --- a/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt +++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt @@ -3,14 +3,16 @@ CMake Warning \(dev\) in CMakeLists.txt: interface. Run "cmake --help-policy CMP0022" for policy details. Use the cmake_policy command to set the policy and suppress this warning. - Target "bar" has a INTERFACE_LINK_LIBRARIES property which differs from its - LINK_INTERFACE_LIBRARIES properties. + Target "bar" has an INTERFACE_LINK_LIBRARIES property. This should be + preferred as the source of the link interface for this library but because + CMP0022 is not set CMake is ignoring the property and using the link + implementation as the link interface instead. INTERFACE_LINK_LIBRARIES: foo - LINK_INTERFACE_LIBRARIES: + Link implementation: \(empty\) diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-static-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-WARN-static-stderr.txt index e41133a..1370c5e 100644 --- a/Tests/RunCMake/CMP0022/CMP0022-WARN-static-stderr.txt +++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-static-stderr.txt @@ -3,10 +3,10 @@ CMake Warning \(dev\) in CMakeLists.txt: interface. Run "cmake --help-policy CMP0022" for policy details. Use the cmake_policy command to set the policy and suppress this warning. - Static library target "bar" has a INTERFACE_LINK_LIBRARIES property. This - should be preferred as the source of the link interface for this library. - Ignoring the property and using the link implementation as the link - interface instead. + Target "bar" has an INTERFACE_LINK_LIBRARIES property. This should be + preferred as the source of the link interface for this library but because + CMP0022 is not set CMake is ignoring the property and using the link + implementation as the link interface instead. INTERFACE_LINK_LIBRARIES: diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-WARN-stderr.txt index 93c0ab3..2f7dfbf 100644 --- a/Tests/RunCMake/CMP0022/CMP0022-WARN-stderr.txt +++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-stderr.txt @@ -1,10 +1,10 @@ -CMake Warning \(dev\) in CMakeLists.txt: +^CMake Warning \(dev\) in CMakeLists.txt: Policy CMP0022 is not set: INTERFACE_LINK_LIBRARIES defines the link interface. Run "cmake --help-policy CMP0022" for policy details. Use the cmake_policy command to set the policy and suppress this warning. - Target "bar" has a INTERFACE_LINK_LIBRARIES property which differs from its - LINK_INTERFACE_LIBRARIES properties. + Target "bar" has an INTERFACE_LINK_LIBRARIES property which differs from + its LINK_INTERFACE_LIBRARIES properties. INTERFACE_LINK_LIBRARIES: diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-tll-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-WARN-tll-stderr.txt index 6370b24..f672285 100644 --- a/Tests/RunCMake/CMP0022/CMP0022-WARN-tll-stderr.txt +++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-tll-stderr.txt @@ -3,8 +3,8 @@ CMake Warning \(dev\) in CMakeLists.txt: interface. Run "cmake --help-policy CMP0022" for policy details. Use the cmake_policy command to set the policy and suppress this warning. - Target "bar" has a INTERFACE_LINK_LIBRARIES property which differs from its - LINK_INTERFACE_LIBRARIES properties. + Target "bar" has an INTERFACE_LINK_LIBRARIES property which differs from + its LINK_INTERFACE_LIBRARIES properties. INTERFACE_LINK_LIBRARIES: diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN.cmake b/Tests/RunCMake/CMP0022/CMP0022-WARN.cmake index 24b7f45..fe7e858 100644 --- a/Tests/RunCMake/CMP0022/CMP0022-WARN.cmake +++ b/Tests/RunCMake/CMP0022/CMP0022-WARN.cmake @@ -9,3 +9,8 @@ set_property(TARGET bar PROPERTY LINK_INTERFACE_LIBRARIES bat) add_library(user empty.cpp) target_link_libraries(user bar) + +# Use "bar" again with a different "head" target to check +# that the warning does not appear again. +add_library(user2 empty_vs6_3.cpp) +target_link_libraries(user2 bar) diff --git a/Tests/RunCMake/CMP0022/CMP0022-export-exe-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-export-exe-stderr.txt new file mode 100644 index 0000000..10f3293 --- /dev/null +++ b/Tests/RunCMake/CMP0022/CMP0022-export-exe-stderr.txt @@ -0,0 +1 @@ +^$ diff --git a/Tests/RunCMake/CMP0022/CMP0022-export-exe.cmake b/Tests/RunCMake/CMP0022/CMP0022-export-exe.cmake new file mode 100644 index 0000000..d832fac --- /dev/null +++ b/Tests/RunCMake/CMP0022/CMP0022-export-exe.cmake @@ -0,0 +1,9 @@ +enable_language(CXX) + +cmake_policy(SET CMP0022 NEW) + +add_library(testLib empty_vs6_1.cpp) +add_executable(testExe empty_vs6_2.cpp) +target_link_libraries(testExe testLib) + +export(TARGETS testExe FILE "${CMAKE_CURRENT_BINARY_DIR}/cmp0022NEW-exe.cmake") diff --git a/Tests/RunCMake/CMP0022/RunCMakeTest.cmake b/Tests/RunCMake/CMP0022/RunCMakeTest.cmake index 8e5824a..2781d20 100644 --- a/Tests/RunCMake/CMP0022/RunCMakeTest.cmake +++ b/Tests/RunCMake/CMP0022/RunCMakeTest.cmake @@ -4,7 +4,10 @@ run_cmake(CMP0022-WARN) run_cmake(CMP0022-WARN-tll) run_cmake(CMP0022-WARN-static) run_cmake(CMP0022-WARN-empty-old) +run_cmake(CMP0022-NOWARN-exe) +run_cmake(CMP0022-NOWARN-shared) run_cmake(CMP0022-NOWARN-static) run_cmake(CMP0022-NOWARN-static-link_libraries) run_cmake(CMP0022-export) +run_cmake(CMP0022-export-exe) run_cmake(CMP0022-install-export) diff --git a/Tests/RunCMake/CMP0022/empty_vs6_4.cpp b/Tests/RunCMake/CMP0022/empty_vs6_4.cpp new file mode 100644 index 0000000..7efedab --- /dev/null +++ b/Tests/RunCMake/CMP0022/empty_vs6_4.cpp @@ -0,0 +1 @@ +#include "empty.cpp" |