Explorar o código

cmTestGenerator: Require cmLocalGenerator, not cmMakefile.

Stephen Kelly %!s(int64=10) %!d(string=hai) anos
pai
achega
c259b83026
Modificáronse 3 ficheiros con 19 adicións e 5 borrados
  1. 1 0
      Source/cmLocalGenerator.cxx
  2. 14 5
      Source/cmTestGenerator.cxx
  3. 4 0
      Source/cmTestGenerator.h

+ 1 - 0
Source/cmLocalGenerator.cxx

@@ -196,6 +196,7 @@ void cmLocalGenerator::GenerateTestFiles()
   for(std::vector<cmTestGenerator*>::const_iterator gi = testers.begin();
       gi != testers.end(); ++gi)
     {
+    (*gi)->Compute(this);
     (*gi)->Generate(fout, config, configurationTypes);
     }
   if (!this->Children.empty())

+ 14 - 5
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;
     }

+ 4 - 0
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<std::string>());
   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;
 };