mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
cmTarget: Add INTERFACE_LINK_LIBRARIES_DIRECT{,_EXCLUDE} backtrace storage
These properties will be given meaning by later commits.
This commit is contained in:
@@ -202,6 +202,8 @@ public:
|
||||
std::vector<BT<std::string>> LinkDirectoriesEntries;
|
||||
std::vector<BT<std::string>> LinkImplementationPropertyEntries;
|
||||
std::vector<BT<std::string>> LinkInterfacePropertyEntries;
|
||||
std::vector<BT<std::string>> LinkInterfaceDirectPropertyEntries;
|
||||
std::vector<BT<std::string>> LinkInterfaceDirectExcludePropertyEntries;
|
||||
std::vector<BT<std::string>> HeaderSetsEntries;
|
||||
std::vector<BT<std::string>> InterfaceHeaderSetsEntries;
|
||||
std::vector<std::pair<cmTarget::TLLSignature, cmListFileContext>>
|
||||
@@ -1138,6 +1140,16 @@ cmBTStringRange cmTarget::GetLinkInterfaceEntries() const
|
||||
return cmMakeRange(this->impl->LinkInterfacePropertyEntries);
|
||||
}
|
||||
|
||||
cmBTStringRange cmTarget::GetLinkInterfaceDirectEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkInterfaceDirectPropertyEntries);
|
||||
}
|
||||
|
||||
cmBTStringRange cmTarget::GetLinkInterfaceDirectExcludeEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkInterfaceDirectExcludePropertyEntries);
|
||||
}
|
||||
|
||||
cmBTStringRange cmTarget::GetHeaderSetsEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->HeaderSetsEntries);
|
||||
@@ -1182,6 +1194,8 @@ MAKE_PROP(HEADER_SET);
|
||||
MAKE_PROP(HEADER_SETS);
|
||||
MAKE_PROP(INTERFACE_HEADER_SETS);
|
||||
MAKE_PROP(INTERFACE_LINK_LIBRARIES);
|
||||
MAKE_PROP(INTERFACE_LINK_LIBRARIES_DIRECT);
|
||||
MAKE_PROP(INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE);
|
||||
#undef MAKE_PROP
|
||||
}
|
||||
|
||||
@@ -1313,6 +1327,19 @@ void cmTarget::StoreProperty(const std::string& prop, ValueType value)
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkInterfacePropertyEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propINTERFACE_LINK_LIBRARIES_DIRECT) {
|
||||
this->impl->LinkInterfaceDirectPropertyEntries.clear();
|
||||
if (value) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkInterfaceDirectPropertyEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propINTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE) {
|
||||
this->impl->LinkInterfaceDirectExcludePropertyEntries.clear();
|
||||
if (value) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkInterfaceDirectExcludePropertyEntries.emplace_back(value,
|
||||
lfbt);
|
||||
}
|
||||
} else if (prop == propSOURCES) {
|
||||
this->impl->SourceEntries.clear();
|
||||
if (value) {
|
||||
@@ -1571,6 +1598,17 @@ void cmTarget::AppendProperty(const std::string& prop,
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkInterfacePropertyEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propINTERFACE_LINK_LIBRARIES_DIRECT) {
|
||||
if (!value.empty()) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkInterfaceDirectPropertyEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propINTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE) {
|
||||
if (!value.empty()) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkInterfaceDirectExcludePropertyEntries.emplace_back(value,
|
||||
lfbt);
|
||||
}
|
||||
} else if (prop == "SOURCES") {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->SourceEntries.emplace_back(value, lfbt);
|
||||
@@ -1881,6 +1919,8 @@ cmValue cmTarget::GetProperty(const std::string& prop) const
|
||||
propHEADER_SETS,
|
||||
propINTERFACE_HEADER_SETS,
|
||||
propINTERFACE_LINK_LIBRARIES,
|
||||
propINTERFACE_LINK_LIBRARIES_DIRECT,
|
||||
propINTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE,
|
||||
};
|
||||
if (specialProps.count(prop)) {
|
||||
if (prop == propC_STANDARD || prop == propCXX_STANDARD ||
|
||||
@@ -1910,6 +1950,25 @@ cmValue cmTarget::GetProperty(const std::string& prop) const
|
||||
output = cmJoin(this->impl->LinkInterfacePropertyEntries, ";");
|
||||
return cmValue(output);
|
||||
}
|
||||
if (prop == propINTERFACE_LINK_LIBRARIES_DIRECT) {
|
||||
if (this->impl->LinkInterfaceDirectPropertyEntries.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static std::string output;
|
||||
output = cmJoin(this->impl->LinkInterfaceDirectPropertyEntries, ";");
|
||||
return cmValue(output);
|
||||
}
|
||||
if (prop == propINTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE) {
|
||||
if (this->impl->LinkInterfaceDirectExcludePropertyEntries.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static std::string output;
|
||||
output =
|
||||
cmJoin(this->impl->LinkInterfaceDirectExcludePropertyEntries, ";");
|
||||
return cmValue(output);
|
||||
}
|
||||
// the type property returns what type the target is
|
||||
if (prop == propTYPE) {
|
||||
return cmValue(cmState::GetTargetTypeName(this->GetType()));
|
||||
|
||||
@@ -266,6 +266,8 @@ public:
|
||||
cmBTStringRange GetLinkImplementationEntries() const;
|
||||
|
||||
cmBTStringRange GetLinkInterfaceEntries() const;
|
||||
cmBTStringRange GetLinkInterfaceDirectEntries() const;
|
||||
cmBTStringRange GetLinkInterfaceDirectExcludeEntries() const;
|
||||
|
||||
cmBTStringRange GetHeaderSetsEntries() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user