summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/cmMakefileTargetGenerator.cxx31
-rw-r--r--Source/cmMakefileTargetGenerator.h1
-rw-r--r--Source/cmake.cxx14
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
// ================================================================