Evaluation of TRANSITIVE_LINK_PROPERTIES isn't considered a usage

Fixes #26108
This commit is contained in:
Robert Maynard
2024-07-05 09:24:02 -04:00
parent c7232c3a2a
commit 2fc9e482a9
7 changed files with 18 additions and 3 deletions
+1
View File
@@ -264,6 +264,7 @@ public:
{
Compile, // Usage requirements for compiling. Excludes $<LINK_ONLY>.
Link, // Usage requirements for linking. Includes $<LINK_ONLY>.
LinkInterfaceEval,
};
cmLinkInterfaceLibraries const* GetLinkInterfaceLibraries(
+4 -1
View File
@@ -392,7 +392,7 @@ void cmGeneratorTarget::CheckLinkLibraries() const
// should be a subset of LinkInterfaceMap (with LINK_ONLY left out).
for (auto const& hmp : this->LinkInterfaceMap) {
for (auto const& hmi : hmp.second) {
if (!hmi.second.LibrariesDone) {
if (!hmi.second.LibrariesDone || hmi.second.LinkOnlyEval) {
continue;
}
for (cmLinkItem const& item : hmi.second.Libraries) {
@@ -642,6 +642,7 @@ cmLinkInterface const* cmGeneratorTarget::GetLinkInterface(
if (secondPass) {
iface = cmOptionalLinkInterface();
}
iface.LinkOnlyEval = false;
if (!iface.LibrariesDone) {
iface.LibrariesDone = true;
this->ComputeLinkInterfaceLibraries(config, iface, head, UseTo::Link);
@@ -765,6 +766,7 @@ const cmLinkInterfaceLibraries* cmGeneratorTarget::GetLinkInterfaceLibraries(
}
cmOptionalLinkInterface& iface = hm[head];
iface.LinkOnlyEval = (usage == UseTo::LinkInterfaceEval);
if (!iface.LibrariesDone) {
iface.LibrariesDone = true;
this->ComputeLinkInterfaceLibraries(config, iface, head, usage);
@@ -1034,6 +1036,7 @@ const cmLinkInterface* cmGeneratorTarget::GetImportLinkInterface(
if (secondPass) {
iface = cmOptionalLinkInterface();
}
iface.LinkOnlyEval = (usage == UseTo::LinkInterfaceEval);
if (!iface.AllDone) {
iface.AllDone = true;
iface.LibrariesDone = true;
@@ -286,7 +286,8 @@ cmGeneratorTarget::GetCustomTransitiveProperties(std::string const& config,
}
}
};
addTransitiveProperties("TRANSITIVE_LINK_PROPERTIES", UseTo::Link);
addTransitiveProperties("TRANSITIVE_LINK_PROPERTIES",
UseTo::LinkInterfaceEval);
addTransitiveProperties("TRANSITIVE_COMPILE_PROPERTIES", UseTo::Compile);
i = ctpm.emplace(config, std::move(ctp)).first;
}
+1
View File
@@ -120,6 +120,7 @@ struct cmLinkInterface : public cmLinkInterfaceLibraries
struct cmOptionalLinkInterface : public cmLinkInterface
{
bool LinkOnlyEval = false;
bool LibrariesDone = false;
bool AllDone = false;
bool Exists = false;