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 ad05a7afab1cee4dfdb416647c8a485acc259a42 (commit) via 3c489ddbda44be6c4e92e038034eeaa852fb92a7 (commit) from b05ba6b8bae8eaad85d1a321ae796fec703e85dd (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=ad05a7afab1cee4dfdb416647c8a485acc259a42 commit ad05a7afab1cee4dfdb416647c8a485acc259a42 Merge: b05ba6b 3c489dd Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Tue Jul 16 18:31:19 2013 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Tue Jul 16 18:31:19 2013 -0400 Merge topic 'tll-new-signatures' into next 3c489dd TLL: Add new signatures to populate INTERFACE_LINK_LIBRARIES. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3c489ddbda44be6c4e92e038034eeaa852fb92a7 commit 3c489ddbda44be6c4e92e038034eeaa852fb92a7 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Tue Jun 4 16:21:33 2013 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Wed Jul 17 00:26:14 2013 +0200 TLL: Add new signatures to populate INTERFACE_LINK_LIBRARIES. Add policy CMP0023 to control whether the new signatures can be mixed with uses of the old signatures on the same target. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 70c28d4..b892e00 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -575,6 +575,20 @@ cmPolicies::cmPolicies() "property for in-build targets, and ignore the old properties matching " "(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?.", 2,8,11,20130516, cmPolicies::WARN); + + this->DefinePolicy( + CMP0023, "CMP0023", + "Similar target_link_libraries signatures can not be mixed.", + "CMake 2.8.12 included new signatures for the target_link_libraries " + "command. If this policy is NEW, the new " + "signatures and the old signatures can not both be used on the same " + "target. Attempting to do so will result in an error." + "\n" + "The OLD behavior for this policy is to allow new and old " + "target_link_libraries signatures to be mixed. " + "The NEW behavior for this policy is to not to allow mixing of the old " + "and new signatures.", + 2,8,11,20130516, cmPolicies::WARN); } cmPolicies::~cmPolicies() diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 20c953f..e3bb1d5 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -73,6 +73,7 @@ public: CMP0021, ///< Fatal error on relative paths in INCLUDE_DIRECTORIES /// target property CMP0022, ///< INTERFACE_LINK_LIBRARIES defines the link interface + CMP0023, ///< Disallow mixing old and new tll signatures /** \brief Always the last entry. * diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 70500cd..3f35695 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -2497,6 +2497,56 @@ static std::string targetNameGenex(const char *lib) } //---------------------------------------------------------------------------- +bool cmTarget::PushTLLCommandTrace(TLLSignature signature) +{ + bool ret = true; + if (!this->TLLCommands.empty()) + { + if (this->TLLCommands.back().first != signature) + { + ret = false; + } + } + cmListFileBacktrace lfbt; + this->Makefile->GetBacktrace(lfbt); + this->TLLCommands.push_back(std::make_pair(signature, lfbt)); + return ret; +} + +//---------------------------------------------------------------------------- +void cmTarget::GetTllSignatureTraces(cmOStringStream &s, + TLLSignature sig) const +{ + std::vector<cmListFileBacktrace> sigs; + typedef std::vector<std::pair<TLLSignature, cmListFileBacktrace> > Container; + for(Container::const_iterator it = this->TLLCommands.begin(); + it != this->TLLCommands.end(); ++it) + { + if (it->first == sig) + { + sigs.push_back(it->second); + } + } + if (!sigs.empty()) + { + const char *sigString + = (sig == cmTarget::NewTLLSignature ? "old" : "new"); + s << "The uses of the " << sigString << " signature are here:\n"; + for(std::vector<cmListFileBacktrace>::const_iterator it = sigs.begin(); + it != sigs.end(); ++it) + { + cmListFileBacktrace::const_iterator i = it->begin(); + if(i != it->end()) + { + cmListFileContext const& lfc = *i; + s << " * " << (lfc.Line? "": " in ") << lfc << std::endl; + ++i; + } + } + } +} + +//---------------------------------------------------------------------------- void cmTarget::AddLinkLibrary(cmMakefile& mf, const char *target, const char* lib, LinkLibraryType llt) diff --git a/Source/cmTarget.h b/Source/cmTarget.h index 0da0f12..bc664b1 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -190,6 +190,12 @@ public: void AddLinkLibrary(cmMakefile& mf, const char *target, const char* lib, LinkLibraryType llt); + enum TLLSignature { + NewTLLSignature, + OldTLLSignature + }; + bool PushTLLCommandTrace(TLLSignature signature); + void GetTllSignatureTraces(cmOStringStream &s, TLLSignature sig) const; void MergeLinkLibraries( cmMakefile& mf, const char* selfname, const LinkLibraryVectorType& libs ); @@ -548,6 +554,8 @@ private: // directories. std::set<cmStdString> SystemIncludeDirectories; + std::vector<std::pair<TLLSignature, cmListFileBacktrace> > TLLCommands; + /** * A list of direct dependencies. Use in conjunction with DependencyMap. */ diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx index c5f490e..26d5950 100644 --- a/Source/cmTargetLinkLibrariesCommand.cxx +++ b/Source/cmTargetLinkLibrariesCommand.cxx @@ -116,7 +116,7 @@ bool cmTargetLinkLibrariesCommand { if(args[i] == "LINK_INTERFACE_LIBRARIES") { - this->CurrentProcessingState = ProcessingLinkInterface; + this->CurrentProcessingState = ProcessingOldLinkInterface; if(i != 1) { this->Makefile->IssueMessage( @@ -127,9 +127,26 @@ bool cmTargetLinkLibrariesCommand return true; } } + else if(args[i] == "INTERFACE") + { + if(i != 1 + && this->CurrentProcessingState != ProcessingNewPrivateInterface + && this->CurrentProcessingState != ProcessingNewPublicInterface + && this->CurrentProcessingState != ProcessingNewLinkInterface) + { + this->Makefile->IssueMessage( + cmake::FATAL_ERROR, + "The INTERFACE option must appear as the second " + "argument, just after the target name." + ); + return true; + } + this->CurrentProcessingState = ProcessingNewLinkInterface; + } else if(args[i] == "LINK_PUBLIC") { - if(i != 1 && this->CurrentProcessingState != ProcessingPrivateInterface) + if(i != 1 + && this->CurrentProcessingState != ProcessingOldPrivateInterface) { this->Makefile->IssueMessage( cmake::FATAL_ERROR, @@ -138,11 +155,28 @@ bool cmTargetLinkLibrariesCommand ); return true; } - this->CurrentProcessingState = ProcessingPublicInterface; + this->CurrentProcessingState = ProcessingOldPublicInterface; + } + else if(args[i] == "PUBLIC") + { + if(i != 1 + && this->CurrentProcessingState != ProcessingNewPrivateInterface + && this->CurrentProcessingState != ProcessingNewPublicInterface + && this->CurrentProcessingState != ProcessingNewLinkInterface) + { + this->Makefile->IssueMessage( + cmake::FATAL_ERROR, + "The PUBLIC or PRIVATE option must appear as the second " + "argument, just after the target name." + ); + return true; + } + this->CurrentProcessingState = ProcessingNewPublicInterface; } else if(args[i] == "LINK_PRIVATE") { - if(i != 1 && this->CurrentProcessingState != ProcessingPublicInterface) + if(i != 1 + && this->CurrentProcessingState != ProcessingOldPublicInterface) { this->Makefile->IssueMessage( cmake::FATAL_ERROR, @@ -151,7 +185,23 @@ bool cmTargetLinkLibrariesCommand ); return true; } - this->CurrentProcessingState = ProcessingPrivateInterface; + this->CurrentProcessingState = ProcessingOldPrivateInterface; + } + else if(args[i] == "PRIVATE") + { + if(i != 1 + && this->CurrentProcessingState != ProcessingNewPrivateInterface + && this->CurrentProcessingState != ProcessingNewPublicInterface + && this->CurrentProcessingState != ProcessingNewLinkInterface) + { + this->Makefile->IssueMessage( + cmake::FATAL_ERROR, + "The PUBLIC or PRIVATE option must appear as the second " + "argument, just after the target name." + ); + return true; + } + this->CurrentProcessingState = ProcessingNewPrivateInterface; } else if(args[i] == "debug") { @@ -184,7 +234,10 @@ bool cmTargetLinkLibrariesCommand { // The link type was specified by the previous argument. haveLLT = false; - this->HandleLibrary(args[i].c_str(), llt); + if (!this->HandleLibrary(args[i].c_str(), llt)) + { + return false; + } } else { @@ -210,7 +263,10 @@ bool cmTargetLinkLibrariesCommand llt = cmTarget::OPTIMIZED; } } - this->HandleLibrary(args[i].c_str(), llt); + if (!this->HandleLibrary(args[i].c_str(), llt)) + { + return false; + } } } @@ -257,16 +313,66 @@ cmTargetLinkLibrariesCommand } //---------------------------------------------------------------------------- -void +bool cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib, cmTarget::LinkLibraryType llt) { + cmTarget::TLLSignature sig = + (this->CurrentProcessingState == ProcessingOldPrivateInterface + || this->CurrentProcessingState == ProcessingOldPublicInterface + || this->CurrentProcessingState == ProcessingNewPrivateInterface + || this->CurrentProcessingState == ProcessingNewPublicInterface + || this->CurrentProcessingState == ProcessingNewLinkInterface) + ? cmTarget::NewTLLSignature : cmTarget::OldTLLSignature; + if (!this->Target->PushTLLCommandTrace(sig)) + { + const char *modal = 0; + cmake::MessageType messageType = cmake::AUTHOR_WARNING; + switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0023)) + { + case cmPolicies::WARN: + modal = "should"; + case cmPolicies::OLD: + break; + case cmPolicies::REQUIRED_ALWAYS: + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::NEW: + modal = "must"; + messageType = cmake::FATAL_ERROR; + } + + if(modal) + { + cmOStringStream e; + const char *existingSig + = (sig == cmTarget::NewTLLSignature ? "old" : "new"); + e << this->Makefile->GetPolicies() + ->GetPolicyWarning(cmPolicies::CMP0023) << "\n" + "The " << existingSig << " signature for target_link_libraries " + "has already been used with the target \"" + << this->Target->GetName() << "\". All uses of " + "target_link_libraries with a target " << modal << " be either " + "all-new or all-old.\n"; + this->Target->GetTllSignatureTraces(e, + sig == cmTarget::NewTLLSignature + ? cmTarget::OldTLLSignature + : cmTarget::NewTLLSignature); + this->Makefile->IssueMessage(messageType, e.str().c_str()); + if(messageType == cmake::FATAL_ERROR) + { + return false; + } + } + } + // Handle normal case first. - if(this->CurrentProcessingState != ProcessingLinkInterface) + if(this->CurrentProcessingState != ProcessingNewLinkInterface + && this->CurrentProcessingState != ProcessingOldLinkInterface) { this->Makefile ->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt); - if (this->CurrentProcessingState != ProcessingPublicInterface) + if (this->CurrentProcessingState != ProcessingNewPublicInterface + && this->CurrentProcessingState != ProcessingOldPublicInterface) { if (this->Target->GetType() == cmTarget::STATIC_LIBRARY) { @@ -275,8 +381,9 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib, this->Target->GetDebugGeneratorExpressions(lib, llt) + ">").c_str()); } - // Not LINK_INTERFACE_LIBRARIES or LINK_PUBLIC, do not add to interface. - return; + // Not a 'public' or 'interface' library. Do not add to interface + // property. + return true; } } @@ -289,7 +396,7 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib, if (policy22Status != cmPolicies::OLD && policy22Status != cmPolicies::WARN) { - return; + return true; } // Get the list of configurations considered to be DEBUG. @@ -327,4 +434,5 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib, } } } + return true; } diff --git a/Source/cmTargetLinkLibrariesCommand.h b/Source/cmTargetLinkLibrariesCommand.h index ca651d0..7d7f50f 100644 --- a/Source/cmTargetLinkLibrariesCommand.h +++ b/Source/cmTargetLinkLibrariesCommand.h @@ -109,13 +109,25 @@ public: " INTERFACE_POSITION_INDEPENDENT_CODE: Sets POSITION_INDEPENDENT_CODE\n" " or checked for consistency with existing value\n" "\n" + " target_link_libraries(<target>\n" + " <PRIVATE|PUBLIC|INTERFACE> <lib> ...\n" + " [<PRIVATE|PUBLIC|INTERFACE> <lib> ... ] ...])\n" + "The PUBLIC, PRIVATE and INTERFACE keywords can be used to specify " + "both the link dependencies and the link interface in one command. " + "Libraries and targets following PUBLIC are linked to, and are " + "made part of the link interface. Libraries and targets " + "following PRIVATE are linked to, but are not made part of the " + "link interface. Libraries following INTERFACE are appended " + "to the link interface and are not used for linking <target>. " + "\n" " target_link_libraries(<target> LINK_INTERFACE_LIBRARIES\n" " [[debug|optimized|general] <lib>] ...)\n" "The LINK_INTERFACE_LIBRARIES mode appends the libraries " "to the INTERFACE_LINK_LIBRARIES target property instead of using them " "for linking. If policy CMP0022 is not NEW, then this mode also " "appends libraries to the LINK_INTERFACE_LIBRARIES and its " - "per-configuration equivalent. " + "per-configuration equivalent. This signature " + "is for compatibility only. Prefer the INTERFACE mode instead. " "Libraries specified as \"debug\" are wrapped in a generator " "expression to correspond to debug builds. If policy CMP0022 is not " "NEW, the libraries are also appended to the " @@ -134,7 +146,9 @@ public: " [<LINK_PRIVATE|LINK_PUBLIC>\n" " [[debug|optimized|general] <lib>] ...])\n" "The LINK_PUBLIC and LINK_PRIVATE modes can be used to specify both " - "the link dependencies and the link interface in one command. " + "the link dependencies and the link interface in one command. This " + "signature is for compatibility only. Prefer the PUBLIC or PRIVATE " + "keywords instead. " "Libraries and targets following LINK_PUBLIC are linked to, and are " "made part of the INTERFACE_LINK_LIBRARIES. If policy CMP0022 is not " "NEW, they are also made part of the LINK_INTERFACE_LIBRARIES. " @@ -180,14 +194,17 @@ private: cmTarget* Target; enum ProcessingState { ProcessingLinkLibraries, - ProcessingLinkInterface, - ProcessingPublicInterface, - ProcessingPrivateInterface + ProcessingOldLinkInterface, + ProcessingNewLinkInterface, + ProcessingOldPublicInterface, + ProcessingNewPublicInterface, + ProcessingOldPrivateInterface, + ProcessingNewPrivateInterface }; ProcessingState CurrentProcessingState; - void HandleLibrary(const char* lib, cmTarget::LinkLibraryType llt); + bool HandleLibrary(const char* lib, cmTarget::LinkLibraryType llt); }; diff --git a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt index 2240539..06019e6 100644 --- a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt +++ b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt @@ -124,3 +124,9 @@ add_library(libConsumer empty.cpp) target_link_libraries(libConsumer debug depA) add_subdirectory(cmp0022) + +add_executable(newsignature1 newsignature1.cpp) +target_link_libraries(newsignature1 PRIVATE depC INTERFACE depD PUBLIC depB PRIVATE subdirlib INTERFACE INTERFACE PUBLIC) + +assert_property(newsignature1 INTERFACE_LINK_LIBRARIES "depD;depB") +assert_property(newsignature1 LINK_LIBRARIES "depC;depB;subdirlib") diff --git a/Tests/CMakeCommands/target_link_libraries/newsignature1.cpp b/Tests/CMakeCommands/target_link_libraries/newsignature1.cpp new file mode 100644 index 0000000..d1321a1 --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/newsignature1.cpp @@ -0,0 +1,19 @@ + +#include "depB.h" +#include "depC.h" +#include "depIfaceOnly.h" + +#include "subdirlib.h" + +int main(int, char **) +{ + DepA a; + DepB b; + DepC c; + + DepIfaceOnly iface_only; + + SubDirLibObject sd; + + return a.foo() + b.foo() + c.foo() + iface_only.foo() + sd.foo(); +} diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 66ce3f1..12f68d7 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -115,3 +115,4 @@ if("${CMAKE_TEST_GENERATOR}" MATCHES "Visual Studio [^6]") endif() add_RunCMake_test(File_Generate) +add_RunCMake_test(target_link_libraries) diff --git a/Tests/RunCMake/target_link_libraries/CMP0023-NEW-result.txt b/Tests/RunCMake/target_link_libraries/CMP0023-NEW-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/CMP0023-NEW-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_link_libraries/CMP0023-NEW-stderr.txt b/Tests/RunCMake/target_link_libraries/CMP0023-NEW-stderr.txt new file mode 100644 index 0000000..8be256f --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/CMP0023-NEW-stderr.txt @@ -0,0 +1,15 @@ +CMake Error at CMP0023-NEW.cmake:11 \(target_link_libraries\): + Policy CMP0023 is not set: Similar target_link_libraries signatures can not + be mixed. Run "cmake --help-policy CMP0023" for policy details. Use the + cmake_policy command to set the policy and suppress this warning. + + The old signature for target_link_libraries has already been used with the + target "foo". All uses of target_link_libraries with a target must be + either all-new or all-old. + + The uses of the new signature are here: + + \* CMP0023-NEW.cmake:10 \(target_link_libraries\) + +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/target_link_libraries/CMP0023-NEW.cmake b/Tests/RunCMake/target_link_libraries/CMP0023-NEW.cmake new file mode 100644 index 0000000..f0aa63f --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/CMP0023-NEW.cmake @@ -0,0 +1,11 @@ + +project(CMP0022-WARN) + +cmake_policy(SET CMP0023 NEW) + +add_library(foo SHARED empty_vs6_1.cpp) +add_library(bar SHARED empty_vs6_2.cpp) +add_library(bat SHARED empty_vs6_3.cpp) + +target_link_libraries(foo bar) +target_link_libraries(foo PRIVATE bat) diff --git a/Tests/RunCMake/target_link_libraries/CMP0023-WARN-stderr.txt b/Tests/RunCMake/target_link_libraries/CMP0023-WARN-stderr.txt new file mode 100644 index 0000000..9b7f1f7 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/CMP0023-WARN-stderr.txt @@ -0,0 +1,15 @@ +CMake Warning \(dev\) at CMP0023-WARN.cmake:9 \(target_link_libraries\): + Policy CMP0023 is not set: Similar target_link_libraries signatures can not + be mixed. Run "cmake --help-policy CMP0023" for policy details. Use the + cmake_policy command to set the policy and suppress this warning. + + The old signature for target_link_libraries has already been used with the + target "foo". All uses of target_link_libraries with a target should be + either all-new or all-old. + + The uses of the new signature are here: + + \* CMP0023-WARN.cmake:8 \(target_link_libraries\) + +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/target_link_libraries/CMP0023-WARN.cmake b/Tests/RunCMake/target_link_libraries/CMP0023-WARN.cmake new file mode 100644 index 0000000..fcc8da0 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/CMP0023-WARN.cmake @@ -0,0 +1,9 @@ + +project(CMP0022-WARN) + +add_library(foo SHARED empty_vs6_1.cpp) +add_library(bar SHARED empty_vs6_2.cpp) +add_library(bat SHARED empty_vs6_3.cpp) + +target_link_libraries(foo bar) +target_link_libraries(foo PRIVATE bat) diff --git a/Tests/RunCMake/target_link_libraries/CMakeLists.txt b/Tests/RunCMake/target_link_libraries/CMakeLists.txt new file mode 100644 index 0000000..e8db6b0 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.8) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/target_link_libraries/MixedSignature-result.txt b/Tests/RunCMake/target_link_libraries/MixedSignature-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/MixedSignature-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_link_libraries/MixedSignature-stderr.txt b/Tests/RunCMake/target_link_libraries/MixedSignature-stderr.txt new file mode 100644 index 0000000..a0c66db --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/MixedSignature-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at MixedSignature.cmake:6 \(target_link_libraries\): + The PUBLIC or PRIVATE option must appear as the second argument, just after + the target name. +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/target_link_libraries/MixedSignature.cmake b/Tests/RunCMake/target_link_libraries/MixedSignature.cmake new file mode 100644 index 0000000..fa70685 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/MixedSignature.cmake @@ -0,0 +1,6 @@ + +add_library(foo empty_vs6_1.cpp) +add_library(bar empty_vs6_2.cpp) +add_library(bat empty_vs6_3.cpp) + +target_link_libraries(foo LINK_PUBLIC bar PRIVATE bat) diff --git a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake new file mode 100644 index 0000000..7df2be7 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake @@ -0,0 +1,5 @@ +include(RunCMake) + +run_cmake(CMP0023-WARN) +run_cmake(CMP0023-NEW) +run_cmake(MixedSignature) diff --git a/Tests/RunCMake/target_link_libraries/empty.cpp b/Tests/RunCMake/target_link_libraries/empty.cpp new file mode 100644 index 0000000..bfbbdde --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/empty.cpp @@ -0,0 +1,7 @@ +#ifdef _WIN32 +__declspec(dllexport) +#endif +int empty() +{ + return 0; +} diff --git a/Tests/RunCMake/target_link_libraries/empty_vs6_1.cpp b/Tests/RunCMake/target_link_libraries/empty_vs6_1.cpp new file mode 100644 index 0000000..7efedab --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/empty_vs6_1.cpp @@ -0,0 +1 @@ +#include "empty.cpp" diff --git a/Tests/RunCMake/target_link_libraries/empty_vs6_2.cpp b/Tests/RunCMake/target_link_libraries/empty_vs6_2.cpp new file mode 100644 index 0000000..7efedab --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/empty_vs6_2.cpp @@ -0,0 +1 @@ +#include "empty.cpp" diff --git a/Tests/RunCMake/target_link_libraries/empty_vs6_3.cpp b/Tests/RunCMake/target_link_libraries/empty_vs6_3.cpp new file mode 100644 index 0000000..7efedab --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/empty_vs6_3.cpp @@ -0,0 +1 @@ +#include "empty.cpp" ----------------------------------------------------------------------- Summary of changes: Source/cmPolicies.cxx | 14 ++ Source/cmPolicies.h | 1 + Source/cmTarget.cxx | 50 ++++++++ Source/cmTarget.h | 8 ++ Source/cmTargetLinkLibrariesCommand.cxx | 134 ++++++++++++++++++-- Source/cmTargetLinkLibrariesCommand.h | 29 ++++- .../target_link_libraries/CMakeLists.txt | 6 + .../{targetA.cpp => newsignature1.cpp} | 0 Tests/RunCMake/CMakeLists.txt | 1 + .../CMP0023-NEW-result.txt} | 0 .../target_link_libraries/CMP0023-NEW-stderr.txt | 15 +++ .../target_link_libraries/CMP0023-NEW.cmake | 11 ++ .../target_link_libraries/CMP0023-WARN-stderr.txt | 15 +++ .../target_link_libraries/CMP0023-WARN.cmake | 9 ++ .../CMakeLists.txt | 0 .../MixedSignature-result.txt} | 0 .../MixedSignature-stderr.txt | 5 + .../target_link_libraries/MixedSignature.cmake | 6 + .../target_link_libraries/RunCMakeTest.cmake | 5 + .../{CMP0022 => target_link_libraries}/empty.cpp | 0 .../empty_vs6_1.cpp | 0 .../empty_vs6_2.cpp | 0 .../empty_vs6_3.cpp | 0 23 files changed, 290 insertions(+), 19 deletions(-) copy Tests/CMakeCommands/target_link_libraries/{targetA.cpp => newsignature1.cpp} (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => target_link_libraries/CMP0023-NEW-result.txt} (100%) create mode 100644 Tests/RunCMake/target_link_libraries/CMP0023-NEW-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/CMP0023-NEW.cmake create mode 100644 Tests/RunCMake/target_link_libraries/CMP0023-WARN-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/CMP0023-WARN.cmake copy Tests/RunCMake/{CMP0004 => target_link_libraries}/CMakeLists.txt (100%) copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => target_link_libraries/MixedSignature-result.txt} (100%) create mode 100644 Tests/RunCMake/target_link_libraries/MixedSignature-stderr.txt create mode 100644 Tests/RunCMake/target_link_libraries/MixedSignature.cmake create mode 100644 Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake copy Tests/RunCMake/{CMP0022 => target_link_libraries}/empty.cpp (100%) copy Tests/RunCMake/{CMP0022 => target_link_libraries}/empty_vs6_1.cpp (100%) copy Tests/RunCMake/{CMP0022 => target_link_libraries}/empty_vs6_2.cpp (100%) copy Tests/RunCMake/{CMP0022 => target_link_libraries}/empty_vs6_3.cpp (100%) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits