diff options
author | Brad King <brad.king@kitware.com> | 2013-11-02 16:36:23 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-11-02 16:55:17 (GMT) |
commit | ef10b87cc1e87343a778c89d8a41d7e11ca08a7c (patch) | |
tree | 596e44b7e651432ff19b4471138d055c989c35e3 /Source/cmTargetLinkLibrariesCommand.cxx | |
parent | 0e06788c0a5bd2a85db4b1559d13ead30ea5be0e (diff) | |
download | CMake-ef10b87cc1e87343a778c89d8a41d7e11ca08a7c.zip CMake-ef10b87cc1e87343a778c89d8a41d7e11ca08a7c.tar.gz CMake-ef10b87cc1e87343a778c89d8a41d7e11ca08a7c.tar.bz2 |
CMP0022: Plain target_link_libraries must populate link interface
The CMP0022 NEW behavior is that the INTERFACE_LINK_LIBRARIES property
exactly defines the link interface. The plain target_link_libraries
signature says linking is transitive by default, so it should populate
the property.
Teach the target_link_libraries plain signature to populate the
INTERFACE_LINK_LIBRARIES regardless of the CMP0022 setting. Refactor
the cmTarget::ComputeLinkInterface checks that warn when the policy is
not set to compare the new property to either the explicitly set old
link interface properties or the link implementation fallback for all
linkable target types, not just static libraries.
This fixes a regression in 2.8.12.0 that caused target_link_libraries to
not implement transitive linking in the plain signature once the policy
CMP0022 is set to NEW.
Diffstat (limited to 'Source/cmTargetLinkLibrariesCommand.cxx')
-rw-r--r-- | Source/cmTargetLinkLibrariesCommand.cxx | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index 6030a44..c2f46a1 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -379,8 +379,14 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib, { this->Makefile ->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt); - if (this->CurrentProcessingState != ProcessingKeywordPublicInterface - && this->CurrentProcessingState != ProcessingPlainPublicInterface) + if(this->CurrentProcessingState == ProcessingLinkLibraries) + { + this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES", + this->Target->GetDebugGeneratorExpressions(lib, llt).c_str()); + return true; + } + else if(this->CurrentProcessingState != ProcessingKeywordPublicInterface + && this->CurrentProcessingState != ProcessingPlainPublicInterface) { if (this->Target->GetType() == cmTarget::STATIC_LIBRARY) { |