summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-01-19 14:35:46 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2016-01-19 14:35:46 (GMT)
commit249aac71d0b0022031d16963f3b46f9860919104 (patch)
treeff2289aef4303647bc105488a8b81b4379be121b
parentf8f531584716e732a8f0da44e285e996cb172574 (diff)
parentaea1b03617bed037bbd12af36d7ef92feff0ba74 (diff)
downloadCMake-249aac71d0b0022031d16963f3b46f9860919104.zip
CMake-249aac71d0b0022031d16963f3b46f9860919104.tar.gz
CMake-249aac71d0b0022031d16963f3b46f9860919104.tar.bz2
Merge topic 'export-static-private-depend'
aea1b036 Fix export of STATIC library PRIVATE dependencies with CMP0022 NEW e5cbec14 Tests: Use CMP0022 NEW behavior in some ExportImport cases 0ca122fc Tests: Isolate policy changes in ExportImport test
-rw-r--r--Source/cmTargetLinkLibrariesCommand.cxx7
-rw-r--r--Tests/ExportImport/Export/CMakeLists.txt16
-rw-r--r--Tests/ExportImport/Export/testLibDepends.c7
-rw-r--r--Tests/ExportImport/Export/testStaticLibRequiredPrivate.c1
4 files changed, 26 insertions, 5 deletions
diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx
index 435346a..5f3246a 100644
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@ -432,8 +432,11 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const std::string& lib,
{
std::string configLib = this->Target
->GetDebugGeneratorExpressions(lib, llt);
- if (cmGeneratorExpression::IsValidTargetName(lib)
- || cmGeneratorExpression::Find(lib) != std::string::npos)
+ if (cmGeneratorExpression::IsValidTargetName(configLib))
+ {
+ configLib = "$<LINK_ONLY:$<TARGET_NAME:" + configLib + ">>";
+ }
+ else if (cmGeneratorExpression::Find(configLib) != std::string::npos)
{
configLib = "$<LINK_ONLY:" + configLib + ">";
}
diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt
index dcba9ac..c2ecb0b 100644
--- a/Tests/ExportImport/Export/CMakeLists.txt
+++ b/Tests/ExportImport/Export/CMakeLists.txt
@@ -130,10 +130,15 @@ set_property(TARGET testLibCycleA PROPERTY LINK_INTERFACE_MULTIPLICITY 3)
add_library(testLibNoSONAME SHARED testLibNoSONAME.c)
set_property(TARGET testLibNoSONAME PROPERTY NO_SONAME 1)
+cmake_policy(PUSH)
+cmake_policy(SET CMP0022 NEW)
# Test exporting dependent libraries into different exports
add_library(testLibRequired testLibRequired.c)
add_library(testLibDepends testLibDepends.c)
target_link_libraries(testLibDepends LINK_PUBLIC testLibRequired)
+add_library(testStaticLibRequiredPrivate testStaticLibRequiredPrivate.c)
+target_link_libraries(testLibDepends PRIVATE testStaticLibRequiredPrivate)
+cmake_policy(POP)
macro(add_include_lib _libName)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${_libName}.c" "/* no content */\n")
@@ -270,6 +275,7 @@ install(FILES
DESTINATION include/testSharedLibRequiredUser
)
+cmake_policy(PUSH)
cmake_policy(SET CMP0022 NEW)
add_library(testSharedLibRequiredUser2 SHARED testSharedLibRequiredUser2.cpp)
generate_export_header(testSharedLibRequiredUser2)
@@ -283,7 +289,7 @@ install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/testsharedlibrequireduser2_export.h"
DESTINATION include/testSharedLibRequiredUser2
)
-cmake_policy(SET CMP0022 OLD)
+cmake_policy(POP)
add_library(testSharedLibDepends SHARED testSharedLibDepends.cpp)
set_property(TARGET testSharedLibDepends APPEND PROPERTY
@@ -311,6 +317,8 @@ target_link_libraries(testSharedLibDepends LINK_PUBLIC renamed_on_export)
target_link_libraries(testSharedLibDepends LINK_INTERFACE_LIBRARIES
$<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:$<TARGET_NAME:testSharedLibRequired>>)
+cmake_policy(PUSH)
+cmake_policy(SET CMP0022 OLD)
add_library(cmp0022OLD SHARED cmp0022_vs6_1.cpp)
generate_export_header(cmp0022OLD BASE_NAME cmp0022)
target_include_directories(cmp0022OLD PUBLIC
@@ -324,7 +332,7 @@ target_include_directories(cmp0022NEW PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>"
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/cmp0022>"
)
-cmake_policy(SET CMP0022 OLD)
+cmake_policy(POP)
install(FILES
"${CMAKE_CURRENT_SOURCE_DIR}/cmp0022.h"
"${CMAKE_CURRENT_BINARY_DIR}/cmp0022_export.h"
@@ -388,6 +396,10 @@ install(TARGETS
INCLUDES DESTINATION
$<INSTALL_PREFIX>/include/$<TARGET_PROPERTY:NAME>
)
+install(TARGETS
+ testStaticLibRequiredPrivate
+ EXPORT RequiredExp DESTINATION lib
+)
install(EXPORT RequiredExp NAMESPACE Req:: FILE testLibRequiredTargets.cmake DESTINATION lib/cmake/testLibRequired)
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/installIncludesTest")
diff --git a/Tests/ExportImport/Export/testLibDepends.c b/Tests/ExportImport/Export/testLibDepends.c
index fb5a002..3c7774ee 100644
--- a/Tests/ExportImport/Export/testLibDepends.c
+++ b/Tests/ExportImport/Export/testLibDepends.c
@@ -16,5 +16,10 @@
#endif
extern int testLibRequired(void);
+extern int testStaticLibRequiredPrivate(void);
-int testLibDepends(void) { return testLibRequired(); }
+int testLibDepends(void) {
+ return testLibRequired()
+ + testStaticLibRequiredPrivate()
+ ;
+}
diff --git a/Tests/ExportImport/Export/testStaticLibRequiredPrivate.c b/Tests/ExportImport/Export/testStaticLibRequiredPrivate.c
new file mode 100644
index 0000000..28a2675
--- /dev/null
+++ b/Tests/ExportImport/Export/testStaticLibRequiredPrivate.c
@@ -0,0 +1 @@
+int testStaticLibRequiredPrivate(void) { return 0; }