ENH: Made cmMakefileTargetGenerator::GlobalGenerator have full type cmGlobalUnixMakefileGenerator3 to give access to all methods. Fixed broken custom targets with no commands for Borland makefiles when CMAKE_SKIP_RULE_DEPENDENCY is set.
This commit is contained in:
parent
1fe21ae35e
commit
f7611f167c
|
@ -115,6 +115,9 @@ public:
|
|||
no rule. This is used for multiple output dependencies. */
|
||||
std::string GetEmptyCommandHack() { return this->EmptyCommandsHack; }
|
||||
|
||||
/** Get the fake dependency to use when a rule has no real commands
|
||||
or dependencies. */
|
||||
std::string GetEmptyRuleHackDepends() { return this->EmptyRuleHackDepends; }
|
||||
|
||||
// change the build command for speed
|
||||
virtual std::string GenerateBuildCommand
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "cmMakefileExecutableTargetGenerator.h"
|
||||
|
||||
#include "cmGeneratedFileStream.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmGlobalUnixMakefileGenerator3.h"
|
||||
#include "cmLocalUnixMakefileGenerator3.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmSourceFile.h"
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "cmMakefileLibraryTargetGenerator.h"
|
||||
|
||||
#include "cmGeneratedFileStream.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmGlobalUnixMakefileGenerator3.h"
|
||||
#include "cmLocalUnixMakefileGenerator3.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmSourceFile.h"
|
||||
|
|
|
@ -65,7 +65,8 @@ cmMakefileTargetGenerator::New(cmLocalUnixMakefileGenerator3 *lg,
|
|||
result->TargetName = tgtName;
|
||||
result->Target = tgt;
|
||||
result->LocalGenerator = lg;
|
||||
result->GlobalGenerator = lg->GetGlobalGenerator();
|
||||
result->GlobalGenerator =
|
||||
static_cast<cmGlobalUnixMakefileGenerator3*>(lg->GetGlobalGenerator());
|
||||
result->Makefile = lg->GetMakefile();
|
||||
return result;
|
||||
}
|
||||
|
@ -891,9 +892,7 @@ void cmMakefileTargetGenerator
|
|||
depends.clear();
|
||||
depends.push_back(*o);
|
||||
commands.clear();
|
||||
cmGlobalUnixMakefileGenerator3* gg =
|
||||
static_cast<cmGlobalUnixMakefileGenerator3*>(this->GlobalGenerator);
|
||||
std::string emptyCommand = gg->GetEmptyCommandHack();
|
||||
std::string emptyCommand = this->GlobalGenerator->GetEmptyCommandHack();
|
||||
if(!emptyCommand.empty())
|
||||
{
|
||||
commands.push_back(emptyCommand);
|
||||
|
@ -911,7 +910,8 @@ void cmMakefileTargetGenerator
|
|||
this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, 0,
|
||||
o->c_str(), depends, commands,
|
||||
symbolic);
|
||||
gg->AddMultipleOutputPair(o->c_str(), depends[0].c_str());
|
||||
this->GlobalGenerator->AddMultipleOutputPair(o->c_str(),
|
||||
depends[0].c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ class cmCustomCommand;
|
|||
class cmDependInformation;
|
||||
class cmDepends;
|
||||
class cmGeneratedFileStream;
|
||||
class cmGlobalGenerator;
|
||||
class cmGlobalUnixMakefileGenerator3;
|
||||
class cmLocalUnixMakefileGenerator3;
|
||||
class cmMakeDepend;
|
||||
class cmMakefile;
|
||||
|
@ -121,7 +121,7 @@ protected:
|
|||
cmStdString TargetName;
|
||||
cmTarget *Target;
|
||||
cmLocalUnixMakefileGenerator3 *LocalGenerator;
|
||||
cmGlobalGenerator *GlobalGenerator;
|
||||
cmGlobalUnixMakefileGenerator3 *GlobalGenerator;
|
||||
cmMakefile *Makefile;
|
||||
|
||||
bool DriveCustomCommandsOnDepends;
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include "cmMakefileUtilityTargetGenerator.h"
|
||||
|
||||
#include "cmGeneratedFileStream.h"
|
||||
#include "cmGlobalGenerator.h"
|
||||
#include "cmGlobalUnixMakefileGenerator3.h"
|
||||
#include "cmLocalUnixMakefileGenerator3.h"
|
||||
#include "cmMakefile.h"
|
||||
#include "cmSourceFile.h"
|
||||
|
@ -58,6 +58,17 @@ void cmMakefileUtilityTargetGenerator::WriteRuleFiles()
|
|||
objTarget += this->BuildFileName;
|
||||
this->LocalGenerator->AppendRuleDepend(depends, objTarget.c_str());
|
||||
|
||||
// If the rule is empty add the special empty rule dependency needed
|
||||
// by some make tools.
|
||||
if(depends.empty() && commands.empty())
|
||||
{
|
||||
std::string hack = this->GlobalGenerator->GetEmptyRuleHackDepends();
|
||||
if(!hack.empty())
|
||||
{
|
||||
depends.push_back(hack);
|
||||
}
|
||||
}
|
||||
|
||||
// Write the rule.
|
||||
this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, 0,
|
||||
this->Target->GetName(),
|
||||
|
|
Loading…
Reference in New Issue