[Cmake-commits] CMake branch, next, updated. v2.8.12-4801-g790c352
Brad King
brad.king at kitware.com
Sat Nov 2 13:24:52 EDT 2013
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, next has been updated
via 790c352f16625de9de52d8428f5dbceaaa8bf743 (commit)
via 7d706e418d19fdf83fa48fa16e63dc779731f0d7 (commit)
via 9df559ac90d12d330d5942b1dfe3317ecd2ae779 (commit)
via ef10b87cc1e87343a778c89d8a41d7e11ca08a7c (commit)
via 0e06788c0a5bd2a85db4b1559d13ead30ea5be0e (commit)
via c0f4a6107412dc7bdbd810b86407016af723cb79 (commit)
via 4b0cfa7004c1a2f5069affa4e673a24d9cf6a075 (commit)
from 571be205913c5426035cc798f14b9d4c3e823c46 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=790c352f16625de9de52d8428f5dbceaaa8bf743
commit 790c352f16625de9de52d8428f5dbceaaa8bf743
Merge: 571be20 7d706e4
Author: Brad King <brad.king at kitware.com>
AuthorDate: Sat Nov 2 13:24:48 2013 -0400
Commit: CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Sat Nov 2 13:24:48 2013 -0400
Merge topic 'policy-CMP0022-fixes-for-master' into next
7d706e4 CMP0022: Update target_link_libraries plain signature documentation
9df559a Merge branch 'policy-CMP0022-fixes' into policy-CMP0022-fixes-for-master
ef10b87 CMP0022: Plain target_link_libraries must populate link interface
0e06788 CMP0022: Add test for target_link_libraries plain signature
c0f4a61 CMP0022: Add unit test for null pointer check and message.
4b0cfa7 Merge branch 'output-CMP0022-entries' into policy-CMP0022-fixes
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7d706e418d19fdf83fa48fa16e63dc779731f0d7
commit 7d706e418d19fdf83fa48fa16e63dc779731f0d7
Author: Brad King <brad.king at kitware.com>
AuthorDate: Sat Nov 2 13:07:03 2013 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Sat Nov 2 13:17:16 2013 -0400
CMP0022: Update target_link_libraries plain signature documentation
Make the documentation change made by commit ef10b87c (CMP0022: Plain
target_link_libraries must populate link interface, 2013-11-02) in the
new location for the same documentation.
diff --git a/Help/command/target_link_libraries.rst b/Help/command/target_link_libraries.rst
index 41265fd..c2d2dc6 100644
--- a/Help/command/target_link_libraries.rst
+++ b/Help/command/target_link_libraries.rst
@@ -32,13 +32,16 @@ per-configuration rules by creating and linking to IMPORTED library
targets. See the IMPORTED mode of the add_library command for more
information.
-Library dependencies are transitive by default. When this target is
-linked into another target then the libraries linked to this target
-will appear on the link line for the other target too. See the
-INTERFACE_LINK_LIBRARIES target property to override the set of
-transitive link dependencies for a target. Calls to other signatures
-of this command may set the property making any libraries linked
-exclusively by this signature private.
+Library dependencies are transitive by default with this signature.
+When this target is linked into another target then the libraries
+linked to this target will appear on the link line for the other
+target too. This transitive "link interface" is stored in the
+INTERFACE_LINK_LIBRARIES target property when policy CMP0022 is set to
+NEW and may be overridden by setting the property directly.
+(When CMP0022 is not set to NEW, transitive linking is builtin but may
+be overridden by the LINK_INTERFACE_LIBRARIES property. Calls to other
+signatures of this command may set the property making any libraries
+linked exclusively by this signature private.)
CMake will also propagate "usage requirements" from linked library
targets. Usage requirements affect compilation of sources in the
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9df559ac90d12d330d5942b1dfe3317ecd2ae779
commit 9df559ac90d12d330d5942b1dfe3317ecd2ae779
Merge: 6f6caee ef10b87
Author: Brad King <brad.king at kitware.com>
AuthorDate: Sat Nov 2 13:03:38 2013 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Sat Nov 2 13:16:08 2013 -0400
Merge branch 'policy-CMP0022-fixes' into policy-CMP0022-fixes-for-master
Resolve logical conflict in Source/cmTarget.cxx 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.
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ef10b87cc1e87343a778c89d8a41d7e11ca08a7c
commit ef10b87cc1e87343a778c89d8a41d7e11ca08a7c
Author: Brad King <brad.king at kitware.com>
AuthorDate: Sat Nov 2 12:36:23 2013 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Sat Nov 2 12:55:17 2013 -0400
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.
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index ef336ea..a30c5e4 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -631,6 +631,7 @@ cmExportFileGenerator
if (iface->ImplementationIsInterface)
{
+ // Policy CMP0022 must not be NEW.
this->SetImportLinkProperty(suffix, target,
"IMPORTED_LINK_INTERFACE_LIBRARIES",
iface->Libraries, properties, missingTargets);
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index 779b239..3365caf 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -2331,21 +2331,10 @@ void cmTarget::MergeLinkLibraries( cmMakefile& mf,
i += this->PrevLinkedLibraries.size();
for( ; i != libs.end(); ++i )
{
- const char *lib = i->first.c_str();
- // We call this so that the dependencies get written to the cache
- this->AddLinkLibrary( mf, selfname, lib, i->second );
-
- if (this->GetType() == cmTarget::STATIC_LIBRARY)
- {
- std::string configLib = this->GetDebugGeneratorExpressions(lib,
- i->second);
- if (cmGeneratorExpression::IsValidTargetName(lib)
- || cmGeneratorExpression::Find(lib) != std::string::npos)
- {
- configLib = "$<LINK_ONLY:" + configLib + ">";
- }
- this->AppendProperty("INTERFACE_LINK_LIBRARIES", configLib.c_str());
- }
+ // This is equivalent to the target_link_libraries plain signature.
+ this->AddLinkLibrary( mf, selfname, i->first.c_str(), i->second );
+ this->AppendProperty("INTERFACE_LINK_LIBRARIES",
+ this->GetDebugGeneratorExpressions(i->first.c_str(), i->second).c_str());
}
this->PrevLinkedLibraries = libs;
}
@@ -6417,12 +6406,20 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
// An explicit list of interface libraries may be set for shared
// libraries and executables that export symbols.
const char* explicitLibraries = 0;
- const char* newExplicitLibraries =
- this->GetProperty("INTERFACE_LINK_LIBRARIES");
std::string linkIfaceProp;
- if(this->GetType() == cmTarget::SHARED_LIBRARY ||
- this->IsExecutableWithExports())
+ if(this->PolicyStatusCMP0022 != cmPolicies::OLD &&
+ this->PolicyStatusCMP0022 != cmPolicies::WARN)
{
+ // CMP0022 NEW behavior is to use INTERFACE_LINK_LIBRARIES.
+ linkIfaceProp = "INTERFACE_LINK_LIBRARIES";
+ explicitLibraries = this->GetProperty(linkIfaceProp.c_str());
+ }
+ else if(this->GetType() == cmTarget::SHARED_LIBRARY ||
+ this->IsExecutableWithExports())
+ {
+ // CMP0022 OLD behavior is to use LINK_INTERFACE_LIBRARIES if set on a
+ // shared lib or executable.
+
// Lookup the per-configuration property.
linkIfaceProp = "LINK_INTERFACE_LIBRARIES";
linkIfaceProp += suffix;
@@ -6434,120 +6431,30 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
linkIfaceProp = "LINK_INTERFACE_LIBRARIES";
explicitLibraries = this->GetProperty(linkIfaceProp.c_str());
}
- if (newExplicitLibraries
- && (!explicitLibraries ||
- (explicitLibraries
- && strcmp(newExplicitLibraries, explicitLibraries) != 0)))
- {
- switch(this->GetPolicyStatusCMP0022())
- {
- case cmPolicies::WARN:
- {
- cmOStringStream w;
- w << (this->Makefile->GetPolicies()
- ->GetPolicyWarning(cmPolicies::CMP0022)) << "\n"
- << "Target \"" << this->GetName() << "\" has a "
- "INTERFACE_LINK_LIBRARIES property which differs from its "
- << linkIfaceProp << " properties."
- "\n"
- "INTERFACE_LINK_LIBRARIES:\n "
- << newExplicitLibraries
- << "\n"
- << linkIfaceProp << ":\n "
- << (explicitLibraries ? explicitLibraries : "(empty)") << "\n";
- this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
- }
- // Fall through
- case cmPolicies::OLD:
- break;
- case cmPolicies::REQUIRED_IF_USED:
- case cmPolicies::REQUIRED_ALWAYS:
- case cmPolicies::NEW:
- explicitLibraries = newExplicitLibraries;
- linkIfaceProp = "INTERFACE_LINK_LIBRARIES";
- break;
- }
- }
}
- else if(this->GetType() == cmTarget::STATIC_LIBRARY)
+
+ if(explicitLibraries && this->PolicyStatusCMP0022 == cmPolicies::WARN)
{
- if (newExplicitLibraries)
+ // Compare the explicitly set old link interface properties to the
+ // preferred new link interface property one and warn if different.
+ const char* newExplicitLibraries =
+ this->GetProperty("INTERFACE_LINK_LIBRARIES");
+ if (newExplicitLibraries
+ && strcmp(newExplicitLibraries, explicitLibraries) != 0)
{
- cmListFileBacktrace lfbt;
- cmGeneratorExpression ge(lfbt);
- cmGeneratorExpressionDAGChecker dagChecker(lfbt, this->GetName(),
- "INTERFACE_LINK_LIBRARIES", 0, 0);
- std::vector<std::string> ifaceLibs;
- cmSystemTools::ExpandListArgument(
- ge.Parse(newExplicitLibraries)->Evaluate(
- this->Makefile,
- config,
- false,
- headTarget,
- this, &dagChecker), ifaceLibs);
- LinkImplementation const* impl = this->GetLinkImplementation(config,
- headTarget);
- if (ifaceLibs != impl->Libraries)
- {
- switch(this->GetPolicyStatusCMP0022())
- {
- case cmPolicies::WARN:
- {
- std::string oldLibraries;
- std::string newLibraries;
- const char *sep = "";
- for(std::vector<std::string>::const_iterator it
- = impl->Libraries.begin(); it != impl->Libraries.end(); ++it)
- {
- oldLibraries += sep;
- oldLibraries += *it;
- sep = ";";
- }
- sep = "";
- for(std::vector<std::string>::const_iterator it
- = ifaceLibs.begin(); it != ifaceLibs.end(); ++it)
- {
- newLibraries += sep;
- newLibraries += *it;
- sep = ";";
- }
-
- cmOStringStream w;
- w << (this->Makefile->GetPolicies()
- ->GetPolicyWarning(cmPolicies::CMP0022)) << "\n"
- << "Static library target \"" << this->GetName() << "\" 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."
- "\n"
- "INTERFACE_LINK_LIBRARIES:\n "
- << newLibraries
- << "\n"
- << "Link implementation:\n "
- << oldLibraries << "\n";
- this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
- }
- // Fall through
- case cmPolicies::OLD:
- break;
- case cmPolicies::REQUIRED_IF_USED:
- case cmPolicies::REQUIRED_ALWAYS:
- case cmPolicies::NEW:
- explicitLibraries = newExplicitLibraries;
- linkIfaceProp = "INTERFACE_LINK_LIBRARIES";
- break;
- }
- }
- else
- {
- iface.Libraries = impl->Libraries;
- if(this->LinkLanguagePropagatesToDependents())
- {
- // Targets using this archive need its language runtime libraries.
- iface.Languages = impl->Languages;
- }
- }
+ cmOStringStream w;
+ w <<
+ (this->Makefile->GetPolicies()
+ ->GetPolicyWarning(cmPolicies::CMP0022)) << "\n"
+ "Target \"" << this->GetName() << "\" has an "
+ "INTERFACE_LINK_LIBRARIES property which differs from its " <<
+ linkIfaceProp << " properties."
+ "\n"
+ "INTERFACE_LINK_LIBRARIES:\n"
+ " " << newExplicitLibraries << "\n" <<
+ linkIfaceProp << ":\n"
+ " " << (explicitLibraries ? explicitLibraries : "(empty)") << "\n";
+ this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
}
}
@@ -6618,11 +6525,12 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
}
}
}
- else if (this->GetPolicyStatusCMP0022() == cmPolicies::WARN
- || this->GetPolicyStatusCMP0022() == cmPolicies::OLD)
- // The implementation shouldn't be the interface if CMP0022 is NEW. That
- // way, the LINK_LIBRARIES property can be set directly without having to
- // empty the INTERFACE_LINK_LIBRARIES
+ else if (this->PolicyStatusCMP0022 == cmPolicies::WARN
+ || this->PolicyStatusCMP0022 == cmPolicies::OLD)
+ // If CMP0022 is NEW then the plain tll signature sets the
+ // INTERFACE_LINK_LIBRARIES, so if we get here then the project
+ // cleared the property explicitly and we should not fall back
+ // to the link implementation.
{
// The link implementation is the default link interface.
LinkImplementation const* impl = this->GetLinkImplementation(config,
@@ -6635,6 +6543,68 @@ bool cmTarget::ComputeLinkInterface(const char* config, LinkInterface& iface,
// Targets using this archive need its language runtime libraries.
iface.Languages = impl->Languages;
}
+
+ if(this->PolicyStatusCMP0022 == cmPolicies::WARN)
+ {
+ // Compare the link implementation fallback link interface to the
+ // preferred new link interface property and warn if different.
+ cmListFileBacktrace lfbt;
+ cmGeneratorExpression ge(lfbt);
+ cmGeneratorExpressionDAGChecker dagChecker(lfbt, this->GetName(),
+ "INTERFACE_LINK_LIBRARIES", 0, 0);
+ std::vector<std::string> ifaceLibs;
+ const char* newExplicitLibraries =
+ this->GetProperty("INTERFACE_LINK_LIBRARIES");
+ cmSystemTools::ExpandListArgument(
+ ge.Parse(newExplicitLibraries)->Evaluate(this->Makefile,
+ config,
+ false,
+ headTarget,
+ this, &dagChecker),
+ ifaceLibs);
+ if (ifaceLibs != impl->Libraries)
+ {
+ std::string oldLibraries;
+ std::string newLibraries;
+ const char *sep = "";
+ for(std::vector<std::string>::const_iterator it
+ = impl->Libraries.begin(); it != impl->Libraries.end(); ++it)
+ {
+ oldLibraries += sep;
+ oldLibraries += *it;
+ sep = ";";
+ }
+ sep = "";
+ for(std::vector<std::string>::const_iterator it
+ = ifaceLibs.begin(); it != ifaceLibs.end(); ++it)
+ {
+ newLibraries += sep;
+ newLibraries += *it;
+ sep = ";";
+ }
+ if(oldLibraries.empty())
+ { oldLibraries = "(empty)"; }
+ if(newLibraries.empty())
+ { newLibraries = "(empty)"; }
+
+ cmOStringStream w;
+ w <<
+ (this->Makefile->GetPolicies()
+ ->GetPolicyWarning(cmPolicies::CMP0022)) << "\n"
+ "Target \"" << this->GetName() << "\" 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."
+ "\n"
+ "INTERFACE_LINK_LIBRARIES:\n"
+ " " << newLibraries << "\n"
+ "Link implementation:\n"
+ " " << oldLibraries << "\n";
+ this->Makefile->IssueMessage(cmake::AUTHOR_WARNING, w.str());
+ }
+ }
}
if(this->GetType() == cmTarget::STATIC_LIBRARY)
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)
{
diff --git a/Source/cmTargetLinkLibrariesCommand.h b/Source/cmTargetLinkLibrariesCommand.h
index f2b2543..2cf6b03 100644
--- a/Source/cmTargetLinkLibrariesCommand.h
+++ b/Source/cmTargetLinkLibrariesCommand.h
@@ -88,14 +88,19 @@ public:
"See the IMPORTED mode of the add_library command for more "
"information. "
"\n"
- "Library dependencies are transitive by default. "
+ "Library dependencies are transitive by default with this signature. "
"When this target is linked into another target then the libraries "
"linked to this target will appear on the link line for the other "
"target too. "
- "See the INTERFACE_LINK_LIBRARIES target property to override the "
- "set of transitive link dependencies for a target. "
+ "This transitive \"link interface\" is stored in the "
+ "INTERFACE_LINK_LIBRARIES target property when policy CMP0022 is set "
+ "to NEW and may be overridden by setting the property directly. "
+ "("
+ "When CMP0022 is not set to NEW, transitive linking is builtin "
+ "but may be overridden by the LINK_INTERFACE_LIBRARIES property. "
"Calls to other signatures of this command may set the property "
"making any libraries linked exclusively by this signature private."
+ ")"
"\n"
"CMake will also propagate \"usage requirements\" from linked library "
"targets. "
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..f849be2 100644
--- a/Tests/RunCMake/CMP0022/CMP0022-WARN-stderr.txt
+++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-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-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/RunCMakeTest.cmake b/Tests/RunCMake/CMP0022/RunCMakeTest.cmake
index 8e5824a..9123f6d 100644
--- a/Tests/RunCMake/CMP0022/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMP0022/RunCMakeTest.cmake
@@ -4,6 +4,7 @@ run_cmake(CMP0022-WARN)
run_cmake(CMP0022-WARN-tll)
run_cmake(CMP0022-WARN-static)
run_cmake(CMP0022-WARN-empty-old)
+run_cmake(CMP0022-NOWARN-shared)
run_cmake(CMP0022-NOWARN-static)
run_cmake(CMP0022-NOWARN-static-link_libraries)
run_cmake(CMP0022-export)
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0e06788c0a5bd2a85db4b1559d13ead30ea5be0e
commit 0e06788c0a5bd2a85db4b1559d13ead30ea5be0e
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Wed Oct 30 13:21:53 2013 +0100
Commit: Brad King <brad.king at kitware.com>
CommitDate: Sat Nov 2 12:48:48 2013 -0400
CMP0022: Add test for target_link_libraries plain signature
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();
+}
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c0f4a6107412dc7bdbd810b86407016af723cb79
commit c0f4a6107412dc7bdbd810b86407016af723cb79
Author: Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Sep 12 17:12:42 2013 +0200
Commit: Brad King <brad.king at kitware.com>
CommitDate: Sat Nov 2 12:48:40 2013 -0400
CMP0022: Add unit test for null pointer check and message.
diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-result.txt b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-result.txt
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt
new file mode 100644
index 0000000..6d519f0
--- /dev/null
+++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old-stderr.txt
@@ -0,0 +1,17 @@
+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.
+
+ INTERFACE_LINK_LIBRARIES:
+
+ foo
+
+ LINK_INTERFACE_LIBRARIES:
+
+ \(empty\)
+
+This warning is for project developers. Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old.cmake b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old.cmake
new file mode 100644
index 0000000..c5d3c29
--- /dev/null
+++ b/Tests/RunCMake/CMP0022/CMP0022-WARN-empty-old.cmake
@@ -0,0 +1,10 @@
+
+project(CMP0022-WARN-empty-old)
+
+add_library(foo SHARED empty_vs6_1.cpp)
+add_library(bar SHARED empty_vs6_2.cpp)
+
+set_property(TARGET bar PROPERTY INTERFACE_LINK_LIBRARIES foo)
+
+add_library(user empty.cpp)
+target_link_libraries(user bar)
diff --git a/Tests/RunCMake/CMP0022/RunCMakeTest.cmake b/Tests/RunCMake/CMP0022/RunCMakeTest.cmake
index dcef0f5..8e5824a 100644
--- a/Tests/RunCMake/CMP0022/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMP0022/RunCMakeTest.cmake
@@ -3,6 +3,7 @@ include(RunCMake)
run_cmake(CMP0022-WARN)
run_cmake(CMP0022-WARN-tll)
run_cmake(CMP0022-WARN-static)
+run_cmake(CMP0022-WARN-empty-old)
run_cmake(CMP0022-NOWARN-static)
run_cmake(CMP0022-NOWARN-static-link_libraries)
run_cmake(CMP0022-export)
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b0cfa7004c1a2f5069affa4e673a24d9cf6a075
commit 4b0cfa7004c1a2f5069affa4e673a24d9cf6a075
Merge: 239b0c6 0b3b336
Author: Brad King <brad.king at kitware.com>
AuthorDate: Sat Nov 2 12:47:45 2013 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Sat Nov 2 12:47:45 2013 -0400
Merge branch 'output-CMP0022-entries' into policy-CMP0022-fixes
-----------------------------------------------------------------------
Summary of changes:
Help/command/target_link_libraries.rst | 17 +-
Source/cmExportFileGenerator.cxx | 1 +
Source/cmTarget.cxx | 245 +++++++++-----------
Source/cmTargetLinkLibrariesCommand.cxx | 10 +-
.../target_link_libraries/cmp0022/CMakeLists.txt | 7 +
.../cmp0022/onlyplainlib1.cpp | 13 +
.../target_link_libraries/cmp0022/onlyplainlib1.h | 14 ++
.../cmp0022/onlyplainlib2.cpp | 8 +
.../target_link_libraries/cmp0022/onlyplainlib2.h | 7 +
.../cmp0022/onlyplainlib_user.cpp | 7 +
...stderr.txt => CMP0022-NOWARN-shared-stderr.txt} | 0
Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared.cmake | 8 +
.../CMP0022/CMP0022-WARN-empty-old-stderr.txt | 8 +-
.../CMP0022/CMP0022-WARN-static-stderr.txt | 8 +-
Tests/RunCMake/CMP0022/CMP0022-WARN-stderr.txt | 4 +-
Tests/RunCMake/CMP0022/CMP0022-WARN-tll-stderr.txt | 4 +-
Tests/RunCMake/CMP0022/RunCMakeTest.cmake | 1 +
17 files changed, 202 insertions(+), 160 deletions(-)
create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.cpp
create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib1.h
create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.cpp
create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib2.h
create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/onlyplainlib_user.cpp
copy Tests/RunCMake/CMP0022/{CMP0022-NOWARN-static-link_libraries-stderr.txt => CMP0022-NOWARN-shared-stderr.txt} (100%)
create mode 100644 Tests/RunCMake/CMP0022/CMP0022-NOWARN-shared.cmake
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list