From b323c3f51cc4caf7f8c26f86ba3dd4a08e964c4b Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 13 Apr 2006 10:15:48 -0400 Subject: [PATCH] BUG: Work-around Watcom WMake limitation for multiple-output custom command support. --- Source/cmGlobalUnixMakefileGenerator3.h | 9 +++++++++ Source/cmGlobalWatcomWMakeGenerator.cxx | 1 + Source/cmMakefileTargetGenerator.cxx | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index 3f8dbc23a..6ad6ec92e 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -110,6 +110,9 @@ public: check-build-system step. */ virtual void CheckMultipleOutputs(cmMakefile* mf, bool verbose); + /** Get the command to use for a non-symbolic target file that has + no rule. This is used for multiple output dependencies. */ + std::string GetEmptyCommandHack() { return this->EmptyCommandsHack; } protected: void WriteMainMakefile2(); void WriteMainCMakefile(); @@ -151,6 +154,12 @@ protected: // that can be added. std::string EmptyRuleHackDepends; + // Some make programs (Watcom) do not like rules with no commands + // for non-symbolic targets. If non-empty this variable holds a + // bogus command that may be put in the rule to satisfy the make + // program. + std::string EmptyCommandsHack; + typedef std::map MultipleOutputPairsType; MultipleOutputPairsType MultipleOutputPairs; }; diff --git a/Source/cmGlobalWatcomWMakeGenerator.cxx b/Source/cmGlobalWatcomWMakeGenerator.cxx index fd3af6821..a04048437 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.cxx +++ b/Source/cmGlobalWatcomWMakeGenerator.cxx @@ -23,6 +23,7 @@ cmGlobalWatcomWMakeGenerator::cmGlobalWatcomWMakeGenerator() this->FindMakeProgramFile = "CMakeFindWMake.cmake"; this->ForceUnixPaths = false; this->ToolSupportsColorVT100 = false; + this->EmptyCommandsHack = "@cd ."; } void cmGlobalWatcomWMakeGenerator::EnableLanguage(std::vectorconst& l, diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index f2d3dc01f..249db05c1 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -660,6 +660,11 @@ void cmMakefileTargetGenerator commands.clear(); cmGlobalUnixMakefileGenerator3* gg = static_cast(this->GlobalGenerator); + std::string emptyCommand = gg->GetEmptyCommandHack(); + if(!emptyCommand.empty()) + { + commands.push_back(emptyCommand); + } for(++o; o != outputs.end(); ++o) { this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, 0,