genex: remove the need for backtraces
Rather than making dummy backtraces and passing them around, just make backtraces optional.
This commit is contained in:
parent
efc205695d
commit
a08292059e
|
@ -33,7 +33,7 @@ cmCustomCommand::cmCustomCommand(const cmCustomCommand& r):
|
|||
WorkingDirectory(r.WorkingDirectory),
|
||||
EscapeAllowMakeVars(r.EscapeAllowMakeVars),
|
||||
EscapeOldStyle(r.EscapeOldStyle),
|
||||
Backtrace(new cmListFileBacktrace(*r.Backtrace))
|
||||
Backtrace(r.Backtrace)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -54,11 +54,7 @@ cmCustomCommand& cmCustomCommand::operator=(cmCustomCommand const& r)
|
|||
this->EscapeAllowMakeVars = r.EscapeAllowMakeVars;
|
||||
this->EscapeOldStyle = r.EscapeOldStyle;
|
||||
this->ImplicitDepends = r.ImplicitDepends;
|
||||
|
||||
cmsys::auto_ptr<cmListFileBacktrace>
|
||||
newBacktrace(new cmListFileBacktrace(*r.Backtrace));
|
||||
delete this->Backtrace;
|
||||
this->Backtrace = newBacktrace.release();
|
||||
this->Backtrace = r.Backtrace;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
@ -77,21 +73,19 @@ cmCustomCommand::cmCustomCommand(cmMakefile const* mf,
|
|||
Comment(comment?comment:""),
|
||||
WorkingDirectory(workingDirectory?workingDirectory:""),
|
||||
EscapeAllowMakeVars(false),
|
||||
EscapeOldStyle(true),
|
||||
Backtrace(new cmListFileBacktrace)
|
||||
EscapeOldStyle(true)
|
||||
{
|
||||
this->EscapeOldStyle = true;
|
||||
this->EscapeAllowMakeVars = false;
|
||||
if(mf)
|
||||
{
|
||||
*this->Backtrace = mf->GetBacktrace();
|
||||
this->Backtrace = mf->GetBacktrace();
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmCustomCommand::~cmCustomCommand()
|
||||
{
|
||||
delete this->Backtrace;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
@ -166,7 +160,7 @@ void cmCustomCommand::SetEscapeAllowMakeVars(bool b)
|
|||
//----------------------------------------------------------------------------
|
||||
cmListFileBacktrace const& cmCustomCommand::GetBacktrace() const
|
||||
{
|
||||
return *this->Backtrace;
|
||||
return this->Backtrace;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
#define cmCustomCommand_h
|
||||
|
||||
#include "cmStandardIncludes.h"
|
||||
#include "cmListFileCache.h"
|
||||
class cmMakefile;
|
||||
class cmListFileBacktrace;
|
||||
|
||||
/** \class cmCustomCommand
|
||||
* \brief A class to encapsulate a custom command
|
||||
|
@ -88,7 +88,7 @@ private:
|
|||
std::string WorkingDirectory;
|
||||
bool EscapeAllowMakeVars;
|
||||
bool EscapeOldStyle;
|
||||
cmListFileBacktrace* Backtrace;
|
||||
cmListFileBacktrace Backtrace;
|
||||
ImplicitDependsList ImplicitDepends;
|
||||
};
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ cmCustomCommandGenerator::cmCustomCommandGenerator(
|
|||
cmCustomCommand const& cc, const std::string& config, cmMakefile* mf):
|
||||
CC(cc), Config(config), Makefile(mf), LG(mf->GetLocalGenerator()),
|
||||
OldStyle(cc.GetEscapeOldStyle()), MakeVars(cc.GetEscapeAllowMakeVars()),
|
||||
GE(new cmGeneratorExpression(cc.GetBacktrace())), DependsDone(false)
|
||||
GE(new cmGeneratorExpression(&cc.GetBacktrace())), DependsDone(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -377,8 +377,7 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface(
|
|||
const char *propName = "INTERFACE_INCLUDE_DIRECTORIES";
|
||||
const char *input = target->GetProperty(propName);
|
||||
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
|
||||
std::string dirs = cmGeneratorExpression::Preprocess(
|
||||
tei->InterfaceIncludeDirectories,
|
||||
|
|
|
@ -57,10 +57,9 @@ std::string cmExportTryCompileFileGenerator::FindTargets(
|
|||
return std::string();
|
||||
}
|
||||
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
tgt->GetName(),
|
||||
propName, 0, 0);
|
||||
|
||||
|
|
|
@ -3272,11 +3272,11 @@ void cmFileCommand::AddEvaluationFile(const std::string &inputName,
|
|||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
|
||||
cmGeneratorExpression outputGe(lfbt);
|
||||
cmGeneratorExpression outputGe(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> outputCge
|
||||
= outputGe.Parse(outputExpr);
|
||||
|
||||
cmGeneratorExpression conditionGe(lfbt);
|
||||
cmGeneratorExpression conditionGe(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> conditionCge
|
||||
= conditionGe.Parse(condition);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
//----------------------------------------------------------------------------
|
||||
cmGeneratorExpression::cmGeneratorExpression(
|
||||
cmListFileBacktrace const& backtrace):
|
||||
cmListFileBacktrace const* backtrace):
|
||||
Backtrace(backtrace)
|
||||
{
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ cmGeneratorExpression::Parse(std::string const& input)
|
|||
{
|
||||
return cmsys::auto_ptr<cmCompiledGeneratorExpression>(
|
||||
new cmCompiledGeneratorExpression(
|
||||
this->Backtrace,
|
||||
this->Backtrace ? *this->Backtrace : cmListFileBacktrace(),
|
||||
input));
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ class cmGeneratorExpression
|
|||
{
|
||||
public:
|
||||
/** Construct. */
|
||||
cmGeneratorExpression(cmListFileBacktrace const& backtrace);
|
||||
cmGeneratorExpression(cmListFileBacktrace const* backtrace = NULL);
|
||||
~cmGeneratorExpression();
|
||||
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> Parse(
|
||||
|
@ -70,7 +70,7 @@ private:
|
|||
cmGeneratorExpression(const cmGeneratorExpression &);
|
||||
void operator=(const cmGeneratorExpression &);
|
||||
|
||||
cmListFileBacktrace const& Backtrace;
|
||||
cmListFileBacktrace const* Backtrace;
|
||||
};
|
||||
|
||||
class cmCompiledGeneratorExpression
|
||||
|
|
|
@ -23,6 +23,25 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
|
|||
cmGeneratorExpressionDAGChecker *parent)
|
||||
: Parent(parent), Target(target), Property(property),
|
||||
Content(content), Backtrace(backtrace), TransitivePropertiesOnly(false)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
|
||||
const std::string &target,
|
||||
const std::string &property,
|
||||
const GeneratorExpressionContent *content,
|
||||
cmGeneratorExpressionDAGChecker *parent)
|
||||
: Parent(parent), Target(target), Property(property),
|
||||
Content(content), TransitivePropertiesOnly(false)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void
|
||||
cmGeneratorExpressionDAGChecker::Initialize()
|
||||
{
|
||||
const cmGeneratorExpressionDAGChecker *top = this;
|
||||
const cmGeneratorExpressionDAGChecker *p = this->Parent;
|
||||
|
@ -43,11 +62,12 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
|
|||
#undef TEST_TRANSITIVE_PROPERTY_METHOD
|
||||
{
|
||||
std::map<std::string, std::set<std::string> >::const_iterator it
|
||||
= top->Seen.find(target);
|
||||
= top->Seen.find(this->Target);
|
||||
if (it != top->Seen.end())
|
||||
{
|
||||
const std::set<std::string> &propSet = it->second;
|
||||
const std::set<std::string>::const_iterator i = propSet.find(property);
|
||||
const std::set<std::string>::const_iterator i
|
||||
= propSet.find(this->Property);
|
||||
if (i != propSet.end())
|
||||
{
|
||||
this->CheckResult = ALREADY_SEEN;
|
||||
|
@ -55,7 +75,7 @@ cmGeneratorExpressionDAGChecker::cmGeneratorExpressionDAGChecker(
|
|||
}
|
||||
}
|
||||
const_cast<cmGeneratorExpressionDAGChecker *>(top)
|
||||
->Seen[target].insert(property);
|
||||
->Seen[this->Target].insert(this->Property);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,10 @@ struct cmGeneratorExpressionDAGChecker
|
|||
const std::string &property,
|
||||
const GeneratorExpressionContent *content,
|
||||
cmGeneratorExpressionDAGChecker *parent);
|
||||
cmGeneratorExpressionDAGChecker(const std::string &target,
|
||||
const std::string &property,
|
||||
const GeneratorExpressionContent *content,
|
||||
cmGeneratorExpressionDAGChecker *parent);
|
||||
|
||||
enum Result {
|
||||
DAG,
|
||||
|
@ -76,6 +80,7 @@ struct cmGeneratorExpressionDAGChecker
|
|||
|
||||
private:
|
||||
Result CheckGraph() const;
|
||||
void Initialize();
|
||||
|
||||
private:
|
||||
const cmGeneratorExpressionDAGChecker * const Parent;
|
||||
|
|
|
@ -115,7 +115,7 @@ void cmGeneratorExpressionEvaluationFile::Generate()
|
|||
}
|
||||
|
||||
cmListFileBacktrace lfbt = this->OutputFileExpr->GetBacktrace();
|
||||
cmGeneratorExpression contentGE(lfbt);
|
||||
cmGeneratorExpression contentGE(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> inputExpression
|
||||
= contentGE.Parse(inputContent);
|
||||
|
||||
|
|
|
@ -809,7 +809,7 @@ std::string getLinkedTargetsContent(const std::vector<cmTarget*> &targets,
|
|||
cmGeneratorExpressionDAGChecker *dagChecker,
|
||||
const std::string &interfacePropertyName)
|
||||
{
|
||||
cmGeneratorExpression ge(context->Backtrace);
|
||||
cmGeneratorExpression ge(&context->Backtrace);
|
||||
|
||||
std::string sep;
|
||||
std::string depString;
|
||||
|
@ -1196,7 +1196,7 @@ static const struct TargetPropertyNode : public cmGeneratorExpressionNode
|
|||
{
|
||||
if (targetPropertyTransitiveWhitelist[i] == interfacePropertyName)
|
||||
{
|
||||
cmGeneratorExpression ge(context->Backtrace);
|
||||
cmGeneratorExpression ge(&context->Backtrace);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(prop);
|
||||
std::string result = cge->Evaluate(context->Makefile,
|
||||
context->Config,
|
||||
|
|
|
@ -259,12 +259,10 @@ static void handleSystemIncludesDep(cmMakefile *mf, cmTarget* depTgt,
|
|||
std::vector<std::string>& result,
|
||||
bool excludeImported)
|
||||
{
|
||||
cmListFileBacktrace lfbt;
|
||||
|
||||
if (const char* dirs =
|
||||
depTgt->GetProperty("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES"))
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmSystemTools::ExpandListArgument(ge.Parse(dirs)
|
||||
->Evaluate(mf,
|
||||
config, false, headTarget,
|
||||
|
@ -278,7 +276,7 @@ static void handleSystemIncludesDep(cmMakefile *mf, cmTarget* depTgt,
|
|||
if (const char* dirs =
|
||||
depTgt->GetProperty("INTERFACE_INCLUDE_DIRECTORIES"))
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmSystemTools::ExpandListArgument(ge.Parse(dirs)
|
||||
->Evaluate(mf,
|
||||
config, false, headTarget,
|
||||
|
@ -457,8 +455,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
|
|||
return false;
|
||||
}
|
||||
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
this->GetName(),
|
||||
"SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
|
||||
|
||||
|
@ -470,7 +467,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
|
|||
it = this->Target->GetSystemIncludeDirectories().begin();
|
||||
it != this->Target->GetSystemIncludeDirectories().end(); ++it)
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmSystemTools::ExpandListArgument(ge.Parse(*it)
|
||||
->Evaluate(this->Makefile,
|
||||
config, false, this->Target,
|
||||
|
@ -808,7 +805,7 @@ cmTargetTraceDependencies
|
|||
{
|
||||
// Transform command names that reference targets built in this
|
||||
// project to corresponding target-level dependencies.
|
||||
cmGeneratorExpression ge(cc.GetBacktrace());
|
||||
cmGeneratorExpression ge(&cc.GetBacktrace());
|
||||
|
||||
// Add target-level dependencies referenced by generator expressions.
|
||||
std::set<cmTarget*> targets;
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "cmInstallFilesGenerator.h"
|
||||
|
||||
#include "cmGeneratorExpression.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmSystemTools.h"
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
@ -84,8 +85,7 @@ void cmInstallFilesGenerator::GenerateScriptForConfig(std::ostream& os,
|
|||
Indent const& indent)
|
||||
{
|
||||
std::vector<std::string> files;
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
for(std::vector<std::string>::const_iterator i = this->Files.begin();
|
||||
i != this->Files.end(); ++i)
|
||||
{
|
||||
|
|
|
@ -33,7 +33,7 @@ cmInstalledFile::~cmInstalledFile()
|
|||
void cmInstalledFile::SetName(cmMakefile* mf, const std::string& name)
|
||||
{
|
||||
cmListFileBacktrace backtrace = mf->GetBacktrace();
|
||||
cmGeneratorExpression ge(backtrace);
|
||||
cmGeneratorExpression ge(&backtrace);
|
||||
|
||||
this->Name = name;
|
||||
this->NameExpression = ge.Parse(name).release();
|
||||
|
@ -70,7 +70,7 @@ void cmInstalledFile::AppendProperty(cmMakefile const* mf,
|
|||
const std::string& prop, const char* value, bool /*asString*/)
|
||||
{
|
||||
cmListFileBacktrace backtrace = mf->GetBacktrace();
|
||||
cmGeneratorExpression ge(backtrace);
|
||||
cmGeneratorExpression ge(&backtrace);
|
||||
|
||||
Property& property = this->Properties[prop];
|
||||
property.ValueExpressions.push_back(ge.Parse(value).release());
|
||||
|
|
|
@ -137,8 +137,7 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules()
|
|||
this->Makefile->GetProperty
|
||||
("ADDITIONAL_MAKE_CLEAN_FILES"))
|
||||
{
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(additional_clean_files);
|
||||
|
||||
|
|
|
@ -710,10 +710,7 @@ void cmTarget::GetSourceFiles(std::vector<std::string> &files,
|
|||
this->DebugSourcesDone = true;
|
||||
}
|
||||
|
||||
cmListFileBacktrace lfbt;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
this->GetName(),
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
"SOURCES", 0, 0);
|
||||
|
||||
std::set<std::string> uniqueSrcs;
|
||||
|
@ -739,7 +736,7 @@ void cmTarget::GetSourceFiles(std::vector<std::string> &files,
|
|||
continue;
|
||||
}
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(it->Value);
|
||||
std::string targetResult = cge->Evaluate(this->Makefile, config,
|
||||
|
@ -758,7 +755,7 @@ void cmTarget::GetSourceFiles(std::vector<std::string> &files,
|
|||
// TARGET_PROPERTY expression.
|
||||
sourceGenex = "$<$<BOOL:" + it->Value + ">:" + sourceGenex + ">";
|
||||
}
|
||||
cmGeneratorExpression ge(it->Backtrace);
|
||||
cmGeneratorExpression ge(&it->Backtrace);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
|
||||
sourceGenex);
|
||||
|
||||
|
@ -911,7 +908,7 @@ void cmTarget::AddTracedSources(std::vector<std::string> const& srcs)
|
|||
this->Internal->SourceFilesMap.clear();
|
||||
this->LinkImplementationLanguageIsContextDependent = true;
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(srcFiles);
|
||||
cge->SetEvaluateForBuildsystem(true);
|
||||
this->Internal->SourceEntries.push_back(
|
||||
|
@ -948,7 +945,7 @@ void cmTarget::AddSources(std::vector<std::string> const& srcs)
|
|||
this->Internal->SourceFilesMap.clear();
|
||||
this->LinkImplementationLanguageIsContextDependent = true;
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(srcFiles);
|
||||
cge->SetEvaluateForBuildsystem(true);
|
||||
this->Internal->SourceEntries.push_back(
|
||||
|
@ -1083,7 +1080,7 @@ cmSourceFile* cmTarget::AddSource(const std::string& src)
|
|||
this->Internal->SourceFilesMap.clear();
|
||||
this->LinkImplementationLanguageIsContextDependent = true;
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(src);
|
||||
cge->SetEvaluateForBuildsystem(true);
|
||||
this->Internal->SourceEntries.push_back(
|
||||
|
@ -1203,11 +1200,10 @@ void cmTarget::GetDirectLinkLibraries(const std::string& config,
|
|||
const char *prop = this->GetProperty("LINK_LIBRARIES");
|
||||
if (prop)
|
||||
{
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
const cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(prop);
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
this->GetName(),
|
||||
"LINK_LIBRARIES", 0, 0);
|
||||
cmSystemTools::ExpandListArgument(cge->Evaluate(this->Makefile,
|
||||
|
@ -1238,11 +1234,10 @@ void cmTarget::GetInterfaceLinkLibraries(const std::string& config,
|
|||
const char *prop = this->GetProperty("INTERFACE_LINK_LIBRARIES");
|
||||
if (prop)
|
||||
{
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
const cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(prop);
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
this->GetName(),
|
||||
"INTERFACE_LINK_LIBRARIES", 0, 0);
|
||||
cmSystemTools::ExpandListArgument(cge->Evaluate(this->Makefile,
|
||||
|
@ -1793,7 +1788,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
|
|||
if(prop == "INCLUDE_DIRECTORIES")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
deleteAndClear(this->Internal->IncludeDirectoriesEntries);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
|
||||
this->Internal->IncludeDirectoriesEntries.push_back(
|
||||
|
@ -1803,7 +1798,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
|
|||
if(prop == "COMPILE_OPTIONS")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
deleteAndClear(this->Internal->CompileOptionsEntries);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
|
||||
this->Internal->CompileOptionsEntries.push_back(
|
||||
|
@ -1813,7 +1808,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
|
|||
if(prop == "COMPILE_FEATURES")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
deleteAndClear(this->Internal->CompileFeaturesEntries);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
|
||||
this->Internal->CompileFeaturesEntries.push_back(
|
||||
|
@ -1823,7 +1818,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
|
|||
if(prop == "COMPILE_DEFINITIONS")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
deleteAndClear(this->Internal->CompileDefinitionsEntries);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
|
||||
this->Internal->CompileDefinitionsEntries.push_back(
|
||||
|
@ -1858,7 +1853,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value)
|
|||
}
|
||||
this->Internal->SourceFilesMap.clear();
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
this->Internal->SourceEntries.clear();
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
|
||||
this->Internal->SourceEntries.push_back(
|
||||
|
@ -1892,7 +1887,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
|
|||
if(prop == "INCLUDE_DIRECTORIES")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
this->Internal->IncludeDirectoriesEntries.push_back(
|
||||
new cmTargetInternals::TargetPropertyEntry(ge.Parse(value)));
|
||||
return;
|
||||
|
@ -1900,7 +1895,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
|
|||
if(prop == "COMPILE_OPTIONS")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
this->Internal->CompileOptionsEntries.push_back(
|
||||
new cmTargetInternals::TargetPropertyEntry(ge.Parse(value)));
|
||||
return;
|
||||
|
@ -1908,7 +1903,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
|
|||
if(prop == "COMPILE_FEATURES")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
this->Internal->CompileFeaturesEntries.push_back(
|
||||
new cmTargetInternals::TargetPropertyEntry(ge.Parse(value)));
|
||||
return;
|
||||
|
@ -1916,7 +1911,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
|
|||
if(prop == "COMPILE_DEFINITIONS")
|
||||
{
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
this->Internal->CompileDefinitionsEntries.push_back(
|
||||
new cmTargetInternals::TargetPropertyEntry(ge.Parse(value)));
|
||||
return;
|
||||
|
@ -1948,7 +1943,7 @@ void cmTarget::AppendProperty(const std::string& prop, const char* value,
|
|||
}
|
||||
this->Internal->SourceFilesMap.clear();
|
||||
cmListFileBacktrace lfbt = this->Makefile->GetBacktrace();
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge(&lfbt);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(value);
|
||||
this->Internal->SourceEntries.push_back(
|
||||
new cmTargetInternals::TargetPropertyEntry(cge));
|
||||
|
@ -2014,7 +2009,7 @@ void cmTarget::AppendBuildInterfaceIncludes()
|
|||
void cmTarget::InsertInclude(const cmValueWithOrigin &entry,
|
||||
bool before)
|
||||
{
|
||||
cmGeneratorExpression ge(entry.Backtrace);
|
||||
cmGeneratorExpression ge(&entry.Backtrace);
|
||||
|
||||
std::vector<cmTargetInternals::TargetPropertyEntry*>::iterator position
|
||||
= before ? this->Internal->IncludeDirectoriesEntries.begin()
|
||||
|
@ -2028,7 +2023,7 @@ void cmTarget::InsertInclude(const cmValueWithOrigin &entry,
|
|||
void cmTarget::InsertCompileOption(const cmValueWithOrigin &entry,
|
||||
bool before)
|
||||
{
|
||||
cmGeneratorExpression ge(entry.Backtrace);
|
||||
cmGeneratorExpression ge(&entry.Backtrace);
|
||||
|
||||
std::vector<cmTargetInternals::TargetPropertyEntry*>::iterator position
|
||||
= before ? this->Internal->CompileOptionsEntries.begin()
|
||||
|
@ -2041,7 +2036,7 @@ void cmTarget::InsertCompileOption(const cmValueWithOrigin &entry,
|
|||
//----------------------------------------------------------------------------
|
||||
void cmTarget::InsertCompileDefinition(const cmValueWithOrigin &entry)
|
||||
{
|
||||
cmGeneratorExpression ge(entry.Backtrace);
|
||||
cmGeneratorExpression ge(&entry.Backtrace);
|
||||
|
||||
this->Internal->CompileDefinitionsEntries.push_back(
|
||||
new cmTargetInternals::TargetPropertyEntry(ge.Parse(entry.Value)));
|
||||
|
@ -2082,14 +2077,13 @@ static void processIncludeDirectories(cmTarget const* tgt,
|
|||
}
|
||||
}
|
||||
std::string usedIncludes;
|
||||
cmListFileBacktrace lfbt;
|
||||
for(std::vector<std::string>::iterator
|
||||
li = entryIncludes.begin(); li != entryIncludes.end(); ++li)
|
||||
{
|
||||
std::string targetName = (*it)->TargetName;
|
||||
std::string evaluatedTargetName;
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(targetName);
|
||||
evaluatedTargetName = cge->Evaluate(mf, config, false, tgt, 0, 0);
|
||||
|
@ -2222,10 +2216,8 @@ cmTarget::GetIncludeDirectories(const std::string& config) const
|
|||
{
|
||||
std::vector<std::string> includes;
|
||||
std::set<std::string> uniqueIncludes;
|
||||
cmListFileBacktrace lfbt;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
this->GetName(),
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
"INCLUDE_DIRECTORIES", 0, 0);
|
||||
|
||||
std::vector<std::string> debugProperties;
|
||||
|
@ -2268,7 +2260,7 @@ cmTarget::GetIncludeDirectories(const std::string& config) const
|
|||
continue;
|
||||
}
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(it->Value);
|
||||
std::string result = cge->Evaluate(this->Makefile, config,
|
||||
|
@ -2287,7 +2279,7 @@ cmTarget::GetIncludeDirectories(const std::string& config) const
|
|||
// TARGET_PROPERTY expression.
|
||||
includeGenex = "$<$<BOOL:" + it->Value + ">:" + includeGenex + ">";
|
||||
}
|
||||
cmGeneratorExpression ge(it->Backtrace);
|
||||
cmGeneratorExpression ge(&it->Backtrace);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
|
||||
includeGenex);
|
||||
|
||||
|
@ -2316,7 +2308,7 @@ cmTarget::GetIncludeDirectories(const std::string& config) const
|
|||
|
||||
libDir = frameworkCheck.match(1);
|
||||
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(libDir.c_str());
|
||||
this->Internal
|
||||
|
@ -2430,10 +2422,9 @@ void cmTarget::GetAutoUicOptions(std::vector<std::string> &result,
|
|||
{
|
||||
return;
|
||||
}
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
this->GetName(),
|
||||
"AUTOUIC_OPTIONS", 0, 0);
|
||||
cmSystemTools::ExpandListArgument(ge.Parse(prop)
|
||||
|
@ -2450,10 +2441,8 @@ void cmTarget::GetCompileOptions(std::vector<std::string> &result,
|
|||
const std::string& config) const
|
||||
{
|
||||
std::set<std::string> uniqueOptions;
|
||||
cmListFileBacktrace lfbt;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
this->GetName(),
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
"COMPILE_OPTIONS", 0, 0);
|
||||
|
||||
std::vector<std::string> debugProperties;
|
||||
|
@ -2496,7 +2485,7 @@ void cmTarget::GetCompileOptions(std::vector<std::string> &result,
|
|||
continue;
|
||||
}
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(it->Value);
|
||||
std::string targetResult = cge->Evaluate(this->Makefile, config,
|
||||
|
@ -2515,7 +2504,7 @@ void cmTarget::GetCompileOptions(std::vector<std::string> &result,
|
|||
// TARGET_PROPERTY expression.
|
||||
optionGenex = "$<$<BOOL:" + it->Value + ">:" + optionGenex + ">";
|
||||
}
|
||||
cmGeneratorExpression ge(it->Backtrace);
|
||||
cmGeneratorExpression ge(&it->Backtrace);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
|
||||
optionGenex);
|
||||
|
||||
|
@ -2562,10 +2551,8 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list,
|
|||
const std::string& config) const
|
||||
{
|
||||
std::set<std::string> uniqueOptions;
|
||||
cmListFileBacktrace lfbt;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
this->GetName(),
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
"COMPILE_DEFINITIONS", 0, 0);
|
||||
|
||||
std::vector<std::string> debugProperties;
|
||||
|
@ -2608,7 +2595,7 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list,
|
|||
continue;
|
||||
}
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(it->Value);
|
||||
std::string targetResult = cge->Evaluate(this->Makefile, config,
|
||||
|
@ -2627,7 +2614,7 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list,
|
|||
// TARGET_PROPERTY expression.
|
||||
defsGenex = "$<$<BOOL:" + it->Value + ">:" + defsGenex + ">";
|
||||
}
|
||||
cmGeneratorExpression ge(it->Backtrace);
|
||||
cmGeneratorExpression ge(&it->Backtrace);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
|
||||
defsGenex);
|
||||
|
||||
|
@ -2655,7 +2642,7 @@ void cmTarget::GetCompileDefinitions(std::vector<std::string> &list,
|
|||
}
|
||||
case cmPolicies::OLD:
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(configProp);
|
||||
this->Internal
|
||||
|
@ -2710,10 +2697,8 @@ void cmTarget::GetCompileFeatures(std::vector<std::string> &result,
|
|||
const std::string& config) const
|
||||
{
|
||||
std::set<std::string> uniqueFeatures;
|
||||
cmListFileBacktrace lfbt;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
this->GetName(),
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
"COMPILE_FEATURES",
|
||||
0, 0);
|
||||
|
||||
|
@ -2757,7 +2742,7 @@ void cmTarget::GetCompileFeatures(std::vector<std::string> &result,
|
|||
continue;
|
||||
}
|
||||
{
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
|
||||
ge.Parse(it->Value);
|
||||
std::string targetResult = cge->Evaluate(this->Makefile, config,
|
||||
|
@ -2776,7 +2761,7 @@ void cmTarget::GetCompileFeatures(std::vector<std::string> &result,
|
|||
// TARGET_PROPERTY expression.
|
||||
featureGenex = "$<$<BOOL:" + it->Value + ">:" + featureGenex + ">";
|
||||
}
|
||||
cmGeneratorExpression ge(it->Backtrace);
|
||||
cmGeneratorExpression ge(&it->Backtrace);
|
||||
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge = ge.Parse(
|
||||
featureGenex);
|
||||
|
||||
|
@ -5904,10 +5889,9 @@ void cmTarget::ComputeImportInfo(std::string const& desired_config,
|
|||
}
|
||||
if(propertyLibs)
|
||||
{
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpression ge;
|
||||
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt,
|
||||
cmGeneratorExpressionDAGChecker dagChecker(
|
||||
this->GetName(),
|
||||
linkProp, 0, 0);
|
||||
cmSystemTools::ExpandListArgument(ge.Parse(propertyLibs)
|
||||
|
@ -6227,9 +6211,8 @@ void cmTarget::GetTransitivePropertyTargets(const std::string& config,
|
|||
}
|
||||
|
||||
// The interface libraries have been explicitly set.
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt, this->GetName(),
|
||||
cmGeneratorExpression ge;
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
linkIfaceProp, 0, 0);
|
||||
dagChecker.SetTransitivePropertiesOnly();
|
||||
std::vector<std::string> libs;
|
||||
|
@ -6339,9 +6322,8 @@ const char* cmTarget::ComputeLinkInterfaceLibraries(const std::string& config,
|
|||
if(explicitLibraries)
|
||||
{
|
||||
// The interface libraries have been explicitly set.
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt, this->GetName(),
|
||||
cmGeneratorExpression ge;
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
linkIfaceProp, 0, 0);
|
||||
cmSystemTools::ExpandListArgument(ge.Parse(explicitLibraries)->Evaluate(
|
||||
this->Makefile,
|
||||
|
@ -6366,9 +6348,8 @@ const char* cmTarget::ComputeLinkInterfaceLibraries(const std::string& config,
|
|||
{
|
||||
// Compare the link implementation fallback link interface to the
|
||||
// preferred new link interface property and warn if different.
|
||||
cmListFileBacktrace lfbt;
|
||||
cmGeneratorExpression ge(lfbt);
|
||||
cmGeneratorExpressionDAGChecker dagChecker(lfbt, this->GetName(),
|
||||
cmGeneratorExpression ge;
|
||||
cmGeneratorExpressionDAGChecker dagChecker(this->GetName(),
|
||||
"INTERFACE_LINK_LIBRARIES", 0, 0);
|
||||
std::vector<std::string> ifaceLibs;
|
||||
const char* newExplicitLibraries =
|
||||
|
|
|
@ -21,20 +21,18 @@ cmTest::cmTest(cmMakefile* mf)
|
|||
this->Makefile = mf;
|
||||
this->OldStyle = true;
|
||||
this->Properties.SetCMakeInstance(mf->GetCMakeInstance());
|
||||
this->Backtrace = new cmListFileBacktrace;
|
||||
*this->Backtrace = this->Makefile->GetBacktrace();
|
||||
this->Backtrace = this->Makefile->GetBacktrace();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmTest::~cmTest()
|
||||
{
|
||||
delete this->Backtrace;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmListFileBacktrace const& cmTest::GetBacktrace() const
|
||||
{
|
||||
return *this->Backtrace;
|
||||
return this->Backtrace;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
|
||||
#include "cmCustomCommand.h"
|
||||
#include "cmPropertyMap.h"
|
||||
#include "cmListFileCache.h"
|
||||
class cmMakefile;
|
||||
class cmListFileBacktrace;
|
||||
|
||||
/** \class cmTest
|
||||
* \brief Represent a test
|
||||
|
@ -71,7 +71,7 @@ private:
|
|||
bool OldStyle;
|
||||
|
||||
cmMakefile* Makefile;
|
||||
cmListFileBacktrace* Backtrace;
|
||||
cmListFileBacktrace Backtrace;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -70,7 +70,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os,
|
|||
this->TestGenerated = true;
|
||||
|
||||
// Set up generator expression evaluation context.
|
||||
cmGeneratorExpression ge(this->Test->GetBacktrace());
|
||||
cmGeneratorExpression ge(&this->Test->GetBacktrace());
|
||||
|
||||
// Start the test command.
|
||||
os << indent << "add_test(" << this->Test->GetName() << " ";
|
||||
|
|
Loading…
Reference in New Issue