1
0
Эх сурвалжийг харах

ENH: Added options CMAKE_SKIP_PREPROCESSED_SOURCE_RULES and CMAKE_SKIP_ASSEMBLY_SOURCE_RULES to allow projects to disable generation of .E and .S rules.

Brad King 19 жил өмнө
parent
commit
8c94be3f18

+ 7 - 1
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -49,6 +49,8 @@ cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3()
   this->UnixCD = true;
   this->ForceVerboseMakefiles=false;
   this->ColorMakefile = false;
+  this->SkipPreprocessedSourceRules = false;
+  this->SkipAssemblySourceRules = false;
 }
 
 //----------------------------------------------------------------------------
@@ -76,9 +78,13 @@ void cmLocalUnixMakefileGenerator3::Generate()
   // Setup our configuration variables for this directory.
   this->ConfigureOutputPaths();
 
-  // Record whether color makefiles are enabled to avoid checking many
+  // Record whether some options are enabled to avoid checking many
   // times later.
   this->ColorMakefile = this->Makefile->IsOn("CMAKE_COLOR_MAKEFILE");
+  this->SkipPreprocessedSourceRules =
+    this->Makefile->IsOn("CMAKE_SKIP_PREPROCESSED_SOURCE_RULES");
+  this->SkipAssemblySourceRules =
+    this->Makefile->IsOn("CMAKE_SKIP_ASSEMBLY_SOURCE_RULES");
 
   // Generate the rule files for each target.
   cmTargets& targets = this->Makefile->GetTargets();

+ 14 - 2
Source/cmLocalUnixMakefileGenerator3.h

@@ -212,8 +212,14 @@ public:
   /** Get whether to create rules to generate preprocessed and
       assembly sources.  This could be converted to a variable lookup
       later.  */
-  bool GetCreatePreprocessedSourceRules() { return true; }
-  bool GetCreateAssemblySourceRules() { return true; }
+  bool GetCreatePreprocessedSourceRules()
+    {
+    return !this->SkipPreprocessedSourceRules;
+    }
+  bool GetCreateAssemblySourceRules()
+    {
+    return !this->SkipAssemblySourceRules;
+    }
 
 protected:
   // these two methods just compute reasonable values for LibraryOutputPath
@@ -324,6 +330,12 @@ private:
      beginning of generation to avoid many duplicate lookups.  */
   bool ColorMakefile;
 
+  /* Copy the setting of CMAKE_SKIP_PREPROCESSED_SOURCE_RULES and
+     CMAKE_SKIP_ASSEMBLY_SOURCE_RULES at the beginning of generation to
+     avoid many duplicate lookups.  */
+  bool SkipPreprocessedSourceRules;
+  bool SkipAssemblySourceRules;
+
   std::map<cmStdString,std::vector<cmTarget *> > LocalObjectFiles;
 
   /* does the work for each target */