diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 31 | ||||
-rw-r--r-- | Source/cmMakefileTargetGenerator.h | 1 | ||||
-rw-r--r-- | Source/cmake.cxx | 14 |
3 files changed, 37 insertions, 9 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index b8b9141..b88abed 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -46,6 +46,12 @@ cmMakefileTargetGenerator::cmMakefileTargetGenerator(cmTarget* target) this->GlobalGenerator = static_cast<cmGlobalUnixMakefileGenerator3*>( this->LocalGenerator->GetGlobalGenerator()); + cmake* cm = this->GlobalGenerator->GetCMakeInstance(); + this->NoRuleProgress = false; + if(const char* ruleProgress = cm->GetProperty("RULE_PROGRESS")) + { + this->NoRuleProgress = cmSystemTools::IsOff(ruleProgress); + } } cmMakefileTargetGenerator * @@ -195,15 +201,18 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules() cmLocalGenerator::HOME_OUTPUT, cmLocalGenerator::MAKEFILE) << "\n\n"; - - // Include the progress variables for the target. - *this->BuildFileStream - << "# Include the progress variables for this target.\n" - << this->LocalGenerator->IncludeDirective << " " - << this->Convert(this->ProgressFileNameFull.c_str(), - cmLocalGenerator::HOME_OUTPUT, - cmLocalGenerator::MAKEFILE) - << "\n\n"; + + if(!this->NoRuleProgress) + { + // Include the progress variables for the target. + *this->BuildFileStream + << "# Include the progress variables for this target.\n" + << this->LocalGenerator->IncludeDirective << " " + << this->Convert(this->ProgressFileNameFull.c_str(), + cmLocalGenerator::HOME_OUTPUT, + cmLocalGenerator::MAKEFILE) + << "\n\n"; + } // make sure the depend file exists if (!cmSystemTools::FileExists(dependFileNameFull.c_str())) @@ -1200,6 +1209,10 @@ void cmMakefileTargetGenerator::AppendProgress(std::vector<std::string>& commands) { this->NumberOfProgressActions++; + if(this->NoRuleProgress) + { + return; + } std::string progressDir = this->Makefile->GetHomeOutputDirectory(); progressDir += cmake::GetCMakeFilesDirectory(); cmOStringStream progCmd; diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h index f743240..629d192 100644 --- a/Source/cmMakefileTargetGenerator.h +++ b/Source/cmMakefileTargetGenerator.h @@ -170,6 +170,7 @@ protected: std::string ProgressFileName; std::string ProgressFileNameFull; unsigned long NumberOfProgressActions; + bool NoRuleProgress; // the path to the directory the build file is in std::string TargetBuildDirectory; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 5cabc22..33265a3 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -3454,6 +3454,20 @@ void cmake::DefineProperties(cmake *cm) "with high granularity. " "Non-Makefile generators currently ignore this property."); + cm->DefineProperty + ("RULE_PROGRESS", cmProperty::GLOBAL, + "Specify whether to report progress for each make rule.", + "Makefile generators add commands to report progress. " + "This property specifies whether to report progress on every rule. " + "If the property is not set the default is ON. " + "Set the property to OFF to disable granular progress and report only " + "as each target completes. " + "This is intended to allow scripted builds to avoid the build time " + "cost of detailed progress reports. " + "If a CMAKE_RULE_PROGRESS cache entry exists its value initializes " + "the value of this property. " + "Non-Makefile generators currently ignore this property."); + // ================================================================ // define variables as well // ================================================================ |