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, master has been updated
       via  87120b9c2a1aae4671b674ad3e06cd9666d91752 (commit)
       via  3d3713121b55320ce8031b838ba5ca5b844f2975 (commit)
      from  f4e2face6f867601f8a73754d627a81b26cdfd60 (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 -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=87120b9c2a1aae4671b674ad3e06cd9666d91752
commit 87120b9c2a1aae4671b674ad3e06cd9666d91752
Merge: f4e2fac 3d37131
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 1 15:50:23 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 1 11:50:33 2019 -0400

    Merge topic 'out-of-dir-linking-private-deps'
    
    3d3713121b target_link_libraries: Fix static library private deps in other 
dirs
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3276

diff --cc Source/cmTargetLinkLibrariesCommand.cxx
index 5c7b95c,ded6831..3883b52
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@@ -452,12 -449,11 +452,12 @@@ bool cmTargetLinkLibrariesCommand::Hand
    // STATIC library.)
    if (this->CurrentProcessingState == ProcessingKeywordPrivateInterface ||
        this->CurrentProcessingState == ProcessingPlainPrivateInterface) {
 -    if (this->Target->GetType() == cmStateEnums::STATIC_LIBRARY) {
 +    if (this->Target->GetType() == cmStateEnums::STATIC_LIBRARY ||
 +        this->Target->GetType() == cmStateEnums::OBJECT_LIBRARY) {
        std::string configLib =
          this->Target->GetDebugGeneratorExpressions(libRef, llt);
-       if (cmGeneratorExpression::IsValidTargetName(libRef) ||
-           cmGeneratorExpression::Find(libRef) != std::string::npos) {
+       if (cmGeneratorExpression::IsValidTargetName(lib) ||
+           cmGeneratorExpression::Find(lib) != std::string::npos) {
          configLib = "$<LINK_ONLY:" + configLib + ">";
        }
        this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES",

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3d3713121b55320ce8031b838ba5ca5b844f2975
commit 3d3713121b55320ce8031b838ba5ca5b844f2975
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Apr 30 13:18:47 2019 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Apr 30 13:53:10 2019 -0400

    target_link_libraries: Fix static library private deps in other dirs
    
    In commit a1ad0a699b (target_link_libraries: Allow use with targets in
    other directories, 2018-09-07, v3.13.0-rc1~94^2) we accidentally broke
    the logic that adds `$<LINK_ONLY:...>` to private dependencies of static
    libraries in their `INTERFACE_LINK_LIBRARIES` in the case that the
    dependency is added from outside the directory creating the library.
    The check for a valid target name should apply to the original name
    specified by the caller and not the encoded cross-directory reference.
    
    Fixes: #19197

diff --git a/Source/cmTargetLinkLibrariesCommand.cxx 
b/Source/cmTargetLinkLibrariesCommand.cxx
index ad33f98..ded6831 100644
--- a/Source/cmTargetLinkLibrariesCommand.cxx
+++ b/Source/cmTargetLinkLibrariesCommand.cxx
@@ -452,8 +452,8 @@ bool cmTargetLinkLibrariesCommand::HandleLibrary(const 
std::string& lib,
     if (this->Target->GetType() == cmStateEnums::STATIC_LIBRARY) {
       std::string configLib =
         this->Target->GetDebugGeneratorExpressions(libRef, llt);
-      if (cmGeneratorExpression::IsValidTargetName(libRef) ||
-          cmGeneratorExpression::Find(libRef) != std::string::npos) {
+      if (cmGeneratorExpression::IsValidTargetName(lib) ||
+          cmGeneratorExpression::Find(lib) != std::string::npos) {
         configLib = "$<LINK_ONLY:" + configLib + ">";
       }
       this->Target->AppendProperty("INTERFACE_LINK_LIBRARIES",
diff --git a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt 
b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt
index 85ce1f7..5c704ac 100644
--- a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt
@@ -134,11 +134,15 @@ assert_property(newsignature1 LINK_LIBRARIES 
"depC;depB;subdirlib")
 #----------------------------------------------------------------------------
 # Test cross-directory linking.
 cmake_policy(PUSH)
+cmake_policy(SET CMP0022 NEW)
 cmake_policy(SET CMP0079 NEW)
 add_executable(TopDir TopDir.c)
 add_subdirectory(SubDirA)
 add_subdirectory(SubDirB)
 target_link_libraries(SubDirB TopDirImported)
+add_subdirectory(SubDirC)
+target_link_libraries(SubDirC PRIVATE SubDirC2)
+target_link_libraries(TopDir SubDirC)
 add_library(TopDirImported IMPORTED INTERFACE)
 target_compile_definitions(TopDirImported INTERFACE DEF_TopDirImported)
 cmake_policy(POP)
diff --git a/Tests/CMakeCommands/target_link_libraries/SubDirC/CMakeLists.txt 
b/Tests/CMakeCommands/target_link_libraries/SubDirC/CMakeLists.txt
new file mode 100644
index 0000000..54bcc51
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/SubDirC/CMakeLists.txt
@@ -0,0 +1,9 @@
+add_library(SubDirC STATIC SubDirC.c)
+
+add_library(SubDirC1 INTERFACE)
+target_compile_definitions(SubDirC1 INTERFACE DEF_SubDirC1)
+
+add_library(SubDirC2 INTERFACE)
+target_compile_definitions(SubDirC2 INTERFACE DEF_SubDirC2)
+
+target_link_libraries(SubDirC PRIVATE SubDirC1)
diff --git a/Tests/CMakeCommands/target_link_libraries/SubDirC/SubDirC.c 
b/Tests/CMakeCommands/target_link_libraries/SubDirC/SubDirC.c
new file mode 100644
index 0000000..c5536dc
--- /dev/null
+++ b/Tests/CMakeCommands/target_link_libraries/SubDirC/SubDirC.c
@@ -0,0 +1,11 @@
+#ifndef DEF_SubDirC1
+#  error "DEF_SubDirC1 not defined"
+#endif
+#ifndef DEF_SubDirC2
+#  error "DEF_SubDirC2 not defined"
+#endif
+
+int SubDirC(void)
+{
+  return 0;
+}
diff --git a/Tests/CMakeCommands/target_link_libraries/TopDir.c 
b/Tests/CMakeCommands/target_link_libraries/TopDir.c
index 4706bb9..d8066e5 100644
--- a/Tests/CMakeCommands/target_link_libraries/TopDir.c
+++ b/Tests/CMakeCommands/target_link_libraries/TopDir.c
@@ -7,6 +7,12 @@
 #ifdef DEF_TopDirImported
 #  error "DEF_TopDirImported is defined but should not be!"
 #endif
+#ifdef DEF_SubDirC1
+#  error "DEF_SubDirC1 defined but should not be"
+#endif
+#ifdef DEF_SubDirC2
+#  error "DEF_SubDirC2 defined but should not be"
+#endif
 
 int main(void)
 {

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

Summary of changes:
 Source/cmTargetLinkLibrariesCommand.cxx                       |  4 ++--
 Tests/CMakeCommands/target_link_libraries/CMakeLists.txt      |  4 ++++
 .../target_link_libraries/SubDirC/CMakeLists.txt              |  9 +++++++++
 Tests/CMakeCommands/target_link_libraries/SubDirC/SubDirC.c   | 11 +++++++++++
 Tests/CMakeCommands/target_link_libraries/TopDir.c            |  6 ++++++
 5 files changed, 32 insertions(+), 2 deletions(-)
 create mode 100644 
Tests/CMakeCommands/target_link_libraries/SubDirC/CMakeLists.txt
 create mode 100644 Tests/CMakeCommands/target_link_libraries/SubDirC/SubDirC.c


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to