BUG: fix for build order

This commit is contained in:
Ken Martin 2007-03-02 14:31:04 -05:00
parent b9ab2b1932
commit 1de68b46f1
2 changed files with 29 additions and 2 deletions

View File

@ -23,6 +23,12 @@
#include "cmSourceFile.h" #include "cmSourceFile.h"
#include "cmTarget.h" #include "cmTarget.h"
//----------------------------------------------------------------------------
cmMakefileUtilityTargetGenerator::cmMakefileUtilityTargetGenerator()
{
this->DriveCustomCommandsOnDepends = true;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
void cmMakefileUtilityTargetGenerator::WriteRuleFiles() void cmMakefileUtilityTargetGenerator::WriteRuleFiles()
@ -42,10 +48,30 @@ void cmMakefileUtilityTargetGenerator::WriteRuleFiles()
// Utility targets store their rules in pre- and post-build commands. // Utility targets store their rules in pre- and post-build commands.
this->LocalGenerator->AppendCustomDepends this->LocalGenerator->AppendCustomDepends
(depends, this->Target->GetPreBuildCommands()); (depends, this->Target->GetPreBuildCommands());
// Build list of dependencies.
std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath();
std::string objTarget;
this->LocalGenerator->AppendCustomDepends this->LocalGenerator->AppendCustomDepends
(depends, this->Target->GetPostBuildCommands()); (depends, this->Target->GetPostBuildCommands());
this->LocalGenerator->AppendCustomCommands this->LocalGenerator->AppendCustomCommands
(commands, this->Target->GetPreBuildCommands()); (commands, this->Target->GetPreBuildCommands());
// Depend on all custom command outputs for sources
const std::vector<cmSourceFile*>& sources =
this->Target->GetSourceFiles();
for(std::vector<cmSourceFile*>::const_iterator source = sources.begin();
source != sources.end(); ++source)
{
if(cmCustomCommand* cc = (*source)->GetCustomCommand())
{
this->LocalGenerator->AppendCustomCommand(commands, *cc);
this->LocalGenerator->AppendCustomDepend(depends, *cc);
}
}
this->LocalGenerator->AppendCustomCommands this->LocalGenerator->AppendCustomCommands
(commands, this->Target->GetPostBuildCommands()); (commands, this->Target->GetPostBuildCommands());
@ -53,8 +79,7 @@ void cmMakefileUtilityTargetGenerator::WriteRuleFiles()
this->AppendTargetDepends(depends); this->AppendTargetDepends(depends);
// Add a dependency on the rule file itself. // Add a dependency on the rule file itself.
std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath(); objTarget = relPath;
std::string objTarget = relPath;
objTarget += this->BuildFileName; objTarget += this->BuildFileName;
this->LocalGenerator->AppendRuleDepend(depends, objTarget.c_str()); this->LocalGenerator->AppendRuleDepend(depends, objTarget.c_str());

View File

@ -23,6 +23,8 @@ class cmMakefileUtilityTargetGenerator:
public cmMakefileTargetGenerator public cmMakefileTargetGenerator
{ {
public: public:
cmMakefileUtilityTargetGenerator();
/* the main entry point for this class. Writes the Makefiles associated /* the main entry point for this class. Writes the Makefiles associated
with this target */ with this target */
virtual void WriteRuleFiles(); virtual void WriteRuleFiles();