Refactor: Convert parallel string/backtrace vectors to BT vectors
This commit is contained in:
parent
80e0245e0e
commit
ab94c369c9
@ -60,6 +60,10 @@ class cmListFileBacktrace;
|
||||
using cmBacktraceRange =
|
||||
cmRange<std::vector<cmListFileBacktrace>::const_iterator>;
|
||||
|
||||
template <typename T>
|
||||
class BT;
|
||||
using cmBTStringRange = cmRange<std::vector<BT<std::string>>::const_iterator>;
|
||||
|
||||
template <typename Range>
|
||||
typename Range::const_iterator cmRemoveN(Range& r, size_t n)
|
||||
{
|
||||
|
@ -173,7 +173,7 @@ void CCONV cmAddLinkDirectoryForTarget(void* arg, const char* tgt,
|
||||
std::string(tgt) + " for directory " + std::string(d));
|
||||
return;
|
||||
}
|
||||
t->InsertLinkDirectory(d, mf->GetBacktrace());
|
||||
t->InsertLinkDirectory(BT<std::string>(d, mf->GetBacktrace()));
|
||||
}
|
||||
|
||||
void CCONV cmAddExecutable(void* arg, const char* exename, int numSrcs,
|
||||
|
@ -607,7 +607,7 @@ cmLinkItem cmComputeLinkDepends::ResolveLinkItem(int depender_index,
|
||||
from = depender;
|
||||
}
|
||||
}
|
||||
return from->ResolveLinkItem(name, cmListFileBacktrace());
|
||||
return from->ResolveLinkItem(BT<std::string>(name));
|
||||
}
|
||||
|
||||
void cmComputeLinkDepends::InferDependencies()
|
||||
|
@ -323,7 +323,7 @@ void cmComputeTargetDepends::AddObjectDepends(int depender_index,
|
||||
}
|
||||
cmGeneratorTarget const* depender = this->Targets[depender_index];
|
||||
cmLinkItem const& objItem =
|
||||
depender->ResolveLinkItem(objLib, cmListFileBacktrace());
|
||||
depender->ResolveLinkItem(BT<std::string>(objLib));
|
||||
if (emitted.insert(objItem).second) {
|
||||
if (depender->GetType() != cmStateEnums::EXECUTABLE &&
|
||||
depender->GetType() != cmStateEnums::STATIC_LIBRARY &&
|
||||
|
@ -145,12 +145,10 @@ private:
|
||||
class TargetPropertyEntryString : public cmGeneratorTarget::TargetPropertyEntry
|
||||
{
|
||||
public:
|
||||
TargetPropertyEntryString(std::string propertyValue,
|
||||
cmListFileBacktrace backtrace,
|
||||
TargetPropertyEntryString(BT<std::string> propertyValue,
|
||||
cmLinkImplItem const& item = NoLinkImplItem)
|
||||
: cmGeneratorTarget::TargetPropertyEntry(item)
|
||||
, PropertyValue(std::move(propertyValue))
|
||||
, Backtrace(std::move(backtrace))
|
||||
{
|
||||
}
|
||||
|
||||
@ -159,46 +157,46 @@ public:
|
||||
cmGeneratorExpressionDAGChecker*,
|
||||
std::string const&) const override
|
||||
{
|
||||
return this->PropertyValue;
|
||||
return this->PropertyValue.Value;
|
||||
}
|
||||
|
||||
cmListFileBacktrace GetBacktrace() const override { return this->Backtrace; }
|
||||
std::string const& GetInput() const override { return this->PropertyValue; }
|
||||
cmListFileBacktrace GetBacktrace() const override
|
||||
{
|
||||
return this->PropertyValue.Backtrace;
|
||||
}
|
||||
std::string const& GetInput() const override
|
||||
{
|
||||
return this->PropertyValue.Value;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string PropertyValue;
|
||||
cmListFileBacktrace Backtrace;
|
||||
BT<std::string> PropertyValue;
|
||||
};
|
||||
|
||||
std::unique_ptr<cmGeneratorTarget::TargetPropertyEntry>
|
||||
CreateTargetPropertyEntry(
|
||||
const std::string& propertyValue,
|
||||
cmListFileBacktrace backtrace = cmListFileBacktrace(),
|
||||
bool evaluateForBuildsystem = false)
|
||||
CreateTargetPropertyEntry(const BT<std::string>& propertyValue,
|
||||
bool evaluateForBuildsystem = false)
|
||||
{
|
||||
if (cmGeneratorExpression::Find(propertyValue) != std::string::npos) {
|
||||
cmGeneratorExpression ge(std::move(backtrace));
|
||||
if (cmGeneratorExpression::Find(propertyValue.Value) != std::string::npos) {
|
||||
cmGeneratorExpression ge(propertyValue.Backtrace);
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(propertyValue);
|
||||
ge.Parse(propertyValue.Value);
|
||||
cge->SetEvaluateForBuildsystem(evaluateForBuildsystem);
|
||||
return std::unique_ptr<cmGeneratorTarget::TargetPropertyEntry>(
|
||||
cm::make_unique<TargetPropertyEntryGenex>(std::move(cge)));
|
||||
}
|
||||
|
||||
return std::unique_ptr<cmGeneratorTarget::TargetPropertyEntry>(
|
||||
cm::make_unique<TargetPropertyEntryString>(propertyValue,
|
||||
std::move(backtrace)));
|
||||
cm::make_unique<TargetPropertyEntryString>(propertyValue));
|
||||
}
|
||||
|
||||
void CreatePropertyGeneratorExpressions(
|
||||
cmStringRange entries, cmBacktraceRange backtraces,
|
||||
cmBTStringRange entries,
|
||||
std::vector<std::unique_ptr<cmGeneratorTarget::TargetPropertyEntry>>& items,
|
||||
bool evaluateForBuildsystem = false)
|
||||
{
|
||||
auto btIt = backtraces.begin();
|
||||
for (auto it = entries.begin(); it != entries.end(); ++it, ++btIt) {
|
||||
items.push_back(
|
||||
CreateTargetPropertyEntry(*it, *btIt, evaluateForBuildsystem));
|
||||
for (auto const& entry : entries) {
|
||||
items.push_back(CreateTargetPropertyEntry(entry, evaluateForBuildsystem));
|
||||
}
|
||||
}
|
||||
|
||||
@ -289,35 +287,27 @@ cmGeneratorTarget::cmGeneratorTarget(cmTarget* t, cmLocalGenerator* lg)
|
||||
this->GlobalGenerator->ComputeTargetObjectDirectory(this);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetIncludeDirectoriesEntries(),
|
||||
t->GetIncludeDirectoriesBacktraces(),
|
||||
this->IncludeDirectoriesEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetCompileOptionsEntries(),
|
||||
t->GetCompileOptionsBacktraces(),
|
||||
this->CompileOptionsEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetCompileFeaturesEntries(),
|
||||
t->GetCompileFeaturesBacktraces(),
|
||||
this->CompileFeaturesEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetCompileDefinitionsEntries(),
|
||||
t->GetCompileDefinitionsBacktraces(),
|
||||
this->CompileDefinitionsEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetLinkOptionsEntries(),
|
||||
t->GetLinkOptionsBacktraces(),
|
||||
this->LinkOptionsEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetLinkDirectoriesEntries(),
|
||||
t->GetLinkDirectoriesBacktraces(),
|
||||
this->LinkDirectoriesEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetPrecompileHeadersEntries(),
|
||||
t->GetPrecompileHeadersBacktraces(),
|
||||
this->PrecompileHeadersEntries);
|
||||
|
||||
CreatePropertyGeneratorExpressions(t->GetSourceEntries(),
|
||||
t->GetSourceBacktraces(),
|
||||
this->SourceEntries, true);
|
||||
|
||||
this->PolicyMap = t->GetPolicyMap();
|
||||
@ -698,7 +688,8 @@ void cmGeneratorTarget::AddSourceCommon(const std::string& src, bool before)
|
||||
{
|
||||
this->SourceEntries.insert(
|
||||
before ? this->SourceEntries.begin() : this->SourceEntries.end(),
|
||||
CreateTargetPropertyEntry(src, this->Makefile->GetBacktrace(), true));
|
||||
CreateTargetPropertyEntry(
|
||||
BT<std::string>(src, this->Makefile->GetBacktrace()), true));
|
||||
this->ClearSourcesCache();
|
||||
}
|
||||
|
||||
@ -719,11 +710,13 @@ void cmGeneratorTarget::AddTracedSources(std::vector<std::string> const& srcs)
|
||||
void cmGeneratorTarget::AddIncludeDirectory(const std::string& src,
|
||||
bool before)
|
||||
{
|
||||
this->Target->InsertInclude(src, this->Makefile->GetBacktrace(), before);
|
||||
this->Target->InsertInclude(
|
||||
BT<std::string>(src, this->Makefile->GetBacktrace()), before);
|
||||
this->IncludeDirectoriesEntries.insert(
|
||||
before ? this->IncludeDirectoriesEntries.begin()
|
||||
: this->IncludeDirectoriesEntries.end(),
|
||||
CreateTargetPropertyEntry(src, this->Makefile->GetBacktrace(), true));
|
||||
CreateTargetPropertyEntry(
|
||||
BT<std::string>(src, this->Makefile->GetBacktrace()), true));
|
||||
}
|
||||
|
||||
std::vector<cmSourceFile*> const* cmGeneratorTarget::GetSourceDepends(
|
||||
@ -1675,9 +1668,9 @@ std::vector<BT<std::string>> cmGeneratorTarget::GetSourceFilePaths(
|
||||
// for TARGET_OBJECTS instead for backwards compatibility with OLD
|
||||
// behavior of CMP0024 and CMP0026 only.
|
||||
|
||||
cmStringRange sourceEntries = this->Target->GetSourceEntries();
|
||||
for (std::string const& entry : sourceEntries) {
|
||||
std::vector<std::string> items = cmExpandedList(entry);
|
||||
cmBTStringRange sourceEntries = this->Target->GetSourceEntries();
|
||||
for (auto const& entry : sourceEntries) {
|
||||
std::vector<std::string> items = cmExpandedList(entry.Value);
|
||||
for (std::string const& item : items) {
|
||||
if (cmHasLiteralPrefix(item, "$<TARGET_OBJECTS:") &&
|
||||
item.back() == '>') {
|
||||
@ -6364,7 +6357,7 @@ cm::optional<cmLinkItem> cmGeneratorTarget::LookupLinkItem(
|
||||
if (name == this->GetName() || name.empty()) {
|
||||
return maybeItem;
|
||||
}
|
||||
maybeItem = this->ResolveLinkItem(name, bt, scope->LG);
|
||||
maybeItem = this->ResolveLinkItem(BT<std::string>(name, bt), scope->LG);
|
||||
return maybeItem;
|
||||
}
|
||||
|
||||
@ -7377,9 +7370,9 @@ void cmGeneratorTarget::GetObjectLibrariesCMP0026(
|
||||
// there is no cmGeneratorTarget at configure-time, so search the SOURCES
|
||||
// for TARGET_OBJECTS instead for backwards compatibility with OLD
|
||||
// behavior of CMP0024 and CMP0026 only.
|
||||
cmStringRange rng = this->Target->GetSourceEntries();
|
||||
for (std::string const& entry : rng) {
|
||||
std::vector<std::string> files = cmExpandedList(entry);
|
||||
cmBTStringRange rng = this->Target->GetSourceEntries();
|
||||
for (auto const& entry : rng) {
|
||||
std::vector<std::string> files = cmExpandedList(entry.Value);
|
||||
for (std::string const& li : files) {
|
||||
if (cmHasLiteralPrefix(li, "$<TARGET_OBJECTS:") && li.back() == '>') {
|
||||
std::string objLibName = li.substr(17, li.size() - 18);
|
||||
@ -7607,24 +7600,21 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries(
|
||||
{
|
||||
cmLocalGenerator const* lg = this->LocalGenerator;
|
||||
cmMakefile const* mf = lg->GetMakefile();
|
||||
cmStringRange entryRange = this->Target->GetLinkImplementationEntries();
|
||||
cmBacktraceRange btRange = this->Target->GetLinkImplementationBacktraces();
|
||||
cmBacktraceRange::const_iterator btIt = btRange.begin();
|
||||
cmBTStringRange entryRange = this->Target->GetLinkImplementationEntries();
|
||||
// Collect libraries directly linked in this configuration.
|
||||
for (cmStringRange::const_iterator le = entryRange.begin(),
|
||||
end = entryRange.end();
|
||||
le != end; ++le, ++btIt) {
|
||||
for (auto const& entry : entryRange) {
|
||||
std::vector<std::string> llibs;
|
||||
// Keep this logic in sync with ExpandLinkItems.
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this, "LINK_LIBRARIES", nullptr,
|
||||
nullptr);
|
||||
cmGeneratorExpression ge(*btIt);
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> const cge = ge.Parse(*le);
|
||||
cmGeneratorExpression ge(entry.Backtrace);
|
||||
std::unique_ptr<cmCompiledGeneratorExpression> const cge =
|
||||
ge.Parse(entry.Value);
|
||||
cge->SetEvaluateForBuildsystem(true);
|
||||
std::string const& evaluated =
|
||||
cge->Evaluate(this->LocalGenerator, config, head, &dagChecker, nullptr,
|
||||
this->LinkerLanguage);
|
||||
bool const fromGenex = evaluated != *le;
|
||||
bool const fromGenex = evaluated != entry.Value;
|
||||
cmExpandList(evaluated, llibs);
|
||||
if (cge->GetHadHeadSensitiveCondition()) {
|
||||
impl.HadHeadSensitiveCondition = true;
|
||||
@ -7682,7 +7672,8 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries(
|
||||
}
|
||||
|
||||
// The entry is meant for this configuration.
|
||||
cmLinkItem item = this->ResolveLinkItem(name, *btIt, lg);
|
||||
cmLinkItem item =
|
||||
this->ResolveLinkItem(BT<std::string>(name, entry.Backtrace), lg);
|
||||
if (!item.Target) {
|
||||
// Report explicitly linked object files separately.
|
||||
std::string const& maybeObj = item.AsStr();
|
||||
@ -7724,7 +7715,7 @@ void cmGeneratorTarget::ComputeLinkImplementationLibraries(
|
||||
}
|
||||
// Support OLD behavior for CMP0003.
|
||||
impl.WrongConfigLibraries.push_back(
|
||||
this->ResolveLinkItem(name, cmListFileBacktrace()));
|
||||
this->ResolveLinkItem(BT<std::string>(name)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -7750,16 +7741,16 @@ cmGeneratorTarget::TargetOrString cmGeneratorTarget::ResolveTargetReference(
|
||||
}
|
||||
|
||||
cmLinkItem cmGeneratorTarget::ResolveLinkItem(
|
||||
std::string const& name, cmListFileBacktrace const& bt) const
|
||||
BT<std::string> const& name) const
|
||||
{
|
||||
return this->ResolveLinkItem(name, bt, this->LocalGenerator);
|
||||
return this->ResolveLinkItem(name, this->LocalGenerator);
|
||||
}
|
||||
|
||||
cmLinkItem cmGeneratorTarget::ResolveLinkItem(std::string const& name,
|
||||
cmListFileBacktrace const& bt,
|
||||
cmLinkItem cmGeneratorTarget::ResolveLinkItem(BT<std::string> const& name,
|
||||
cmLocalGenerator const* lg) const
|
||||
{
|
||||
TargetOrString resolved = this->ResolveTargetReference(name, lg);
|
||||
auto bt = name.Backtrace;
|
||||
TargetOrString resolved = this->ResolveTargetReference(name.Value, lg);
|
||||
|
||||
if (!resolved.Target) {
|
||||
return cmLinkItem(resolved.String, false, bt);
|
||||
|
@ -409,10 +409,8 @@ public:
|
||||
TargetOrString ResolveTargetReference(std::string const& name,
|
||||
cmLocalGenerator const* lg) const;
|
||||
|
||||
cmLinkItem ResolveLinkItem(std::string const& name,
|
||||
cmListFileBacktrace const& bt) const;
|
||||
cmLinkItem ResolveLinkItem(std::string const& name,
|
||||
cmListFileBacktrace const& bt,
|
||||
cmLinkItem ResolveLinkItem(BT<std::string> const& name) const;
|
||||
cmLinkItem ResolveLinkItem(BT<std::string> const& name,
|
||||
cmLocalGenerator const* lg) const;
|
||||
|
||||
// Compute the set of languages compiled by the target. This is
|
||||
|
@ -1718,10 +1718,8 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo()
|
||||
|
||||
// Construct per-target generator information.
|
||||
for (const auto& mf : this->Makefiles) {
|
||||
const cmStringRange noconfig_compile_definitions =
|
||||
const cmBTStringRange noconfig_compile_definitions =
|
||||
mf->GetCompileDefinitionsEntries();
|
||||
const cmBacktraceRange noconfig_compile_definitions_bts =
|
||||
mf->GetCompileDefinitionsBacktraces();
|
||||
|
||||
for (auto& target : mf->GetTargets()) {
|
||||
cmTarget* t = &target.second;
|
||||
@ -1735,12 +1733,8 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo()
|
||||
continue;
|
||||
}
|
||||
|
||||
{
|
||||
auto btIt = noconfig_compile_definitions_bts.begin();
|
||||
auto it = noconfig_compile_definitions.begin();
|
||||
for (; it != noconfig_compile_definitions.end(); ++it, ++btIt) {
|
||||
t->InsertCompileDefinition(*it, *btIt);
|
||||
}
|
||||
for (auto const& def : noconfig_compile_definitions) {
|
||||
t->InsertCompileDefinition(def);
|
||||
}
|
||||
|
||||
cmPolicies::PolicyStatus polSt =
|
||||
|
@ -212,59 +212,31 @@ void cmMakefile::MaybeWarnCMP0074(std::string const& pkg)
|
||||
}
|
||||
}
|
||||
|
||||
cmStringRange cmMakefile::GetIncludeDirectoriesEntries() const
|
||||
cmBTStringRange cmMakefile::GetIncludeDirectoriesEntries() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetIncludeDirectoriesEntries();
|
||||
}
|
||||
|
||||
cmBacktraceRange cmMakefile::GetIncludeDirectoriesBacktraces() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory()
|
||||
.GetIncludeDirectoriesEntryBacktraces();
|
||||
}
|
||||
|
||||
cmStringRange cmMakefile::GetCompileOptionsEntries() const
|
||||
cmBTStringRange cmMakefile::GetCompileOptionsEntries() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetCompileOptionsEntries();
|
||||
}
|
||||
|
||||
cmBacktraceRange cmMakefile::GetCompileOptionsBacktraces() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetCompileOptionsEntryBacktraces();
|
||||
}
|
||||
|
||||
cmStringRange cmMakefile::GetCompileDefinitionsEntries() const
|
||||
cmBTStringRange cmMakefile::GetCompileDefinitionsEntries() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetCompileDefinitionsEntries();
|
||||
}
|
||||
|
||||
cmBacktraceRange cmMakefile::GetCompileDefinitionsBacktraces() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory()
|
||||
.GetCompileDefinitionsEntryBacktraces();
|
||||
}
|
||||
|
||||
cmStringRange cmMakefile::GetLinkOptionsEntries() const
|
||||
cmBTStringRange cmMakefile::GetLinkOptionsEntries() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetLinkOptionsEntries();
|
||||
}
|
||||
|
||||
cmBacktraceRange cmMakefile::GetLinkOptionsBacktraces() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetLinkOptionsEntryBacktraces();
|
||||
}
|
||||
|
||||
cmStringRange cmMakefile::GetLinkDirectoriesEntries() const
|
||||
cmBTStringRange cmMakefile::GetLinkDirectoriesEntries() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory().GetLinkDirectoriesEntries();
|
||||
}
|
||||
|
||||
cmBacktraceRange cmMakefile::GetLinkDirectoriesBacktraces() const
|
||||
{
|
||||
return this->StateSnapshot.GetDirectory()
|
||||
.GetLinkDirectoriesEntryBacktraces();
|
||||
}
|
||||
|
||||
cmListFileBacktrace cmMakefile::GetBacktrace() const
|
||||
{
|
||||
return this->Backtrace;
|
||||
@ -1386,10 +1358,10 @@ void cmMakefile::AddLinkDirectory(std::string const& directory, bool before)
|
||||
{
|
||||
if (before) {
|
||||
this->StateSnapshot.GetDirectory().PrependLinkDirectoriesEntry(
|
||||
directory, this->Backtrace);
|
||||
BT<std::string>(directory, this->Backtrace));
|
||||
} else {
|
||||
this->StateSnapshot.GetDirectory().AppendLinkDirectoriesEntry(
|
||||
directory, this->Backtrace);
|
||||
BT<std::string>(directory, this->Backtrace));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1876,16 +1848,16 @@ void cmMakefile::AddIncludeDirectories(const std::vector<std::string>& incs,
|
||||
std::string entryString = cmJoin(incs, ";");
|
||||
if (before) {
|
||||
this->StateSnapshot.GetDirectory().PrependIncludeDirectoriesEntry(
|
||||
entryString, this->Backtrace);
|
||||
BT<std::string>(entryString, this->Backtrace));
|
||||
} else {
|
||||
this->StateSnapshot.GetDirectory().AppendIncludeDirectoriesEntry(
|
||||
entryString, this->Backtrace);
|
||||
BT<std::string>(entryString, this->Backtrace));
|
||||
}
|
||||
|
||||
// Property on each target:
|
||||
for (auto& target : this->Targets) {
|
||||
cmTarget& t = target.second;
|
||||
t.InsertInclude(entryString, this->Backtrace, before);
|
||||
t.InsertInclude(BT<std::string>(entryString, this->Backtrace), before);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,6 @@
|
||||
#include "cmSourceFileLocationKind.h"
|
||||
#include "cmStateSnapshot.h"
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmStringAlgorithms.h"
|
||||
|
||||
// IWYU does not see that 'std::unordered_map<std::string, cmTarget>'
|
||||
// will not compile without the complete type.
|
||||
@ -879,16 +878,11 @@ public:
|
||||
bool CheckCMP0037(std::string const& targetName,
|
||||
cmStateEnums::TargetType targetType) const;
|
||||
|
||||
cmStringRange GetIncludeDirectoriesEntries() const;
|
||||
cmBacktraceRange GetIncludeDirectoriesBacktraces() const;
|
||||
cmStringRange GetCompileOptionsEntries() const;
|
||||
cmBacktraceRange GetCompileOptionsBacktraces() const;
|
||||
cmStringRange GetCompileDefinitionsEntries() const;
|
||||
cmBacktraceRange GetCompileDefinitionsBacktraces() const;
|
||||
cmStringRange GetLinkOptionsEntries() const;
|
||||
cmBacktraceRange GetLinkOptionsBacktraces() const;
|
||||
cmStringRange GetLinkDirectoriesEntries() const;
|
||||
cmBacktraceRange GetLinkDirectoriesBacktraces() const;
|
||||
cmBTStringRange GetIncludeDirectoriesEntries() const;
|
||||
cmBTStringRange GetCompileOptionsEntries() const;
|
||||
cmBTStringRange GetCompileDefinitionsEntries() const;
|
||||
cmBTStringRange GetLinkOptionsEntries() const;
|
||||
cmBTStringRange GetLinkDirectoriesEntries() const;
|
||||
|
||||
std::set<std::string> const& GetSystemIncludeDirectories() const
|
||||
{
|
||||
|
@ -277,15 +277,10 @@ cmStateSnapshot cmState::Reset()
|
||||
cmLinkedTree<cmStateDetail::BuildsystemDirectoryStateType>::iterator it =
|
||||
this->BuildsystemDirectory.Truncate();
|
||||
it->IncludeDirectories.clear();
|
||||
it->IncludeDirectoryBacktraces.clear();
|
||||
it->CompileDefinitions.clear();
|
||||
it->CompileDefinitionsBacktraces.clear();
|
||||
it->CompileOptions.clear();
|
||||
it->CompileOptionsBacktraces.clear();
|
||||
it->LinkOptions.clear();
|
||||
it->LinkOptionsBacktraces.clear();
|
||||
it->LinkDirectories.clear();
|
||||
it->LinkDirectoriesBacktraces.clear();
|
||||
it->DirectoryEnd = pos;
|
||||
it->NormalTargetNames.clear();
|
||||
it->ImportedTargetNames.clear();
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "cmState.h"
|
||||
#include "cmStatePrivate.h"
|
||||
#include "cmStateTypes.h"
|
||||
#include "cmStringAlgorithms.h"
|
||||
#include "cmSystemTools.h"
|
||||
|
||||
static std::string const kBINARY_DIR = "BINARY_DIR";
|
||||
@ -63,7 +64,7 @@ cmStateDirectory::cmStateDirectory(
|
||||
}
|
||||
|
||||
template <typename T, typename U>
|
||||
cmStringRange GetPropertyContent(T const& content, U contentEndPosition)
|
||||
cmBTStringRange GetPropertyContent(T const& content, U contentEndPosition)
|
||||
{
|
||||
auto end = content.begin() + contentEndPosition;
|
||||
|
||||
@ -73,88 +74,59 @@ cmStringRange GetPropertyContent(T const& content, U contentEndPosition)
|
||||
return cmMakeRange(rbegin.base(), end);
|
||||
}
|
||||
|
||||
template <typename T, typename U, typename V>
|
||||
cmBacktraceRange GetPropertyBacktraces(T const& content, U const& backtraces,
|
||||
V contentEndPosition)
|
||||
template <typename T, typename U>
|
||||
void AppendEntry(T& content, U& endContentPosition,
|
||||
const BT<std::string>& value)
|
||||
{
|
||||
auto entryEnd = content.begin() + contentEndPosition;
|
||||
|
||||
auto rbegin = cm::make_reverse_iterator(entryEnd);
|
||||
rbegin = std::find(rbegin, content.rend(), cmPropertySentinal);
|
||||
|
||||
auto it = backtraces.begin() + std::distance(content.begin(), rbegin.base());
|
||||
|
||||
auto end = backtraces.end();
|
||||
return cmMakeRange(it, end);
|
||||
}
|
||||
|
||||
template <typename T, typename U, typename V>
|
||||
void AppendEntry(T& content, U& backtraces, V& endContentPosition,
|
||||
const std::string& value, const cmListFileBacktrace& lfbt)
|
||||
{
|
||||
if (value.empty()) {
|
||||
if (value.Value.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
assert(endContentPosition == content.size());
|
||||
|
||||
content.push_back(value);
|
||||
backtraces.push_back(lfbt);
|
||||
|
||||
endContentPosition = content.size();
|
||||
}
|
||||
|
||||
template <typename T, typename U, typename V>
|
||||
void SetContent(T& content, U& backtraces, V& endContentPosition,
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
template <typename T, typename U>
|
||||
void SetContent(T& content, U& endContentPosition, const BT<std::string>& vec)
|
||||
{
|
||||
assert(endContentPosition == content.size());
|
||||
|
||||
content.resize(content.size() + 2);
|
||||
backtraces.resize(backtraces.size() + 2);
|
||||
|
||||
content.back() = vec;
|
||||
backtraces.back() = lfbt;
|
||||
|
||||
endContentPosition = content.size();
|
||||
}
|
||||
|
||||
template <typename T, typename U, typename V>
|
||||
void ClearContent(T& content, U& backtraces, V& endContentPosition)
|
||||
template <typename T, typename U>
|
||||
void ClearContent(T& content, U& endContentPosition)
|
||||
{
|
||||
assert(endContentPosition == content.size());
|
||||
|
||||
content.resize(content.size() + 1);
|
||||
backtraces.resize(backtraces.size() + 1);
|
||||
|
||||
endContentPosition = content.size();
|
||||
}
|
||||
|
||||
cmStringRange cmStateDirectory::GetIncludeDirectoriesEntries() const
|
||||
cmBTStringRange cmStateDirectory::GetIncludeDirectoriesEntries() const
|
||||
{
|
||||
return GetPropertyContent(
|
||||
this->DirectoryState->IncludeDirectories,
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmStateDirectory::GetIncludeDirectoriesEntryBacktraces() const
|
||||
{
|
||||
return GetPropertyBacktraces(
|
||||
this->DirectoryState->IncludeDirectories,
|
||||
this->DirectoryState->IncludeDirectoryBacktraces,
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition);
|
||||
}
|
||||
|
||||
void cmStateDirectory::AppendIncludeDirectoriesEntry(
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
const BT<std::string>& vec)
|
||||
{
|
||||
AppendEntry(this->DirectoryState->IncludeDirectories,
|
||||
this->DirectoryState->IncludeDirectoryBacktraces,
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::PrependIncludeDirectoriesEntry(
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
const BT<std::string>& vec)
|
||||
{
|
||||
auto entryEnd = this->DirectoryState->IncludeDirectories.begin() +
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition;
|
||||
@ -164,167 +136,111 @@ void cmStateDirectory::PrependIncludeDirectoriesEntry(
|
||||
rbegin = std::find(rbegin, rend, cmPropertySentinal);
|
||||
|
||||
auto entryIt = rbegin.base();
|
||||
auto entryBegin = this->DirectoryState->IncludeDirectories.begin();
|
||||
|
||||
auto btIt = this->DirectoryState->IncludeDirectoryBacktraces.begin() +
|
||||
std::distance(entryBegin, entryIt);
|
||||
|
||||
this->DirectoryState->IncludeDirectories.insert(entryIt, vec);
|
||||
this->DirectoryState->IncludeDirectoryBacktraces.insert(btIt, lfbt);
|
||||
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition =
|
||||
this->DirectoryState->IncludeDirectories.size();
|
||||
}
|
||||
|
||||
void cmStateDirectory::SetIncludeDirectories(const std::string& vec,
|
||||
const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::SetIncludeDirectories(const BT<std::string>& vec)
|
||||
{
|
||||
SetContent(this->DirectoryState->IncludeDirectories,
|
||||
this->DirectoryState->IncludeDirectoryBacktraces,
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::ClearIncludeDirectories()
|
||||
{
|
||||
ClearContent(this->DirectoryState->IncludeDirectories,
|
||||
this->DirectoryState->IncludeDirectoryBacktraces,
|
||||
this->Snapshot_.Position->IncludeDirectoryPosition);
|
||||
}
|
||||
|
||||
cmStringRange cmStateDirectory::GetCompileDefinitionsEntries() const
|
||||
cmBTStringRange cmStateDirectory::GetCompileDefinitionsEntries() const
|
||||
{
|
||||
return GetPropertyContent(
|
||||
this->DirectoryState->CompileDefinitions,
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmStateDirectory::GetCompileDefinitionsEntryBacktraces() const
|
||||
{
|
||||
return GetPropertyBacktraces(
|
||||
this->DirectoryState->CompileDefinitions,
|
||||
this->DirectoryState->CompileDefinitionsBacktraces,
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition);
|
||||
}
|
||||
|
||||
void cmStateDirectory::AppendCompileDefinitionsEntry(
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
const BT<std::string>& vec)
|
||||
{
|
||||
AppendEntry(this->DirectoryState->CompileDefinitions,
|
||||
this->DirectoryState->CompileDefinitionsBacktraces,
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::SetCompileDefinitions(const std::string& vec,
|
||||
const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::SetCompileDefinitions(const BT<std::string>& vec)
|
||||
{
|
||||
SetContent(this->DirectoryState->CompileDefinitions,
|
||||
this->DirectoryState->CompileDefinitionsBacktraces,
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::ClearCompileDefinitions()
|
||||
{
|
||||
ClearContent(this->DirectoryState->CompileDefinitions,
|
||||
this->DirectoryState->CompileDefinitionsBacktraces,
|
||||
this->Snapshot_.Position->CompileDefinitionsPosition);
|
||||
}
|
||||
|
||||
cmStringRange cmStateDirectory::GetCompileOptionsEntries() const
|
||||
cmBTStringRange cmStateDirectory::GetCompileOptionsEntries() const
|
||||
{
|
||||
return GetPropertyContent(this->DirectoryState->CompileOptions,
|
||||
this->Snapshot_.Position->CompileOptionsPosition);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmStateDirectory::GetCompileOptionsEntryBacktraces() const
|
||||
{
|
||||
return GetPropertyBacktraces(
|
||||
this->DirectoryState->CompileOptions,
|
||||
this->DirectoryState->CompileOptionsBacktraces,
|
||||
this->Snapshot_.Position->CompileOptionsPosition);
|
||||
}
|
||||
|
||||
void cmStateDirectory::AppendCompileOptionsEntry(
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::AppendCompileOptionsEntry(const BT<std::string>& vec)
|
||||
{
|
||||
AppendEntry(this->DirectoryState->CompileOptions,
|
||||
this->DirectoryState->CompileOptionsBacktraces,
|
||||
this->Snapshot_.Position->CompileOptionsPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->CompileOptionsPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::SetCompileOptions(const std::string& vec,
|
||||
const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::SetCompileOptions(const BT<std::string>& vec)
|
||||
{
|
||||
SetContent(this->DirectoryState->CompileOptions,
|
||||
this->DirectoryState->CompileOptionsBacktraces,
|
||||
this->Snapshot_.Position->CompileOptionsPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->CompileOptionsPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::ClearCompileOptions()
|
||||
{
|
||||
ClearContent(this->DirectoryState->CompileOptions,
|
||||
this->DirectoryState->CompileOptionsBacktraces,
|
||||
this->Snapshot_.Position->CompileOptionsPosition);
|
||||
}
|
||||
|
||||
cmStringRange cmStateDirectory::GetLinkOptionsEntries() const
|
||||
cmBTStringRange cmStateDirectory::GetLinkOptionsEntries() const
|
||||
{
|
||||
return GetPropertyContent(this->DirectoryState->LinkOptions,
|
||||
this->Snapshot_.Position->LinkOptionsPosition);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmStateDirectory::GetLinkOptionsEntryBacktraces() const
|
||||
{
|
||||
return GetPropertyBacktraces(this->DirectoryState->LinkOptions,
|
||||
this->DirectoryState->LinkOptionsBacktraces,
|
||||
this->Snapshot_.Position->LinkOptionsPosition);
|
||||
}
|
||||
|
||||
void cmStateDirectory::AppendLinkOptionsEntry(const std::string& vec,
|
||||
const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::AppendLinkOptionsEntry(const BT<std::string>& vec)
|
||||
{
|
||||
AppendEntry(this->DirectoryState->LinkOptions,
|
||||
this->DirectoryState->LinkOptionsBacktraces,
|
||||
this->Snapshot_.Position->LinkOptionsPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->LinkOptionsPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::SetLinkOptions(const std::string& vec,
|
||||
const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::SetLinkOptions(const BT<std::string>& vec)
|
||||
{
|
||||
SetContent(this->DirectoryState->LinkOptions,
|
||||
this->DirectoryState->LinkOptionsBacktraces,
|
||||
this->Snapshot_.Position->LinkOptionsPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->LinkOptionsPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::ClearLinkOptions()
|
||||
{
|
||||
ClearContent(this->DirectoryState->LinkOptions,
|
||||
this->DirectoryState->LinkOptionsBacktraces,
|
||||
this->Snapshot_.Position->LinkOptionsPosition);
|
||||
}
|
||||
|
||||
cmStringRange cmStateDirectory::GetLinkDirectoriesEntries() const
|
||||
cmBTStringRange cmStateDirectory::GetLinkDirectoriesEntries() const
|
||||
{
|
||||
return GetPropertyContent(this->DirectoryState->LinkDirectories,
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmStateDirectory::GetLinkDirectoriesEntryBacktraces() const
|
||||
{
|
||||
return GetPropertyBacktraces(
|
||||
this->DirectoryState->LinkDirectories,
|
||||
this->DirectoryState->LinkDirectoriesBacktraces,
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition);
|
||||
}
|
||||
|
||||
void cmStateDirectory::AppendLinkDirectoriesEntry(
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::AppendLinkDirectoriesEntry(const BT<std::string>& vec)
|
||||
{
|
||||
AppendEntry(this->DirectoryState->LinkDirectories,
|
||||
this->DirectoryState->LinkDirectoriesBacktraces,
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition, vec);
|
||||
}
|
||||
void cmStateDirectory::PrependLinkDirectoriesEntry(
|
||||
const std::string& vec, const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::PrependLinkDirectoriesEntry(const BT<std::string>& vec)
|
||||
{
|
||||
auto entryEnd = this->DirectoryState->LinkDirectories.begin() +
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition;
|
||||
@ -334,30 +250,22 @@ void cmStateDirectory::PrependLinkDirectoriesEntry(
|
||||
rbegin = std::find(rbegin, rend, cmPropertySentinal);
|
||||
|
||||
auto entryIt = rbegin.base();
|
||||
auto entryBegin = this->DirectoryState->LinkDirectories.begin();
|
||||
|
||||
auto btIt = this->DirectoryState->LinkDirectoriesBacktraces.begin() +
|
||||
std::distance(entryBegin, entryIt);
|
||||
|
||||
this->DirectoryState->LinkDirectories.insert(entryIt, vec);
|
||||
this->DirectoryState->LinkDirectoriesBacktraces.insert(btIt, lfbt);
|
||||
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition =
|
||||
this->DirectoryState->LinkDirectories.size();
|
||||
}
|
||||
|
||||
void cmStateDirectory::SetLinkDirectories(const std::string& vec,
|
||||
const cmListFileBacktrace& lfbt)
|
||||
void cmStateDirectory::SetLinkDirectories(const BT<std::string>& vec)
|
||||
{
|
||||
SetContent(this->DirectoryState->LinkDirectories,
|
||||
this->DirectoryState->LinkDirectoriesBacktraces,
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition, vec, lfbt);
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition, vec);
|
||||
}
|
||||
|
||||
void cmStateDirectory::ClearLinkDirectories()
|
||||
{
|
||||
ClearContent(this->DirectoryState->LinkDirectories,
|
||||
this->DirectoryState->LinkDirectoriesBacktraces,
|
||||
this->Snapshot_.Position->LinkDirectoriesPosition);
|
||||
}
|
||||
|
||||
@ -370,7 +278,7 @@ void cmStateDirectory::StoreProperty(const std::string& prop, ValueType value,
|
||||
this->ClearIncludeDirectories();
|
||||
return;
|
||||
}
|
||||
this->SetIncludeDirectories(value, lfbt);
|
||||
this->SetIncludeDirectories(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "COMPILE_OPTIONS") {
|
||||
@ -378,7 +286,7 @@ void cmStateDirectory::StoreProperty(const std::string& prop, ValueType value,
|
||||
this->ClearCompileOptions();
|
||||
return;
|
||||
}
|
||||
this->SetCompileOptions(value, lfbt);
|
||||
this->SetCompileOptions(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "COMPILE_DEFINITIONS") {
|
||||
@ -386,7 +294,7 @@ void cmStateDirectory::StoreProperty(const std::string& prop, ValueType value,
|
||||
this->ClearCompileDefinitions();
|
||||
return;
|
||||
}
|
||||
this->SetCompileDefinitions(value, lfbt);
|
||||
this->SetCompileDefinitions(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "LINK_OPTIONS") {
|
||||
@ -394,7 +302,7 @@ void cmStateDirectory::StoreProperty(const std::string& prop, ValueType value,
|
||||
this->ClearLinkOptions();
|
||||
return;
|
||||
}
|
||||
this->SetLinkOptions(value, lfbt);
|
||||
this->SetLinkOptions(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "LINK_DIRECTORIES") {
|
||||
@ -402,7 +310,7 @@ void cmStateDirectory::StoreProperty(const std::string& prop, ValueType value,
|
||||
this->ClearLinkDirectories();
|
||||
return;
|
||||
}
|
||||
this->SetLinkDirectories(value, lfbt);
|
||||
this->SetLinkDirectories(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -425,23 +333,23 @@ void cmStateDirectory::AppendProperty(const std::string& prop,
|
||||
cmListFileBacktrace const& lfbt)
|
||||
{
|
||||
if (prop == "INCLUDE_DIRECTORIES") {
|
||||
this->AppendIncludeDirectoriesEntry(value, lfbt);
|
||||
this->AppendIncludeDirectoriesEntry(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "COMPILE_OPTIONS") {
|
||||
this->AppendCompileOptionsEntry(value, lfbt);
|
||||
this->AppendCompileOptionsEntry(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "COMPILE_DEFINITIONS") {
|
||||
this->AppendCompileDefinitionsEntry(value, lfbt);
|
||||
this->AppendCompileDefinitionsEntry(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "LINK_OPTIONS") {
|
||||
this->AppendLinkOptionsEntry(value, lfbt);
|
||||
this->AppendLinkOptionsEntry(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
if (prop == "LINK_DIRECTORIES") {
|
||||
this->AppendLinkDirectoriesEntry(value, lfbt);
|
||||
this->AppendLinkDirectoriesEntry(BT<std::string>(value, lfbt));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,6 @@
|
||||
#include "cmProperty.h"
|
||||
#include "cmStatePrivate.h"
|
||||
#include "cmStateSnapshot.h"
|
||||
#include "cmStringAlgorithms.h"
|
||||
|
||||
class cmStateDirectory
|
||||
{
|
||||
@ -28,47 +27,31 @@ public:
|
||||
std::string const& GetCurrentBinary() const;
|
||||
void SetCurrentBinary(std::string const& dir);
|
||||
|
||||
cmStringRange GetIncludeDirectoriesEntries() const;
|
||||
cmBacktraceRange GetIncludeDirectoriesEntryBacktraces() const;
|
||||
void AppendIncludeDirectoriesEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void PrependIncludeDirectoriesEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void SetIncludeDirectories(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
cmBTStringRange GetIncludeDirectoriesEntries() const;
|
||||
void AppendIncludeDirectoriesEntry(BT<std::string> const& vec);
|
||||
void PrependIncludeDirectoriesEntry(BT<std::string> const& vec);
|
||||
void SetIncludeDirectories(BT<std::string> const& vec);
|
||||
void ClearIncludeDirectories();
|
||||
|
||||
cmStringRange GetCompileDefinitionsEntries() const;
|
||||
cmBacktraceRange GetCompileDefinitionsEntryBacktraces() const;
|
||||
void AppendCompileDefinitionsEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void SetCompileDefinitions(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
cmBTStringRange GetCompileDefinitionsEntries() const;
|
||||
void AppendCompileDefinitionsEntry(BT<std::string> const& vec);
|
||||
void SetCompileDefinitions(BT<std::string> const& vec);
|
||||
void ClearCompileDefinitions();
|
||||
|
||||
cmStringRange GetCompileOptionsEntries() const;
|
||||
cmBacktraceRange GetCompileOptionsEntryBacktraces() const;
|
||||
void AppendCompileOptionsEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void SetCompileOptions(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
cmBTStringRange GetCompileOptionsEntries() const;
|
||||
void AppendCompileOptionsEntry(BT<std::string> const& vec);
|
||||
void SetCompileOptions(BT<std::string> const& vec);
|
||||
void ClearCompileOptions();
|
||||
|
||||
cmStringRange GetLinkOptionsEntries() const;
|
||||
cmBacktraceRange GetLinkOptionsEntryBacktraces() const;
|
||||
void AppendLinkOptionsEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void PrependLinkDirectoriesEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void SetLinkOptions(std::string const& vec, cmListFileBacktrace const& lfbt);
|
||||
cmBTStringRange GetLinkOptionsEntries() const;
|
||||
void AppendLinkOptionsEntry(BT<std::string> const& vec);
|
||||
void PrependLinkDirectoriesEntry(BT<std::string> const& vec);
|
||||
void SetLinkOptions(BT<std::string> const& vec);
|
||||
void ClearLinkOptions();
|
||||
|
||||
cmStringRange GetLinkDirectoriesEntries() const;
|
||||
cmBacktraceRange GetLinkDirectoriesEntryBacktraces() const;
|
||||
void AppendLinkDirectoriesEntry(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
void SetLinkDirectories(std::string const& vec,
|
||||
cmListFileBacktrace const& lfbt);
|
||||
cmBTStringRange GetLinkDirectoriesEntries() const;
|
||||
void AppendLinkDirectoriesEntry(BT<std::string> const& vec);
|
||||
void SetLinkDirectories(BT<std::string> const& vecs);
|
||||
void ClearLinkDirectories();
|
||||
|
||||
void SetProperty(const std::string& prop, const char* value,
|
||||
|
@ -67,20 +67,15 @@ struct cmStateDetail::BuildsystemDirectoryStateType
|
||||
std::string Location;
|
||||
std::string OutputLocation;
|
||||
|
||||
std::vector<std::string> IncludeDirectories;
|
||||
std::vector<cmListFileBacktrace> IncludeDirectoryBacktraces;
|
||||
std::vector<BT<std::string>> IncludeDirectories;
|
||||
|
||||
std::vector<std::string> CompileDefinitions;
|
||||
std::vector<cmListFileBacktrace> CompileDefinitionsBacktraces;
|
||||
std::vector<BT<std::string>> CompileDefinitions;
|
||||
|
||||
std::vector<std::string> CompileOptions;
|
||||
std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
|
||||
std::vector<BT<std::string>> CompileOptions;
|
||||
|
||||
std::vector<std::string> LinkOptions;
|
||||
std::vector<cmListFileBacktrace> LinkOptionsBacktraces;
|
||||
std::vector<BT<std::string>> LinkOptions;
|
||||
|
||||
std::vector<std::string> LinkDirectories;
|
||||
std::vector<cmListFileBacktrace> LinkDirectoriesBacktraces;
|
||||
std::vector<BT<std::string>> LinkDirectories;
|
||||
|
||||
std::vector<std::string> NormalTargetNames;
|
||||
std::vector<std::string> ImportedTargetNames;
|
||||
|
@ -19,6 +19,10 @@
|
||||
#include "cmSystemTools.h"
|
||||
#include "cmVersion.h"
|
||||
|
||||
#if defined(__CYGWIN__)
|
||||
# include "cmStringAlgorithms.h"
|
||||
#endif
|
||||
|
||||
cmStateSnapshot::cmStateSnapshot(cmState* state)
|
||||
: State(state)
|
||||
{
|
||||
@ -259,12 +263,10 @@ bool cmStateSnapshot::RaiseScope(std::string const& var, const char* varDef)
|
||||
return true;
|
||||
}
|
||||
|
||||
template <typename T, typename U, typename V>
|
||||
template <typename T, typename U>
|
||||
void InitializeContentFromParent(T& parentContent, T& thisContent,
|
||||
U& parentBacktraces, U& thisBacktraces,
|
||||
V& contentEndPosition)
|
||||
U& contentEndPosition)
|
||||
{
|
||||
auto parentBegin = parentContent.begin();
|
||||
auto parentEnd = parentContent.end();
|
||||
|
||||
auto parentRbegin = cm::make_reverse_iterator(parentEnd);
|
||||
@ -272,12 +274,7 @@ void InitializeContentFromParent(T& parentContent, T& thisContent,
|
||||
parentRbegin = std::find(parentRbegin, parentRend, cmPropertySentinal);
|
||||
auto parentIt = parentRbegin.base();
|
||||
|
||||
thisContent = std::vector<std::string>(parentIt, parentEnd);
|
||||
|
||||
auto btIt = parentBacktraces.begin() + std::distance(parentBegin, parentIt);
|
||||
auto btEnd = parentBacktraces.end();
|
||||
|
||||
thisBacktraces = std::vector<cmListFileBacktrace>(btIt, btEnd);
|
||||
thisContent = std::vector<BT<std::string>>(parentIt, parentEnd);
|
||||
|
||||
contentEndPosition = thisContent.size();
|
||||
}
|
||||
@ -359,36 +356,26 @@ void cmStateSnapshot::InitializeFromParent()
|
||||
InitializeContentFromParent(
|
||||
parent->BuildSystemDirectory->IncludeDirectories,
|
||||
this->Position->BuildSystemDirectory->IncludeDirectories,
|
||||
parent->BuildSystemDirectory->IncludeDirectoryBacktraces,
|
||||
this->Position->BuildSystemDirectory->IncludeDirectoryBacktraces,
|
||||
this->Position->IncludeDirectoryPosition);
|
||||
|
||||
InitializeContentFromParent(
|
||||
parent->BuildSystemDirectory->CompileDefinitions,
|
||||
this->Position->BuildSystemDirectory->CompileDefinitions,
|
||||
parent->BuildSystemDirectory->CompileDefinitionsBacktraces,
|
||||
this->Position->BuildSystemDirectory->CompileDefinitionsBacktraces,
|
||||
this->Position->CompileDefinitionsPosition);
|
||||
|
||||
InitializeContentFromParent(
|
||||
parent->BuildSystemDirectory->CompileOptions,
|
||||
this->Position->BuildSystemDirectory->CompileOptions,
|
||||
parent->BuildSystemDirectory->CompileOptionsBacktraces,
|
||||
this->Position->BuildSystemDirectory->CompileOptionsBacktraces,
|
||||
this->Position->CompileOptionsPosition);
|
||||
|
||||
InitializeContentFromParent(
|
||||
parent->BuildSystemDirectory->LinkOptions,
|
||||
this->Position->BuildSystemDirectory->LinkOptions,
|
||||
parent->BuildSystemDirectory->LinkOptionsBacktraces,
|
||||
this->Position->BuildSystemDirectory->LinkOptionsBacktraces,
|
||||
this->Position->LinkOptionsPosition);
|
||||
|
||||
InitializeContentFromParent(
|
||||
parent->BuildSystemDirectory->LinkDirectories,
|
||||
this->Position->BuildSystemDirectory->LinkDirectories,
|
||||
parent->BuildSystemDirectory->LinkDirectoriesBacktraces,
|
||||
this->Position->BuildSystemDirectory->LinkDirectoriesBacktraces,
|
||||
this->Position->LinkDirectoriesPosition);
|
||||
|
||||
cmProp include_regex =
|
||||
|
@ -83,15 +83,15 @@ cmProp cmTargetPropertyComputer::GetSources<cmTarget>(
|
||||
cmTarget const* tgt, cmMessenger* messenger,
|
||||
cmListFileBacktrace const& context)
|
||||
{
|
||||
cmStringRange entries = tgt->GetSourceEntries();
|
||||
cmBTStringRange entries = tgt->GetSourceEntries();
|
||||
if (entries.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::ostringstream ss;
|
||||
const char* sep = "";
|
||||
for (std::string const& entry : entries) {
|
||||
std::vector<std::string> files = cmExpandedList(entry);
|
||||
for (auto const& entry : entries) {
|
||||
std::vector<std::string> files = cmExpandedList(entry.Value);
|
||||
for (std::string const& file : files) {
|
||||
if (cmHasLiteralPrefix(file, "$<TARGET_OBJECTS:") &&
|
||||
file.back() == '>') {
|
||||
@ -187,25 +187,16 @@ public:
|
||||
std::set<std::string> SystemIncludeDirectories;
|
||||
cmTarget::LinkLibraryVectorType OriginalLinkLibraries;
|
||||
std::map<std::string, BTs<std::string>> LanguageStandardProperties;
|
||||
std::vector<std::string> IncludeDirectoriesEntries;
|
||||
std::vector<cmListFileBacktrace> IncludeDirectoriesBacktraces;
|
||||
std::vector<BT<std::string>> IncludeDirectoriesEntries;
|
||||
std::vector<std::string> InstallIncludeDirectoriesEntries;
|
||||
std::vector<std::string> CompileOptionsEntries;
|
||||
std::vector<cmListFileBacktrace> CompileOptionsBacktraces;
|
||||
std::vector<std::string> CompileFeaturesEntries;
|
||||
std::vector<cmListFileBacktrace> CompileFeaturesBacktraces;
|
||||
std::vector<std::string> CompileDefinitionsEntries;
|
||||
std::vector<cmListFileBacktrace> CompileDefinitionsBacktraces;
|
||||
std::vector<std::string> PrecompileHeadersEntries;
|
||||
std::vector<cmListFileBacktrace> PrecompileHeadersBacktraces;
|
||||
std::vector<std::string> SourceEntries;
|
||||
std::vector<cmListFileBacktrace> SourceBacktraces;
|
||||
std::vector<std::string> LinkOptionsEntries;
|
||||
std::vector<cmListFileBacktrace> LinkOptionsBacktraces;
|
||||
std::vector<std::string> LinkDirectoriesEntries;
|
||||
std::vector<cmListFileBacktrace> LinkDirectoriesBacktraces;
|
||||
std::vector<std::string> LinkImplementationPropertyEntries;
|
||||
std::vector<cmListFileBacktrace> LinkImplementationPropertyBacktraces;
|
||||
std::vector<BT<std::string>> CompileOptionsEntries;
|
||||
std::vector<BT<std::string>> CompileFeaturesEntries;
|
||||
std::vector<BT<std::string>> CompileDefinitionsEntries;
|
||||
std::vector<BT<std::string>> PrecompileHeadersEntries;
|
||||
std::vector<BT<std::string>> SourceEntries;
|
||||
std::vector<BT<std::string>> LinkOptionsEntries;
|
||||
std::vector<BT<std::string>> LinkDirectoriesEntries;
|
||||
std::vector<BT<std::string>> LinkImplementationPropertyEntries;
|
||||
std::vector<std::pair<cmTarget::TLLSignature, cmListFileContext>>
|
||||
TLLCommands;
|
||||
cmListFileBacktrace Backtrace;
|
||||
@ -482,8 +473,6 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
|
||||
// of the same directory property:
|
||||
cm::append(this->impl->IncludeDirectoriesEntries,
|
||||
this->impl->Makefile->GetIncludeDirectoriesEntries());
|
||||
cm::append(this->impl->IncludeDirectoriesBacktraces,
|
||||
this->impl->Makefile->GetIncludeDirectoriesBacktraces());
|
||||
|
||||
{
|
||||
auto const& sysInc = this->impl->Makefile->GetSystemIncludeDirectories();
|
||||
@ -493,18 +482,12 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type,
|
||||
|
||||
cm::append(this->impl->CompileOptionsEntries,
|
||||
this->impl->Makefile->GetCompileOptionsEntries());
|
||||
cm::append(this->impl->CompileOptionsBacktraces,
|
||||
this->impl->Makefile->GetCompileOptionsBacktraces());
|
||||
|
||||
cm::append(this->impl->LinkOptionsEntries,
|
||||
this->impl->Makefile->GetLinkOptionsEntries());
|
||||
cm::append(this->impl->LinkOptionsBacktraces,
|
||||
this->impl->Makefile->GetLinkOptionsBacktraces());
|
||||
|
||||
cm::append(this->impl->LinkDirectoriesEntries,
|
||||
this->impl->Makefile->GetLinkDirectoriesEntries());
|
||||
cm::append(this->impl->LinkDirectoriesBacktraces,
|
||||
this->impl->Makefile->GetLinkDirectoriesBacktraces());
|
||||
}
|
||||
|
||||
if (this->impl->TargetType == cmStateEnums::EXECUTABLE) {
|
||||
@ -613,11 +596,9 @@ void cmTarget::SetLanguageStandardProperty(std::string const& lang,
|
||||
const std::string& feature)
|
||||
{
|
||||
cmListFileBacktrace featureBacktrace;
|
||||
for (size_t i = 0; i < this->impl->CompileFeaturesEntries.size(); i++) {
|
||||
if (this->impl->CompileFeaturesEntries[i] == feature) {
|
||||
if (i < this->impl->CompileFeaturesBacktraces.size()) {
|
||||
featureBacktrace = this->impl->CompileFeaturesBacktraces[i];
|
||||
}
|
||||
for (auto const& entry : this->impl->CompileFeaturesEntries) {
|
||||
if (entry.Value == feature) {
|
||||
featureBacktrace = entry.Backtrace;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -729,8 +710,7 @@ void cmTarget::AddTracedSources(std::vector<std::string> const& srcs)
|
||||
{
|
||||
if (!srcs.empty()) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->SourceEntries.push_back(cmJoin(srcs, ";"));
|
||||
this->impl->SourceBacktraces.push_back(lfbt);
|
||||
this->impl->SourceEntries.emplace_back(cmJoin(srcs, ";"), lfbt);
|
||||
}
|
||||
}
|
||||
|
||||
@ -754,8 +734,7 @@ void cmTarget::AddSources(std::vector<std::string> const& srcs)
|
||||
}
|
||||
if (!srcFiles.empty()) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->SourceEntries.push_back(std::move(srcFiles));
|
||||
this->impl->SourceBacktraces.push_back(lfbt);
|
||||
this->impl->SourceEntries.emplace_back(std::move(srcFiles), lfbt);
|
||||
}
|
||||
}
|
||||
|
||||
@ -843,9 +822,9 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
bool operator()(std::string const& entry)
|
||||
bool operator()(BT<std::string> const& entry)
|
||||
{
|
||||
std::vector<std::string> files = cmExpandedList(entry);
|
||||
std::vector<std::string> files = cmExpandedList(entry.Value);
|
||||
std::vector<cmSourceFileLocation> locations;
|
||||
locations.reserve(files.size());
|
||||
std::transform(files.begin(), files.end(), std::back_inserter(locations),
|
||||
@ -866,11 +845,7 @@ cmSourceFile* cmTarget::AddSource(const std::string& src, bool before)
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->SourceEntries.insert(before ? this->impl->SourceEntries.begin()
|
||||
: this->impl->SourceEntries.end(),
|
||||
src);
|
||||
this->impl->SourceBacktraces.insert(
|
||||
before ? this->impl->SourceBacktraces.begin()
|
||||
: this->impl->SourceBacktraces.end(),
|
||||
lfbt);
|
||||
BT<std::string>(src, lfbt));
|
||||
}
|
||||
if (cmGeneratorExpression::Find(src) != std::string::npos) {
|
||||
return nullptr;
|
||||
@ -1087,96 +1062,51 @@ cmStringRange cmTarget::GetInstallIncludeDirectoriesEntries() const
|
||||
return cmMakeRange(this->impl->InstallIncludeDirectoriesEntries);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetIncludeDirectoriesEntries() const
|
||||
cmBTStringRange cmTarget::GetIncludeDirectoriesEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->IncludeDirectoriesEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetIncludeDirectoriesBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->IncludeDirectoriesBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetCompileOptionsEntries() const
|
||||
cmBTStringRange cmTarget::GetCompileOptionsEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->CompileOptionsEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetCompileOptionsBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->CompileOptionsBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetCompileFeaturesEntries() const
|
||||
cmBTStringRange cmTarget::GetCompileFeaturesEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->CompileFeaturesEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetCompileFeaturesBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->CompileFeaturesBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetCompileDefinitionsEntries() const
|
||||
cmBTStringRange cmTarget::GetCompileDefinitionsEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->CompileDefinitionsEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetCompileDefinitionsBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->CompileDefinitionsBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetPrecompileHeadersEntries() const
|
||||
cmBTStringRange cmTarget::GetPrecompileHeadersEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->PrecompileHeadersEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetPrecompileHeadersBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->PrecompileHeadersBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetSourceEntries() const
|
||||
cmBTStringRange cmTarget::GetSourceEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->SourceEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetSourceBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->SourceBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetLinkOptionsEntries() const
|
||||
cmBTStringRange cmTarget::GetLinkOptionsEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkOptionsEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetLinkOptionsBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkOptionsBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetLinkDirectoriesEntries() const
|
||||
cmBTStringRange cmTarget::GetLinkDirectoriesEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkDirectoriesEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetLinkDirectoriesBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkDirectoriesBacktraces);
|
||||
}
|
||||
|
||||
cmStringRange cmTarget::GetLinkImplementationEntries() const
|
||||
cmBTStringRange cmTarget::GetLinkImplementationEntries() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkImplementationPropertyEntries);
|
||||
}
|
||||
|
||||
cmBacktraceRange cmTarget::GetLinkImplementationBacktraces() const
|
||||
{
|
||||
return cmMakeRange(this->impl->LinkImplementationPropertyBacktraces);
|
||||
}
|
||||
|
||||
namespace {
|
||||
#define MAKE_PROP(PROP) const std::string prop##PROP = #PROP
|
||||
MAKE_PROP(C_STANDARD);
|
||||
@ -1270,75 +1200,57 @@ void cmTarget::StoreProperty(const std::string& prop, ValueType value)
|
||||
|
||||
if (prop == propINCLUDE_DIRECTORIES) {
|
||||
this->impl->IncludeDirectoriesEntries.clear();
|
||||
this->impl->IncludeDirectoriesBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->IncludeDirectoriesEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->IncludeDirectoriesBacktraces.push_back(lfbt);
|
||||
this->impl->IncludeDirectoriesEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propCOMPILE_OPTIONS) {
|
||||
this->impl->CompileOptionsEntries.clear();
|
||||
this->impl->CompileOptionsBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->CompileOptionsEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->CompileOptionsBacktraces.push_back(lfbt);
|
||||
this->impl->CompileOptionsEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propCOMPILE_FEATURES) {
|
||||
this->impl->CompileFeaturesEntries.clear();
|
||||
this->impl->CompileFeaturesBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->CompileFeaturesEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->CompileFeaturesBacktraces.push_back(lfbt);
|
||||
this->impl->CompileFeaturesEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propCOMPILE_DEFINITIONS) {
|
||||
this->impl->CompileDefinitionsEntries.clear();
|
||||
this->impl->CompileDefinitionsBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->CompileDefinitionsEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->CompileDefinitionsBacktraces.push_back(lfbt);
|
||||
this->impl->CompileDefinitionsEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propLINK_OPTIONS) {
|
||||
this->impl->LinkOptionsEntries.clear();
|
||||
this->impl->LinkOptionsBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->LinkOptionsEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkOptionsBacktraces.push_back(lfbt);
|
||||
this->impl->LinkOptionsEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propLINK_DIRECTORIES) {
|
||||
this->impl->LinkDirectoriesEntries.clear();
|
||||
this->impl->LinkDirectoriesBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->LinkDirectoriesEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkDirectoriesBacktraces.push_back(lfbt);
|
||||
this->impl->LinkDirectoriesEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propPRECOMPILE_HEADERS) {
|
||||
this->impl->PrecompileHeadersEntries.clear();
|
||||
this->impl->PrecompileHeadersBacktraces.clear();
|
||||
if (value) {
|
||||
this->impl->PrecompileHeadersEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->PrecompileHeadersBacktraces.push_back(lfbt);
|
||||
this->impl->PrecompileHeadersEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propLINK_LIBRARIES) {
|
||||
this->impl->LinkImplementationPropertyEntries.clear();
|
||||
this->impl->LinkImplementationPropertyBacktraces.clear();
|
||||
if (value) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkImplementationPropertyEntries.emplace_back(value);
|
||||
this->impl->LinkImplementationPropertyBacktraces.push_back(lfbt);
|
||||
this->impl->LinkImplementationPropertyEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propSOURCES) {
|
||||
this->impl->SourceEntries.clear();
|
||||
this->impl->SourceBacktraces.clear();
|
||||
if (value) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->SourceEntries.emplace_back(value);
|
||||
this->impl->SourceBacktraces.push_back(lfbt);
|
||||
this->impl->SourceEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == propIMPORTED_GLOBAL) {
|
||||
if (!cmIsOn(value)) {
|
||||
@ -1443,39 +1355,33 @@ void cmTarget::AppendProperty(const std::string& prop,
|
||||
}
|
||||
if (prop == "INCLUDE_DIRECTORIES") {
|
||||
if (!value.empty()) {
|
||||
this->impl->IncludeDirectoriesEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->IncludeDirectoriesBacktraces.push_back(lfbt);
|
||||
this->impl->IncludeDirectoriesEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "COMPILE_OPTIONS") {
|
||||
if (!value.empty()) {
|
||||
this->impl->CompileOptionsEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->CompileOptionsBacktraces.push_back(lfbt);
|
||||
this->impl->CompileOptionsEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "COMPILE_FEATURES") {
|
||||
if (!value.empty()) {
|
||||
this->impl->CompileFeaturesEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->CompileFeaturesBacktraces.push_back(lfbt);
|
||||
this->impl->CompileFeaturesEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "COMPILE_DEFINITIONS") {
|
||||
if (!value.empty()) {
|
||||
this->impl->CompileDefinitionsEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->CompileDefinitionsBacktraces.push_back(lfbt);
|
||||
this->impl->CompileDefinitionsEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "LINK_OPTIONS") {
|
||||
if (!value.empty()) {
|
||||
this->impl->LinkOptionsEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkOptionsBacktraces.push_back(lfbt);
|
||||
this->impl->LinkOptionsEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "LINK_DIRECTORIES") {
|
||||
if (!value.empty()) {
|
||||
this->impl->LinkDirectoriesEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkDirectoriesBacktraces.push_back(lfbt);
|
||||
this->impl->LinkDirectoriesEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "PRECOMPILE_HEADERS") {
|
||||
if (this->GetProperty("PRECOMPILE_HEADERS_REUSE_FROM")) {
|
||||
@ -1487,20 +1393,17 @@ void cmTarget::AppendProperty(const std::string& prop,
|
||||
return;
|
||||
}
|
||||
if (!value.empty()) {
|
||||
this->impl->PrecompileHeadersEntries.emplace_back(value);
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->PrecompileHeadersBacktraces.push_back(lfbt);
|
||||
this->impl->PrecompileHeadersEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "LINK_LIBRARIES") {
|
||||
if (!value.empty()) {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->LinkImplementationPropertyEntries.emplace_back(value);
|
||||
this->impl->LinkImplementationPropertyBacktraces.push_back(lfbt);
|
||||
this->impl->LinkImplementationPropertyEntries.emplace_back(value, lfbt);
|
||||
}
|
||||
} else if (prop == "SOURCES") {
|
||||
cmListFileBacktrace lfbt = this->impl->Makefile->GetBacktrace();
|
||||
this->impl->SourceEntries.emplace_back(value);
|
||||
this->impl->SourceBacktraces.push_back(lfbt);
|
||||
this->impl->SourceEntries.emplace_back(value, lfbt);
|
||||
} else if (cmHasLiteralPrefix(prop, "IMPORTED_LIBNAME")) {
|
||||
this->impl->Makefile->IssueMessage(
|
||||
MessageType::FATAL_ERROR, prop + " property may not be APPENDed.");
|
||||
@ -1550,70 +1453,46 @@ void cmTarget::AppendBuildInterfaceIncludes()
|
||||
}
|
||||
}
|
||||
|
||||
void cmTarget::InsertInclude(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before)
|
||||
void cmTarget::InsertInclude(BT<std::string> const& entry, bool before)
|
||||
{
|
||||
auto position = before ? this->impl->IncludeDirectoriesEntries.begin()
|
||||
: this->impl->IncludeDirectoriesEntries.end();
|
||||
|
||||
auto btPosition = before ? this->impl->IncludeDirectoriesBacktraces.begin()
|
||||
: this->impl->IncludeDirectoriesBacktraces.end();
|
||||
|
||||
this->impl->IncludeDirectoriesEntries.insert(position, entry);
|
||||
this->impl->IncludeDirectoriesBacktraces.insert(btPosition, bt);
|
||||
}
|
||||
|
||||
void cmTarget::InsertCompileOption(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before)
|
||||
void cmTarget::InsertCompileOption(BT<std::string> const& entry, bool before)
|
||||
{
|
||||
auto position = before ? this->impl->CompileOptionsEntries.begin()
|
||||
: this->impl->CompileOptionsEntries.end();
|
||||
|
||||
auto btPosition = before ? this->impl->CompileOptionsBacktraces.begin()
|
||||
: this->impl->CompileOptionsBacktraces.end();
|
||||
|
||||
this->impl->CompileOptionsEntries.insert(position, entry);
|
||||
this->impl->CompileOptionsBacktraces.insert(btPosition, bt);
|
||||
}
|
||||
|
||||
void cmTarget::InsertCompileDefinition(std::string const& entry,
|
||||
cmListFileBacktrace const& bt)
|
||||
void cmTarget::InsertCompileDefinition(BT<std::string> const& entry)
|
||||
{
|
||||
this->impl->CompileDefinitionsEntries.push_back(entry);
|
||||
this->impl->CompileDefinitionsBacktraces.push_back(bt);
|
||||
}
|
||||
|
||||
void cmTarget::InsertLinkOption(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before)
|
||||
void cmTarget::InsertLinkOption(BT<std::string> const& entry, bool before)
|
||||
{
|
||||
auto position = before ? this->impl->LinkOptionsEntries.begin()
|
||||
: this->impl->LinkOptionsEntries.end();
|
||||
|
||||
auto btPosition = before ? this->impl->LinkOptionsBacktraces.begin()
|
||||
: this->impl->LinkOptionsBacktraces.end();
|
||||
|
||||
this->impl->LinkOptionsEntries.insert(position, entry);
|
||||
this->impl->LinkOptionsBacktraces.insert(btPosition, bt);
|
||||
}
|
||||
|
||||
void cmTarget::InsertLinkDirectory(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before)
|
||||
void cmTarget::InsertLinkDirectory(BT<std::string> const& entry, bool before)
|
||||
{
|
||||
auto position = before ? this->impl->LinkDirectoriesEntries.begin()
|
||||
: this->impl->LinkDirectoriesEntries.end();
|
||||
|
||||
auto btPosition = before ? this->impl->LinkDirectoriesBacktraces.begin()
|
||||
: this->impl->LinkDirectoriesBacktraces.end();
|
||||
|
||||
this->impl->LinkDirectoriesEntries.insert(position, entry);
|
||||
this->impl->LinkDirectoriesBacktraces.insert(btPosition, bt);
|
||||
}
|
||||
|
||||
void cmTarget::InsertPrecompileHeader(std::string const& entry,
|
||||
cmListFileBacktrace const& bt)
|
||||
void cmTarget::InsertPrecompileHeader(BT<std::string> const& entry)
|
||||
{
|
||||
this->impl->PrecompileHeadersEntries.push_back(entry);
|
||||
this->impl->PrecompileHeadersBacktraces.push_back(bt);
|
||||
}
|
||||
|
||||
static void cmTargetCheckLINK_INTERFACE_LIBRARIES(const std::string& prop,
|
||||
|
@ -217,18 +217,12 @@ public:
|
||||
//! Get a backtrace from the creation of the target.
|
||||
cmListFileBacktrace const& GetBacktrace() const;
|
||||
|
||||
void InsertInclude(std::string const& entry, cmListFileBacktrace const& bt,
|
||||
bool before = false);
|
||||
void InsertCompileOption(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before = false);
|
||||
void InsertCompileDefinition(std::string const& entry,
|
||||
cmListFileBacktrace const& bt);
|
||||
void InsertLinkOption(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before = false);
|
||||
void InsertLinkDirectory(std::string const& entry,
|
||||
cmListFileBacktrace const& bt, bool before = false);
|
||||
void InsertPrecompileHeader(std::string const& entry,
|
||||
cmListFileBacktrace const& bt);
|
||||
void InsertInclude(BT<std::string> const& entry, bool before = false);
|
||||
void InsertCompileOption(BT<std::string> const& entry, bool before = false);
|
||||
void InsertCompileDefinition(BT<std::string> const& entry);
|
||||
void InsertLinkOption(BT<std::string> const& entry, bool before = false);
|
||||
void InsertLinkDirectory(BT<std::string> const& entry, bool before = false);
|
||||
void InsertPrecompileHeader(BT<std::string> const& entry);
|
||||
|
||||
void AppendBuildInterfaceIncludes();
|
||||
|
||||
@ -248,32 +242,23 @@ public:
|
||||
std::string const& value,
|
||||
const std::string& feature);
|
||||
|
||||
cmStringRange GetIncludeDirectoriesEntries() const;
|
||||
cmBacktraceRange GetIncludeDirectoriesBacktraces() const;
|
||||
cmBTStringRange GetIncludeDirectoriesEntries() const;
|
||||
|
||||
cmStringRange GetCompileOptionsEntries() const;
|
||||
cmBacktraceRange GetCompileOptionsBacktraces() const;
|
||||
cmBTStringRange GetCompileOptionsEntries() const;
|
||||
|
||||
cmStringRange GetCompileFeaturesEntries() const;
|
||||
cmBacktraceRange GetCompileFeaturesBacktraces() const;
|
||||
cmBTStringRange GetCompileFeaturesEntries() const;
|
||||
|
||||
cmStringRange GetCompileDefinitionsEntries() const;
|
||||
cmBacktraceRange GetCompileDefinitionsBacktraces() const;
|
||||
cmBTStringRange GetCompileDefinitionsEntries() const;
|
||||
|
||||
cmStringRange GetPrecompileHeadersEntries() const;
|
||||
cmBacktraceRange GetPrecompileHeadersBacktraces() const;
|
||||
cmBTStringRange GetPrecompileHeadersEntries() const;
|
||||
|
||||
cmStringRange GetSourceEntries() const;
|
||||
cmBacktraceRange GetSourceBacktraces() const;
|
||||
cmBTStringRange GetSourceEntries() const;
|
||||
|
||||
cmStringRange GetLinkOptionsEntries() const;
|
||||
cmBacktraceRange GetLinkOptionsBacktraces() const;
|
||||
cmBTStringRange GetLinkOptionsEntries() const;
|
||||
|
||||
cmStringRange GetLinkDirectoriesEntries() const;
|
||||
cmBacktraceRange GetLinkDirectoriesBacktraces() const;
|
||||
cmBTStringRange GetLinkDirectoriesEntries() const;
|
||||
|
||||
cmStringRange GetLinkImplementationEntries() const;
|
||||
cmBacktraceRange GetLinkImplementationBacktraces() const;
|
||||
cmBTStringRange GetLinkImplementationEntries() const;
|
||||
|
||||
std::string ImportedGetFullPath(const std::string& config,
|
||||
cmStateEnums::ArtifactType artifact) const;
|
||||
|
@ -37,7 +37,8 @@ private:
|
||||
}
|
||||
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
tgt->InsertCompileOption(this->Join(content), lfbt, prepend);
|
||||
tgt->InsertCompileOption(BT<std::string>(this->Join(content), lfbt),
|
||||
prepend);
|
||||
return true; // Successfully handled.
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ bool TargetIncludeDirectoriesImpl::HandleDirectContent(
|
||||
bool system)
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
tgt->InsertInclude(this->Join(content), lfbt, prepend);
|
||||
tgt->InsertInclude(BT<std::string>(this->Join(content), lfbt), prepend);
|
||||
if (system) {
|
||||
std::string prefix = this->Makefile->GetCurrentSourceDirectory() + "/";
|
||||
std::set<std::string> sdirs;
|
||||
|
@ -34,7 +34,8 @@ private:
|
||||
bool prepend, bool /*system*/) override
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
tgt->InsertLinkDirectory(this->Join(content), lfbt, prepend);
|
||||
tgt->InsertLinkDirectory(BT<std::string>(this->Join(content), lfbt),
|
||||
prepend);
|
||||
return true; // Successfully handled.
|
||||
}
|
||||
};
|
||||
|
@ -30,7 +30,7 @@ private:
|
||||
bool prepend, bool /*system*/) override
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
tgt->InsertLinkOption(this->Join(content), lfbt, prepend);
|
||||
tgt->InsertLinkOption(BT<std::string>(this->Join(content), lfbt), prepend);
|
||||
return true; // Successfully handled.
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user