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

Reply via email to