diff options
author | Brad King <brad.king@kitware.com> | 2024-09-18 22:29:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-09-20 17:45:46 (GMT) |
commit | 9285a9dc9a71bcf511b22a14aaa4a13ebf269480 (patch) | |
tree | 81abc1f469e59f134f2106468a58c014a954a034 /Source | |
parent | f792db4ca2b41e1263cfc6825bb53bc3f6bb9606 (diff) | |
download | CMake-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.cxx | 62 | ||||
-rw-r--r-- | Source/cmComputeLinkDepends.h | 1 |
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. |