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 9ba0ee21f31631968832bfe2174d7d8426ce3d8c (commit) via 8722b540895a3959a932d6fbe349465c05a72492 (commit) via 1657c4a51e18a63ec5439e3a52e29787ad2e1f65 (commit) from 9cfdb3b3a43de0366b59c18ee1dc86a24299eefd (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=9ba0ee21f31631968832bfe2174d7d8426ce3d8c commit 9ba0ee21f31631968832bfe2174d7d8426ce3d8c Merge: 9cfdb3b 8722b54 Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Jul 15 14:02:22 2014 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Tue Jul 15 14:02:22 2014 -0400 Merge topic 'generalize-LINK_ONLY' into next 8722b540 Honor $<LINK_ONLY> when checking interface properties 1657c4a5 Make $<LINK_ONLY> available to projects (#14751) http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8722b540895a3959a932d6fbe349465c05a72492 commit 8722b540895a3959a932d6fbe349465c05a72492 Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Jul 15 11:34:02 2014 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Tue Jul 15 13:23:50 2014 -0400 Honor $<LINK_ONLY> when checking interface properties Callers of cmTarget::GetLinkImplementationClosure are interested in the set of targets whose interface properties propagate to the current target. This excludes targets guarded by $<LINK_ONLY>. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index bdf361e..c22d23e 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -6038,7 +6038,7 @@ void processILibs(const std::string& config, { tgts.push_back(item.Target); if(cmTarget::LinkInterface const* iface = - item.Target->GetLinkInterfaceLibraries(config, headTarget, false)) + item.Target->GetLinkInterfaceLibraries(config, headTarget, true)) { for(std::vector<cmLinkItem>::const_iterator it = iface->Libraries.begin(); http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1657c4a51e18a63ec5439e3a52e29787ad2e1f65 commit 1657c4a51e18a63ec5439e3a52e29787ad2e1f65 Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Jul 15 11:14:49 2014 -0400 Commit: Brad King <brad.k...@kitware.com> CommitDate: Tue Jul 15 13:23:30 2014 -0400 Make $<LINK_ONLY> available to projects (#14751) Previously this generator expression was used internally by the target_link_libraries command to honor private linking requirements of static libraries in their INTERFACE_LINK_LIBRARIES. Remove the check that limits $<LINK_ONLY> to this use case to make it available for project code to use too. diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst index 9e82674..bc24798 100644 --- a/Help/manual/cmake-generator-expressions.7.rst +++ b/Help/manual/cmake-generator-expressions.7.rst @@ -188,6 +188,13 @@ property is non-empty:: Marks ``...`` as being the name of a target. This is required if exporting targets to multiple dependent export sets. The ``...`` must be a literal name of a target- it may not contain generator expressions. +``$<LINK_ONLY:...>`` + Content of ``...`` except when evaluated in a link interface while + propagating :ref:`Target Usage Requirements`, in which case it is the + empty string. + Intended for use only in an :prop_tgt:`INTERFACE_LINK_LIBRARIES` target + property, perhaps via the :command:`target_link_libraries` command, + to specify private link dependencies without other usage requirements. ``$<INSTALL_INTERFACE:...>`` Content of ``...`` when the property is exported using :command:`install(EXPORT)`, and empty otherwise. diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index aaae457..bdf361e 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -3554,6 +3554,8 @@ void cmTarget::ExpandLinkItems(std::string const& prop, { cmGeneratorExpression ge; cmGeneratorExpressionDAGChecker dagChecker(this->GetName(), prop, 0, 0); + // The $<LINK_ONLY> expression may be in a link interface to specify private + // link dependencies that are otherwise excluded from usage requirements. if(usage_requirements_only) { dagChecker.SetTransitivePropertiesOnly(); @@ -6077,18 +6079,8 @@ void cmTarget::GetTransitivePropertyTargets(const std::string& config, cmTarget const* headTarget, std::vector<cmTarget const*> &tgts) const { - // The $<LINK_ONLY> expression may be in a link interface to specify private - // link dependencies that are otherwise excluded from usage requirements. - // Currently $<LINK_ONLY> is internal to CMake and only ever added by - // target_link_libraries for PRIVATE dependencies of STATIC libraries in - // INTERFACE_LINK_LIBRARIES which is used under CMP0022 NEW behavior. - bool usage_requirements_only = - this->GetType() == STATIC_LIBRARY && - this->GetPolicyStatusCMP0022() != cmPolicies::WARN && - this->GetPolicyStatusCMP0022() != cmPolicies::OLD; if(cmTarget::LinkInterface const* iface = - this->GetLinkInterfaceLibraries(config, headTarget, - usage_requirements_only)) + this->GetLinkInterfaceLibraries(config, headTarget, true)) { for(std::vector<cmLinkItem>::const_iterator it = iface->Libraries.begin(); it != iface->Libraries.end(); ++it) diff --git a/Tests/InterfaceLinkLibraries/CMakeLists.txt b/Tests/InterfaceLinkLibraries/CMakeLists.txt index bd0cf74..9e14c44 100644 --- a/Tests/InterfaceLinkLibraries/CMakeLists.txt +++ b/Tests/InterfaceLinkLibraries/CMakeLists.txt @@ -9,6 +9,9 @@ target_compile_definitions(foo_shared INTERFACE FOO_LIBRARY) add_library(bar_shared SHARED bar_vs6_1.cpp) target_compile_definitions(bar_shared INTERFACE BAR_LIBRARY) set_property(TARGET bar_shared APPEND PROPERTY INTERFACE_LINK_LIBRARIES foo_shared) +add_library(zot_shared SHARED zot_vs6_1.cpp) +target_compile_definitions(zot_shared INTERFACE ZOT_LIBRARY) +set_property(TARGET bar_shared APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<LINK_ONLY:zot_shared>) add_executable(shared_test main_vs6_1.cpp) set_property(TARGET shared_test APPEND PROPERTY LINK_LIBRARIES bar_shared) @@ -18,6 +21,9 @@ target_compile_definitions(foo_static INTERFACE FOO_LIBRARY) add_library(bar_static STATIC bar_vs6_2.cpp) target_compile_definitions(bar_static INTERFACE BAR_LIBRARY) set_property(TARGET bar_static APPEND PROPERTY INTERFACE_LINK_LIBRARIES foo_static) +add_library(zot_static STATIC zot_vs6_2.cpp) +target_compile_definitions(zot_static INTERFACE ZOT_LIBRARY) +set_property(TARGET bar_static APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<LINK_ONLY:zot_static>) add_executable(static_test main_vs6_2.cpp) set_property(TARGET static_test APPEND PROPERTY LINK_LIBRARIES bar_static) @@ -31,6 +37,9 @@ target_compile_definitions(bar_shared_private INTERFACE BAR_LIBRARY) target_compile_definitions(bar_shared_private PRIVATE BAR_USE_BANG) set_property(TARGET bar_shared_private APPEND PROPERTY LINK_LIBRARIES bang_shared_private) set_property(TARGET bar_shared_private APPEND PROPERTY INTERFACE_LINK_LIBRARIES foo_shared_private) +add_library(zot_shared_private SHARED zot_vs6_3.cpp) +target_compile_definitions(zot_shared_private INTERFACE ZOT_LIBRARY) +set_property(TARGET bar_shared_private APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<LINK_ONLY:zot_shared_private>) add_executable(shared_private_test main_vs6_3.cpp) set_property(TARGET shared_private_test APPEND PROPERTY LINK_LIBRARIES bar_shared_private) @@ -44,6 +53,9 @@ target_compile_definitions(bar_static_private INTERFACE BAR_LIBRARY) target_compile_definitions(bar_static_private PRIVATE BAR_USE_BANG) set_property(TARGET bar_static_private APPEND PROPERTY LINK_LIBRARIES bang_static_private) set_property(TARGET bar_static_private APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<LINK_ONLY:bang_static_private> foo_static_private) +add_library(zot_static_private STATIC zot_vs6_4.cpp) +target_compile_definitions(zot_static_private INTERFACE ZOT_LIBRARY) +set_property(TARGET bar_static_private APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<LINK_ONLY:zot_static_private>) add_executable(InterfaceLinkLibraries main_vs6_4.cpp) set_property(TARGET InterfaceLinkLibraries APPEND PROPERTY LINK_LIBRARIES bar_static_private) diff --git a/Tests/InterfaceLinkLibraries/main.cpp b/Tests/InterfaceLinkLibraries/main.cpp index a54076a..6e1295a 100644 --- a/Tests/InterfaceLinkLibraries/main.cpp +++ b/Tests/InterfaceLinkLibraries/main.cpp @@ -11,9 +11,13 @@ #error Unexpected BANG_LIBRARY #endif -#include "bar.h" +#ifdef ZOT_LIBRARY +#error Unexpected ZOT_LIBRARY +#endif + +#include "zot.h" int main(void) { - return foo() + bar(); + return foo() + bar() + zot(); } diff --git a/Tests/InterfaceLinkLibraries/zot.cpp b/Tests/InterfaceLinkLibraries/zot.cpp new file mode 100644 index 0000000..69462b0 --- /dev/null +++ b/Tests/InterfaceLinkLibraries/zot.cpp @@ -0,0 +1,6 @@ +#include "zot.h" + +int zot() +{ + return 0; +} diff --git a/Tests/InterfaceLinkLibraries/zot.h b/Tests/InterfaceLinkLibraries/zot.h new file mode 100644 index 0000000..5e4fb1e --- /dev/null +++ b/Tests/InterfaceLinkLibraries/zot.h @@ -0,0 +1,7 @@ + +#include "bar.h" + +#ifdef _WIN32 +__declspec(dllexport) +#endif +int zot(); diff --git a/Tests/InterfaceLinkLibraries/zot_vs6_1.cpp b/Tests/InterfaceLinkLibraries/zot_vs6_1.cpp new file mode 100644 index 0000000..c588c5f --- /dev/null +++ b/Tests/InterfaceLinkLibraries/zot_vs6_1.cpp @@ -0,0 +1 @@ +#include "zot.cpp" diff --git a/Tests/InterfaceLinkLibraries/zot_vs6_2.cpp b/Tests/InterfaceLinkLibraries/zot_vs6_2.cpp new file mode 100644 index 0000000..c588c5f --- /dev/null +++ b/Tests/InterfaceLinkLibraries/zot_vs6_2.cpp @@ -0,0 +1 @@ +#include "zot.cpp" diff --git a/Tests/InterfaceLinkLibraries/zot_vs6_3.cpp b/Tests/InterfaceLinkLibraries/zot_vs6_3.cpp new file mode 100644 index 0000000..c588c5f --- /dev/null +++ b/Tests/InterfaceLinkLibraries/zot_vs6_3.cpp @@ -0,0 +1 @@ +#include "zot.cpp" diff --git a/Tests/InterfaceLinkLibraries/zot_vs6_4.cpp b/Tests/InterfaceLinkLibraries/zot_vs6_4.cpp new file mode 100644 index 0000000..c588c5f --- /dev/null +++ b/Tests/InterfaceLinkLibraries/zot_vs6_4.cpp @@ -0,0 +1 @@ +#include "zot.cpp" ----------------------------------------------------------------------- Summary of changes: Help/manual/cmake-generator-expressions.7.rst | 7 +++++++ Source/cmTarget.cxx | 16 ++++------------ Tests/InterfaceLinkLibraries/CMakeLists.txt | 12 ++++++++++++ Tests/InterfaceLinkLibraries/main.cpp | 8 ++++++-- Tests/InterfaceLinkLibraries/zot.cpp | 6 ++++++ Tests/InterfaceLinkLibraries/{bar.h => zot.h} | 4 ++-- Tests/InterfaceLinkLibraries/zot_vs6_1.cpp | 1 + Tests/InterfaceLinkLibraries/zot_vs6_2.cpp | 1 + Tests/InterfaceLinkLibraries/zot_vs6_3.cpp | 1 + Tests/InterfaceLinkLibraries/zot_vs6_4.cpp | 1 + 10 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 Tests/InterfaceLinkLibraries/zot.cpp copy Tests/InterfaceLinkLibraries/{bar.h => zot.h} (61%) create mode 100644 Tests/InterfaceLinkLibraries/zot_vs6_1.cpp create mode 100644 Tests/InterfaceLinkLibraries/zot_vs6_2.cpp create mode 100644 Tests/InterfaceLinkLibraries/zot_vs6_3.cpp create mode 100644 Tests/InterfaceLinkLibraries/zot_vs6_4.cpp hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits