diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index a831d88f6..edb644de7 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -196,6 +196,7 @@ void cmLocalGenerator::GenerateTestFiles() for(std::vector::const_iterator gi = testers.begin(); gi != testers.end(); ++gi) { + (*gi)->Compute(this); (*gi)->Generate(fout, config, configurationTypes); } if (!this->Children.empty()) diff --git a/Source/cmTestGenerator.cxx b/Source/cmTestGenerator.cxx index 1815ade07..9d85f5add 100644 --- a/Source/cmTestGenerator.cxx +++ b/Source/cmTestGenerator.cxx @@ -14,6 +14,7 @@ #include "cmGeneratorExpression.h" #include "cmOutputConverter.h" #include "cmMakefile.h" +#include "cmLocalGenerator.h" #include "cmSystemTools.h" #include "cmTarget.h" #include "cmTest.h" @@ -27,6 +28,7 @@ cmTestGenerator { this->ActionsPerConfig = !test->GetOldStyle(); this->TestGenerated = false; + this->LG = 0; } //---------------------------------------------------------------------------- @@ -35,6 +37,11 @@ cmTestGenerator { } +void cmTestGenerator::Compute(cmLocalGenerator* lg) +{ + this->LG = lg; +} + //---------------------------------------------------------------------------- void cmTestGenerator::GenerateScriptConfigs(std::ostream& os, Indent const& indent) @@ -81,8 +88,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, // Check whether the command executable is a target whose name is to // be translated. std::string exe = command[0]; - cmMakefile* mf = this->Test->GetMakefile(); - cmGeneratorTarget* target = mf->FindGeneratorTargetToUse(exe); + cmGeneratorTarget* target = + this->LG->GetMakefile()->FindGeneratorTargetToUse(exe); if(target && target->GetType() == cmTarget::EXECUTABLE) { // Use the target file on disk. @@ -110,7 +117,7 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, else { // Use the command name given. - exe = ge.Parse(exe.c_str())->Evaluate(mf, config); + exe = ge.Parse(exe.c_str())->Evaluate(this->LG->GetMakefile(), config); cmSystemTools::ConvertToUnixSlashes(exe); } @@ -120,7 +127,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, ci != command.end(); ++ci) { os << " " << cmOutputConverter::EscapeForCMake( - ge.Parse(*ci)->Evaluate(mf, config)); + ge.Parse(*ci)->Evaluate( + this->LG->GetMakefile(), config)); } // Finish the test command. @@ -137,7 +145,8 @@ void cmTestGenerator::GenerateScriptForConfig(std::ostream& os, { os << " " << i->first << " " << cmOutputConverter::EscapeForCMake( - ge.Parse(i->second.GetValue())->Evaluate(mf, config)); + ge.Parse(i->second.GetValue())->Evaluate(this->LG->GetMakefile(), + config)); } os << ")" << std::endl; } diff --git a/Source/cmTestGenerator.h b/Source/cmTestGenerator.h index 5446553cf..de8ab78ef 100644 --- a/Source/cmTestGenerator.h +++ b/Source/cmTestGenerator.h @@ -15,6 +15,7 @@ #include "cmScriptGenerator.h" class cmTest; +class cmLocalGenerator; /** \class cmTestGenerator * \brief Support class for generating install scripts. @@ -28,6 +29,8 @@ public: configurations = std::vector()); virtual ~cmTestGenerator(); + void Compute(cmLocalGenerator* lg); + protected: virtual void GenerateScriptConfigs(std::ostream& os, Indent const& indent); virtual void GenerateScriptActions(std::ostream& os, Indent const& indent); @@ -38,6 +41,7 @@ protected: virtual bool NeedsScriptNoConfig() const; void GenerateOldStyle(std::ostream& os, Indent const& indent); + cmLocalGenerator* LG; cmTest* Test; bool TestGenerated; };