Browse Source

BUG: Added /fast targets in subdirectory makefiles. Removed bogus INSTALL_*/fast targets. Also fixed preinstall/fast target.

Brad King 19 years ago
parent
commit
791706a52f
2 changed files with 31 additions and 19 deletions
  1. 13 17
      Source/cmGlobalUnixMakefileGenerator3.cxx
  2. 18 2
      Source/cmLocalUnixMakefileGenerator3.cxx

+ 13 - 17
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -680,17 +680,17 @@ cmGlobalUnixMakefileGenerator3
     cmTargets& targets = lg->GetMakefile()->GetTargets();
     for(cmTargets::iterator t = targets.begin(); t != targets.end(); ++t)
       {
-      if((t->second.GetType() == cmTarget::EXECUTABLE) ||
-         (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
-         (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
-         (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
-         (t->second.GetType() == cmTarget::UTILITY))
+      // Don't emit the same rule twice (e.g. two targets with the same
+      // simple name)
+      if(t->second.GetName() &&
+         strlen(t->second.GetName()) &&
+         emitted.insert(t->second.GetName()).second)
         {
-        // Don't emit the same rule twice (e.g. two targets with the same
-        // simple name)
-        if(t->second.GetName() &&
-           strlen(t->second.GetName()) &&
-           emitted.insert(t->second.GetName()).second)
+        if((t->second.GetType() == cmTarget::EXECUTABLE) ||
+           (t->second.GetType() == cmTarget::STATIC_LIBRARY) ||
+           (t->second.GetType() == cmTarget::SHARED_LIBRARY) ||
+           (t->second.GetType() == cmTarget::MODULE_LIBRARY) ||
+           (t->second.GetType() == cmTarget::UTILITY))
           {
           // Add a rule to build the target by name.
           lg->WriteDivider(ruleFileStream);
@@ -762,14 +762,10 @@ cmGlobalUnixMakefileGenerator3
           lg->WriteMakeRule(ruleFileStream, "fast build rule for target.",
                             localName.c_str(), depends, commands, true);
           }
-        }
-      else
-        {
-        if(t->second.GetName() &&
-           strlen(t->second.GetName()) &&
-           emitted.insert(t->second.GetName()).second)
+        else if(t->second.GetType() == cmTarget::GLOBAL_TARGET)
           {
-          // Add a fast rule to build the target
+          // Provide a fast target for the global targets that just
+          // forwards to the real target so at least it will work.
           depends.clear();
           commands.clear();
           std::string localName = t->second.GetName();

+ 18 - 2
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -296,6 +296,23 @@ void cmLocalUnixMakefileGenerator3
         this->WriteMakeRule(ruleFileStream, "Convenience name for target.",
                             t->second.GetName(), depends, commands, true);
         }
+
+      // Add a fast rule to build the target
+      std::string makefileName = this->GetRelativeTargetDirectory(t->second);
+      makefileName += "/build.make";
+      std::string makeTargetName = this->GetRelativeTargetDirectory(t->second);
+      makeTargetName += "/build";
+      localName = t->second.GetName();
+      localName += "/fast";
+      depends.clear();
+      commands.clear();
+      commands.push_back(this->GetRecursiveMakeCall
+                         (makefileName.c_str(), makeTargetName.c_str()));
+      this->CreateCDCommand(commands,
+                            this->Makefile->GetHomeOutputDirectory(),
+                            this->Makefile->GetStartOutputDirectory());
+      this->WriteMakeRule(ruleFileStream, "fast build rule for target.",
+                          localName.c_str(), depends, commands, true);
       }
     }
 }
@@ -1481,8 +1498,7 @@ void cmLocalUnixMakefileGenerator3
                         this->Makefile->GetStartOutputDirectory());
   this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.",
                       "preinstall", depends, commands, true);
-  commands.clear();
-  depends.push_back("preinstall");
+  depends.clear();
   this->WriteMakeRule(ruleFileStream, "Prepare targets for installation.",
                       "preinstall/fast", depends, commands, true);