summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/CMakeGenericSystem.cmake3
-rw-r--r--Source/cmMakefileTargetGenerator.cxx31
-rw-r--r--Source/cmMakefileTargetGenerator.h1
-rw-r--r--Source/cmake.cxx14
-rw-r--r--Tests/Complex/CMakeLists.txt3
-rw-r--r--Tests/ComplexOneConfig/CMakeLists.txt3
-rw-r--r--Tests/ComplexRelativePaths/CMakeLists.txt3
7 files changed, 49 insertions, 9 deletions
diff --git a/Modules/CMakeGenericSystem.cmake b/Modules/CMakeGenericSystem.cmake
index 2599f2b..7271114 100644
--- a/Modules/CMakeGenericSystem.cmake
+++ b/Modules/CMakeGenericSystem.cmake
@@ -33,6 +33,9 @@ IF(CMAKE_GENERATOR MATCHES "Makefiles")
"Enable/Disable color output during build."
)
MARK_AS_ADVANCED(CMAKE_COLOR_MAKEFILE)
+ IF(DEFINED CMAKE_RULE_PROGRESS)
+ SET_PROPERTY(GLOBAL PROPERTY RULE_PROGRESS ${CMAKE_RULE_PROGRESS})
+ ENDIF(DEFINED CMAKE_RULE_PROGRESS)
ENDIF(CMAKE_GENERATOR MATCHES "Makefiles")
# Set a variable to indicate whether the value of CMAKE_INSTALL_PREFIX
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
// ================================================================
diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt
index b2ed25c..569ca30 100644
--- a/Tests/Complex/CMakeLists.txt
+++ b/Tests/Complex/CMakeLists.txt
@@ -14,6 +14,9 @@ IF(POLICY CMP0003)
ENDIF(NOT "${P3}" STREQUAL "NEW")
ENDIF(POLICY CMP0003)
+# Test building without per-rule progress in Makefiles.
+SET_PROPERTY(GLOBAL PROPERTY RULE_PROGRESS OFF)
+
# Choose whether to test CMakeLib.
SET(COMPLEX_TEST_CMAKELIB 1)
IF(CMAKE_TEST_DIFFERENT_GENERATOR)
diff --git a/Tests/ComplexOneConfig/CMakeLists.txt b/Tests/ComplexOneConfig/CMakeLists.txt
index b2ed25c..569ca30 100644
--- a/Tests/ComplexOneConfig/CMakeLists.txt
+++ b/Tests/ComplexOneConfig/CMakeLists.txt
@@ -14,6 +14,9 @@ IF(POLICY CMP0003)
ENDIF(NOT "${P3}" STREQUAL "NEW")
ENDIF(POLICY CMP0003)
+# Test building without per-rule progress in Makefiles.
+SET_PROPERTY(GLOBAL PROPERTY RULE_PROGRESS OFF)
+
# Choose whether to test CMakeLib.
SET(COMPLEX_TEST_CMAKELIB 1)
IF(CMAKE_TEST_DIFFERENT_GENERATOR)
diff --git a/Tests/ComplexRelativePaths/CMakeLists.txt b/Tests/ComplexRelativePaths/CMakeLists.txt
index b2ed25c..569ca30 100644
--- a/Tests/ComplexRelativePaths/CMakeLists.txt
+++ b/Tests/ComplexRelativePaths/CMakeLists.txt
@@ -14,6 +14,9 @@ IF(POLICY CMP0003)
ENDIF(NOT "${P3}" STREQUAL "NEW")
ENDIF(POLICY CMP0003)
+# Test building without per-rule progress in Makefiles.
+SET_PROPERTY(GLOBAL PROPERTY RULE_PROGRESS OFF)
+
# Choose whether to test CMakeLib.
SET(COMPLEX_TEST_CMAKELIB 1)
IF(CMAKE_TEST_DIFFERENT_GENERATOR)