[Cmake-commits] CMake branch, next, updated. v2.8.11-2579-gfea9a7e

Stephen Kelly steveire at gmail.com
Thu Jun 6 19:21:07 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  fea9a7e078733960c190ef1a9b76d5b009f07fa7 (commit)
       via  3cfe421874af1709adf98144abeede39e62a51db (commit)
      from  d34fa228e33f37f20797c04d36f034d88c97e0f9 (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=fea9a7e078733960c190ef1a9b76d5b009f07fa7
commit fea9a7e078733960c190ef1a9b76d5b009f07fa7
Merge: d34fa22 3cfe421
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Thu Jun 6 19:21:00 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jun 6 19:21:00 2013 -0400

    Merge topic 'INTERFACE_LINK_LIBRARIES-prop' into next
    
    3cfe421 TLL: Populate INTERFACE_LINK_LIBRARIES if CMP0022 is NEW.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3cfe421874af1709adf98144abeede39e62a51db
commit 3cfe421874af1709adf98144abeede39e62a51db
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Tue Jun 4 16:21:33 2013 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Jun 7 01:20:07 2013 +0200

    TLL: Populate INTERFACE_LINK_LIBRARIES if CMP0022 is NEW.

diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx
index d9f2111..90e6ab4 100644
--- a/Source/cmPolicies.cxx
+++ b/Source/cmPolicies.cxx
@@ -564,6 +564,9 @@ cmPolicies::cmPolicies()
     "the IMPORTED target by default.  A new option to the install(EXPORT) "
     "and export commands allows export of the old-style properties for "
     "compatibility with downstream users of CMake versions older than 2.8.12."
+    "The target_link_libraries command will populate the "
+    "INTERFACE_LINK_LIBRARIES property instead of the properties matching "
+    "LINK_INTERFACE_LIBRARIES(_<CONFIG>)? if this policy is NEW."
     "\n"
     "The OLD behavior for this policy is to ignore the "
     "INTERFACE_LINK_LIBRARIES property for in-build targets.  "
diff --git a/Source/cmTargetLinkLibrariesCommand.cxx b/Source/cmTargetLinkLibrariesCommand.cxx
index b7b7691..fb4b032 100644
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@ -256,6 +256,11 @@ void
 cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
                                             cmTarget::LinkLibraryType llt)
 {
+  const cmPolicies::PolicyStatus policy22Status
+                      = this->Target->GetPolicyStatusCMP0022();
+  const bool policy22IsNew = policy22Status != cmPolicies::OLD
+                          && policy22Status != cmPolicies::WARN;
+
   // Handle normal case first.
   if(this->CurrentProcessingState != ProcessingLinkInterface)
     {
@@ -263,11 +268,24 @@ cmTargetLinkLibrariesCommand::HandleLibrary(const char* lib,
       ->AddLinkLibraryForTarget(this->Target->GetName(), lib, llt);
     if (this->CurrentProcessingState != ProcessingPublicInterface)
       {
+      if (policy22IsNew
+            && this->Target->GetType() == cmTarget::STATIC_LIBRARY)
+        {
+        this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES",
+                          ("$<LINK_ONLY:" +  std::string(lib) + ">").c_str());
+        }
       // Not LINK_INTERFACE_LIBRARIES or LINK_PUBLIC, do not add to interface.
       return;
       }
     }
 
+
+  if (policy22IsNew)
+    {
+    this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES", lib);
+    return;
+    }
+
   // Get the list of configurations considered to be DEBUG.
   std::vector<std::string> const& debugConfigs =
     this->Makefile->GetCMakeInstance()->GetDebugConfigs();
diff --git a/Source/cmTargetLinkLibrariesCommand.h b/Source/cmTargetLinkLibrariesCommand.h
index c683016..3a276e2 100644
--- a/Source/cmTargetLinkLibrariesCommand.h
+++ b/Source/cmTargetLinkLibrariesCommand.h
@@ -92,7 +92,7 @@ public:
       "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 LINK_INTERFACE_LIBRARIES target property to override the "
+      "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."
@@ -112,14 +112,19 @@ public:
       "  target_link_libraries(<target> LINK_INTERFACE_LIBRARIES\n"
       "                        [[debug|optimized|general] <lib>] ...)\n"
       "The LINK_INTERFACE_LIBRARIES mode appends the libraries "
-      "to the LINK_INTERFACE_LIBRARIES and its per-configuration equivalent "
-      "target properties instead of using them for linking.  "
-      "Libraries specified as \"debug\" are appended to the "
+      "to the INTERFACE_LINK_LIBRARIES target property instead of using them "
+      "for linking.  If policy CMP0022 is not NEW, then this mode instead "
+      "appends libraries to the LINK_INTERFACE_LIBRARIES and its "
+      "per-configuration equivalent.  "
+      "Libraries specified as \"debug\" are wrapped in a generator "
+      "expression to correspond to debug builds.  If policy CMP0022 is not "
+      "NEW, the libraries are instead appended to the "
       "LINK_INTERFACE_LIBRARIES_DEBUG property (or to the properties "
       "corresponding to configurations listed in the DEBUG_CONFIGURATIONS "
       "global property if it is set).  "
       "Libraries specified as \"optimized\" are appended to the "
-      "LINK_INTERFACE_LIBRARIES property.  "
+      "INTERFACE_LINK_LIBRARIES property.  If policy CMP0022 is not NEW, "
+      "they are instead appended to the LINK_INTERFACE_LIBRARIES property.  "
       "Libraries specified as \"general\" (or without any keyword) are "
       "treated as if specified for both \"debug\" and \"optimized\"."
       "\n"
@@ -131,9 +136,11 @@ public:
       "The LINK_PUBLIC and LINK_PRIVATE modes can be used to specify both "
       "the link dependencies and the link interface in one command.  "
       "Libraries and targets following LINK_PUBLIC are linked to, and are "
-      "made part of the LINK_INTERFACE_LIBRARIES. Libraries and targets "
-      "following LINK_PRIVATE are linked to, but are not made part of the "
-      "LINK_INTERFACE_LIBRARIES.  "
+      "made part of the INTERFACE_LINK_LIBRARIES.  If policy CMP0022 is not "
+      "NEW, they are instead made part of the LINK_INTERFACE_LIBRARIES.  "
+      "Libraries and targets following LINK_PRIVATE are linked to, but are "
+      "not made part of the INTERFACE_LINK_LIBRARIES (or "
+      "LINK_INTERFACE_LIBRARIES)."
       "\n"
       "The library dependency graph is normally acyclic (a DAG), but in the "
       "case of mutually-dependent STATIC libraries CMake allows the graph "
diff --git a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt
index b003a1b..2240539 100644
--- a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt
@@ -122,3 +122,5 @@ add_library(libConsumer empty.cpp)
 # evaluates to the empty string in non-Debug cases, ensure that that causes
 # no problems.
 target_link_libraries(libConsumer debug depA)
+
+add_subdirectory(cmp0022)
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt b/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt
new file mode 100644
index 0000000..dd6ab41
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt
@@ -0,0 +1,18 @@
+
+include(GenerateExportHeader)
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+cmake_policy(SET CMP0022 NEW)
+add_library(cmp0022lib SHARED cmp0022lib.cpp)
+generate_export_header(cmp0022lib)
+add_library(cmp0022ifacelib SHARED cmp0022ifacelib.cpp)
+generate_export_header(cmp0022ifacelib)
+target_link_libraries(cmp0022lib LINK_PUBLIC cmp0022ifacelib)
+
+assert_property(cmp0022lib LINK_INTERFACE_LIBRARIES "")
+assert_property(cmp0022ifacelib LINK_INTERFACE_LIBRARIES "")
+assert_property(cmp0022lib INTERFACE_LINK_LIBRARIES "cmp0022ifacelib")
+assert_property(cmp0022ifacelib INTERFACE_LINK_LIBRARIES "")
+
+add_executable(cmp0022exe cmp0022exe.cpp)
+target_link_libraries(cmp0022exe cmp0022lib)
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022exe.cpp b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022exe.cpp
new file mode 100644
index 0000000..008bb74
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022exe.cpp
@@ -0,0 +1,7 @@
+
+#include "cmp0022lib.h"
+
+int main(void)
+{
+  return cmp0022().Value;
+}
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.cpp b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.cpp
new file mode 100644
index 0000000..b285be0
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.cpp
@@ -0,0 +1,9 @@
+
+#include "cmp0022ifacelib.h"
+
+CMP0022Iface cmp0022iface()
+{
+  CMP0022Iface iface;
+  iface.Value = 0;
+  return iface;
+}
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.h b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.h
new file mode 100644
index 0000000..616dbf6
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.h
@@ -0,0 +1,9 @@
+
+#include "cmp0022ifacelib_export.h"
+
+struct CMP0022Iface
+{
+  int Value;
+};
+
+CMP0022Iface CMP0022IFACELIB_EXPORT cmp0022iface();
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.cpp b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.cpp
new file mode 100644
index 0000000..381d463
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.cpp
@@ -0,0 +1,7 @@
+
+#include "cmp0022lib.h"
+
+CMP0022Iface cmp0022()
+{
+  return cmp0022iface();
+}
diff --git a/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.h b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.h
new file mode 100644
index 0000000..3235b9b
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.h
@@ -0,0 +1,6 @@
+
+#include "cmp0022lib_export.h"
+
+#include "cmp0022ifacelib.h"
+
+CMP0022Iface CMP0022LIB_EXPORT cmp0022();

-----------------------------------------------------------------------

Summary of changes:
 Source/cmPolicies.cxx                              |    3 ++
 Source/cmTargetLinkLibrariesCommand.cxx            |   18 +++++++++++++++
 Source/cmTargetLinkLibrariesCommand.h              |   23 +++++++++++++-------
 .../target_link_libraries/CMakeLists.txt           |    2 +
 .../target_link_libraries/cmp0022/CMakeLists.txt   |   18 +++++++++++++++
 .../target_link_libraries/cmp0022/cmp0022exe.cpp   |    7 ++++++
 .../cmp0022/cmp0022ifacelib.cpp                    |    9 +++++++
 .../cmp0022/cmp0022ifacelib.h                      |    9 +++++++
 .../target_link_libraries/cmp0022/cmp0022lib.cpp   |    7 ++++++
 .../target_link_libraries/cmp0022/cmp0022lib.h     |    6 +++++
 10 files changed, 94 insertions(+), 8 deletions(-)
 create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/CMakeLists.txt
 create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022exe.cpp
 create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.cpp
 create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022ifacelib.h
 create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.cpp
 create mode 100644 Tests/CMakeCommands/target_link_libraries/cmp0022/cmp0022lib.h


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list