summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-09-18 22:29:51 (GMT)
committerBrad King <brad.king@kitware.com>2024-09-20 17:45:46 (GMT)
commit9285a9dc9a71bcf511b22a14aaa4a13ebf269480 (patch)
tree81abc1f469e59f134f2106468a58c014a954a034 /Source
parentf792db4ca2b41e1263cfc6825bb53bc3f6bb9606 (diff)
downloadCMake-9285a9dc9a71bcf511b22a14aaa4a13ebf269480.zip
CMake-9285a9dc9a71bcf511b22a14aaa4a13ebf269480.tar.gz
CMake-9285a9dc9a71bcf511b22a14aaa4a13ebf269480.tar.bz2
cmComputeLinkDepends: Add final dependency ordering to debug output
Print results of the main ordering algorithm before platform-specific filtering by `CMAKE_<LANG>_LINK_LIBRARIES_PROCESSING`.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmComputeLinkDepends.cxx62
-rw-r--r--Source/cmComputeLinkDepends.h1
2 files changed, 46 insertions, 17 deletions
diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx
index 976a158..ae33c12 100644
--- a/Source/cmComputeLinkDepends.cxx
+++ b/Source/cmComputeLinkDepends.cxx
@@ -715,6 +715,11 @@ cmComputeLinkDepends::Compute()
// Compute the final ordering.
this->OrderLinkEntries();
+ // Display the final ordering.
+ if (this->DebugMode) {
+ this->DisplayOrderedEntries();
+ }
+
// Compute the final set of link entries.
EntriesProcessing entriesProcessing{ this->Target, this->LinkLanguage,
this->EntryList,
@@ -1649,26 +1654,49 @@ size_t cmComputeLinkDepends::ComputeComponentCount(NodeList const& nl)
return count;
}
-void cmComputeLinkDepends::DisplayFinalEntries()
+namespace {
+void DisplayLinkEntry(int& count, cmComputeLinkDepends::LinkEntry const& entry)
{
- fprintf(stderr, "target [%s] links to:\n", this->Target->GetName().c_str());
- char space[] = " ";
- int count = 2;
- for (LinkEntry const& lei : this->FinalLinkEntries) {
- if (lei.Kind == LinkEntry::Group) {
- fprintf(stderr, " %s group",
- lei.Item.Value == "<LINK_GROUP>" ? "start" : "end");
- count = lei.Item.Value == "<LINK_GROUP>" ? 4 : 2;
- } else if (lei.Target) {
- fprintf(stderr, "%*starget [%s]", count, space,
- lei.Target->GetName().c_str());
+ if (entry.Kind == cmComputeLinkDepends::LinkEntry::Group) {
+ if (entry.Item.Value == LG_ITEM_BEGIN) {
+ fprintf(stderr, " start group");
+ count = 4;
+ } else if (entry.Item.Value == LG_ITEM_END) {
+ fprintf(stderr, " end group");
+ count = 2;
} else {
- fprintf(stderr, "%*sitem [%s]", count, space, lei.Item.Value.c_str());
+ fprintf(stderr, " group");
}
- if (lei.Feature != LinkEntry::DEFAULT) {
- fprintf(stderr, ", feature [%s]", lei.Feature.c_str());
- }
- fprintf(stderr, "\n");
+ } else if (entry.Target) {
+ fprintf(stderr, "%*starget [%s]", count, "",
+ entry.Target->GetName().c_str());
+ } else {
+ fprintf(stderr, "%*sitem [%s]", count, "", entry.Item.Value.c_str());
+ }
+ if (entry.Feature != cmComputeLinkDepends::LinkEntry::DEFAULT) {
+ fprintf(stderr, ", feature [%s]", entry.Feature.c_str());
+ }
+ fprintf(stderr, "\n");
+}
+}
+
+void cmComputeLinkDepends::DisplayOrderedEntries()
+{
+ fprintf(stderr, "target [%s] link dependency ordering:\n",
+ this->Target->GetName().c_str());
+ int count = 2;
+ for (auto index : this->FinalLinkOrder) {
+ DisplayLinkEntry(count, this->EntryList[index]);
+ }
+ fprintf(stderr, "\n");
+}
+
+void cmComputeLinkDepends::DisplayFinalEntries()
+{
+ fprintf(stderr, "target [%s] link line:\n", this->Target->GetName().c_str());
+ int count = 2;
+ for (LinkEntry const& entry : this->FinalLinkEntries) {
+ DisplayLinkEntry(count, entry);
}
fprintf(stderr, "\n");
}
diff --git a/Source/cmComputeLinkDepends.h b/Source/cmComputeLinkDepends.h
index 5926c12..55f0032 100644
--- a/Source/cmComputeLinkDepends.h
+++ b/Source/cmComputeLinkDepends.h
@@ -199,6 +199,7 @@ private:
void VisitEntry(size_t index);
PendingComponent& MakePendingComponent(size_t component);
size_t ComputeComponentCount(NodeList const& nl);
+ void DisplayOrderedEntries();
void DisplayFinalEntries();
// Record of the original link line.