summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-10-17 12:26:37 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-10-17 12:26:52 (GMT)
commit67aef2b2c584514285f62a2bd1ac568eeb06e4ff (patch)
treebf18752e6ae6dd402b7523308cb71b47d7651e9b
parentfb1a3270442a0f6250cda7f5a916c116e74742d7 (diff)
parent262c27719767a3f5262dd9327d5f8c8ecf013e0e (diff)
downloadCMake-67aef2b2c584514285f62a2bd1ac568eeb06e4ff.zip
CMake-67aef2b2c584514285f62a2bd1ac568eeb06e4ff.tar.gz
CMake-67aef2b2c584514285f62a2bd1ac568eeb06e4ff.tar.bz2
Merge topic 'revert-link-dedup-imported-targets' into release-3.31
262c277197 Revert "Ensure imported targets in sibling dirs are deduplicated" 645b57b8cd Tests/RunCMake/CMP0156: Match expected results more precisely Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !9909
-rw-r--r--Source/cmComputeLinkDepends.cxx35
-rw-r--r--Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-result.txt1
-rw-r--r--Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-stdout.txt3
-rw-r--r--Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-result.txt2
-rw-r--r--Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-stdout.txt2
-rw-r--r--Tests/RunCMake/CMP0156/RunCMakeTest.cmake2
6 files changed, 9 insertions, 36 deletions
diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx
index 5d92549..ab2557b 100644
--- a/Source/cmComputeLinkDepends.cxx
+++ b/Source/cmComputeLinkDepends.cxx
@@ -33,7 +33,6 @@
#include "cmState.h"
#include "cmStateTypes.h"
#include "cmStringAlgorithms.h"
-#include "cmSystemTools.h"
#include "cmTarget.h"
#include "cmValue.h"
#include "cmake.h"
@@ -477,7 +476,6 @@ public:
this->Target->GetPolicyStatusCMP0179() == cmPolicies::NEW) {
// keep the first occurrence of the static libraries
std::set<size_t> emitted{ this->Emitted };
- std::set<std::string> importedEmitted;
for (auto index : libEntries) {
LinkEntry const& entry = this->Entries[index];
if (!entry.Target ||
@@ -485,20 +483,7 @@ public:
entries.emplace_back(index);
continue;
}
- if (this->IncludeEntry(entry)) {
- entries.emplace_back(index);
- continue;
- }
- if (entry.Target->IsImported()) {
- if (emitted.insert(index).second &&
- importedEmitted
- .insert(cmSystemTools::GetRealPath(entry.Item.Value))
- .second) {
- entries.emplace_back(index);
- }
- continue;
- }
- if (emitted.insert(index).second) {
+ if (this->IncludeEntry(entry) || emitted.insert(index).second) {
entries.emplace_back(index);
}
}
@@ -604,22 +589,7 @@ private:
{
for (auto index : libEntries) {
LinkEntry const& entry = this->Entries[index];
- if (this->IncludeEntry(entry)) {
- this->FinalEntries.emplace_back(entry);
- continue;
- }
- if (entry.Target && entry.Target->IsImported()) {
- // Different imported targets can point to the same library so check
- // also library paths
- if (this->Emitted.insert(index).second &&
- this->ImportedEmitted
- .insert(cmSystemTools::GetRealPath(entry.Item.Value))
- .second) {
- this->FinalEntries.emplace_back(entry);
- }
- continue;
- }
- if (this->Emitted.insert(index).second) {
+ if (this->IncludeEntry(entry) || this->Emitted.insert(index).second) {
this->FinalEntries.emplace_back(entry);
}
}
@@ -632,7 +602,6 @@ private:
EntryVector& Entries;
EntryVector& FinalEntries;
std::set<size_t> Emitted;
- std::set<std::string> ImportedEmitted;
const std::map<size_t, std::vector<size_t>>* Groups = nullptr;
};
}
diff --git a/Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-result.txt b/Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-result.txt
new file mode 100644
index 0000000..d197c91
--- /dev/null
+++ b/Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-result.txt
@@ -0,0 +1 @@
+[^0]
diff --git a/Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-stdout.txt b/Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-stdout.txt
new file mode 100644
index 0000000..c602967
--- /dev/null
+++ b/Tests/RunCMake/CMP0156/CMP0156-NEW-AppleClang-Imported-build-stdout.txt
@@ -0,0 +1,3 @@
+ld: warning: ignoring duplicate libraries: '[^']*liblib1\.a'
+ld: fatal warning\(s\) induced error \(-fatal_warnings\)
+(cc|clang): error: linker command failed with exit code 1 \(use -v to see invocation\)
diff --git a/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-result.txt b/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-result.txt
index b18168c..d197c91 100644
--- a/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-result.txt
+++ b/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-result.txt
@@ -1 +1 @@
-.+
+[^0]
diff --git a/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-stdout.txt b/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-stdout.txt
index ea3b5c1..28dfd44 100644
--- a/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-stdout.txt
+++ b/Tests/RunCMake/CMP0156/CMP0156-OLD-AppleClang-build-stdout.txt
@@ -1,3 +1,3 @@
-ld: warning: ignoring duplicate libraries: '.*liblib1.a', '.*liblib2.a'
+ld: warning: ignoring duplicate libraries: '[^']*liblib1\.a', '[^']*liblib2\.a'
ld: fatal warning\(s\) induced error \(-fatal_warnings\)
(cc|clang): error: linker command failed with exit code 1 \(use -v to see invocation\)
diff --git a/Tests/RunCMake/CMP0156/RunCMakeTest.cmake b/Tests/RunCMake/CMP0156/RunCMakeTest.cmake
index 052547c..a58fc88 100644
--- a/Tests/RunCMake/CMP0156/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CMP0156/RunCMakeTest.cmake
@@ -34,6 +34,6 @@ run_cmake_and_build(CMP0156-NEW-Imported)
if (CMAKE_C_COMPILER_ID STREQUAL "AppleClang"
AND CMAKE_C_COMPILER_VERSION GREATER_EQUAL "15.0")
- # special case for Apple: with CMP0156=OLD, linker will warning on duplicate libraries
+ # special case for Apple: FIXME(#26284): linker will warning on duplicate libraries
run_cmake_and_build(CMP0156-NEW-AppleClang-Imported)
endif()