|  | @@ -20,6 +20,7 @@
 | 
	
		
			
				|  |  |  #include "cmGeneratedFileStream.h"
 | 
	
		
			
				|  |  |  #include "cmGeneratorExpressionEvaluationFile.h"
 | 
	
		
			
				|  |  |  #include "cmGeneratorTarget.h"
 | 
	
		
			
				|  |  | +#include "cmGlobalGenerator.h"
 | 
	
		
			
				|  |  |  #include "cmListFileCache.h"
 | 
	
		
			
				|  |  |  #include "cmLocalGenerator.h"
 | 
	
		
			
				|  |  |  #include "cmLocalNinjaGenerator.h"
 | 
	
	
		
			
				|  | @@ -888,11 +889,6 @@ void cmGlobalNinjaGenerator::WriteDisclaimer(std::ostream& os)
 | 
	
		
			
				|  |  |       << cmVersion::GetMinorVersion() << "\n\n";
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void cmGlobalNinjaGenerator::AddDependencyToAll(cmGeneratorTarget* target)
 | 
	
		
			
				|  |  | -{
 | 
	
		
			
				|  |  | -  this->AppendTargetOutputs(target, this->AllDependencies);
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  void cmGlobalNinjaGenerator::WriteAssumedSourceDependencies()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    for (auto const& asd : this->AssumedSourceDependencies) {
 | 
	
	
		
			
				|  | @@ -1091,19 +1087,11 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
 | 
	
		
			
				|  |  |    cmGlobalNinjaGenerator::WriteDivider(os);
 | 
	
		
			
				|  |  |    os << "# Folder targets.\n\n";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  std::string const& rootBinaryDir =
 | 
	
		
			
				|  |  | -    this->LocalGenerators[0]->GetBinaryDirectory();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    std::map<std::string, cmNinjaDeps> targetsPerFolder;
 | 
	
		
			
				|  |  |    for (cmLocalGenerator const* lg : this->LocalGenerators) {
 | 
	
		
			
				|  |  |      std::string const& currentBinaryFolder(
 | 
	
		
			
				|  |  |        lg->GetStateSnapshot().GetDirectory().GetCurrentBinary());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // Do not generate a rule for the root binary dir.
 | 
	
		
			
				|  |  | -    if (currentBinaryFolder == rootBinaryDir) {
 | 
	
		
			
				|  |  | -      continue;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      // The directory-level rule should depend on the target-level rules
 | 
	
		
			
				|  |  |      // for all targets in the directory.
 | 
	
		
			
				|  |  |      cmNinjaDeps& folderTargets = targetsPerFolder[currentBinaryFolder];
 | 
	
	
		
			
				|  | @@ -1121,19 +1109,16 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
 | 
	
		
			
				|  |  |              continue;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            // This target has been explicitly un-excluded.  The directory-level
 | 
	
		
			
				|  |  | -          // rule for every directory between this and the root (exclusive)
 | 
	
		
			
				|  |  | -          // should depend on the target-level rule for this target.
 | 
	
		
			
				|  |  | -          cmStateSnapshot dir =
 | 
	
		
			
				|  |  | -            lg->GetStateSnapshot().GetBuildsystemDirectoryParent();
 | 
	
		
			
				|  |  | -          cmStateSnapshot parent = dir.GetBuildsystemDirectoryParent();
 | 
	
		
			
				|  |  | -          while (parent.IsValid()) {
 | 
	
		
			
				|  |  | +          // rule for every directory between this and the root should depend
 | 
	
		
			
				|  |  | +          // on the target-level rule for this target.
 | 
	
		
			
				|  |  | +          for (cmStateSnapshot dir =
 | 
	
		
			
				|  |  | +                 lg->GetStateSnapshot().GetBuildsystemDirectoryParent();
 | 
	
		
			
				|  |  | +               dir.IsValid(); dir = dir.GetBuildsystemDirectoryParent()) {
 | 
	
		
			
				|  |  |              std::string const& folder = dir.GetDirectory().GetCurrentBinary();
 | 
	
		
			
				|  |  | -            targetsPerFolder[folder].push_back(gt->GetName());
 | 
	
		
			
				|  |  | -            dir = parent;
 | 
	
		
			
				|  |  | -            parent = parent.GetBuildsystemDirectoryParent();
 | 
	
		
			
				|  |  | +            this->AppendTargetOutputs(gt, targetsPerFolder[folder]);
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        folderTargets.push_back(gt->GetName());
 | 
	
		
			
				|  |  | +        this->AppendTargetOutputs(gt, folderTargets);
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1296,22 +1281,18 @@ void cmGlobalNinjaGenerator::WriteBuiltinTargets(std::ostream& os)
 | 
	
		
			
				|  |  |    cmGlobalNinjaGenerator::WriteDivider(os);
 | 
	
		
			
				|  |  |    os << "# Built-in targets\n\n";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  this->WriteTargetAll(os);
 | 
	
		
			
				|  |  | +  this->WriteTargetDefault(os);
 | 
	
		
			
				|  |  |    this->WriteTargetRebuildManifest(os);
 | 
	
		
			
				|  |  |    this->WriteTargetClean(os);
 | 
	
		
			
				|  |  |    this->WriteTargetHelp(os);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void cmGlobalNinjaGenerator::WriteTargetAll(std::ostream& os)
 | 
	
		
			
				|  |  | +void cmGlobalNinjaGenerator::WriteTargetDefault(std::ostream& os)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  cmNinjaBuild build("phony");
 | 
	
		
			
				|  |  | -  build.Comment = "The main all target.";
 | 
	
		
			
				|  |  | -  build.Outputs.push_back(this->TargetAll);
 | 
	
		
			
				|  |  | -  build.ExplicitDeps = this->AllDependencies;
 | 
	
		
			
				|  |  | -  this->WriteBuild(os, build);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |    if (!this->HasOutputPathPrefix()) {
 | 
	
		
			
				|  |  | -    cmGlobalNinjaGenerator::WriteDefault(os, build.Outputs,
 | 
	
		
			
				|  |  | +    cmNinjaDeps all;
 | 
	
		
			
				|  |  | +    all.push_back(this->TargetAll);
 | 
	
		
			
				|  |  | +    cmGlobalNinjaGenerator::WriteDefault(os, all,
 | 
	
		
			
				|  |  |                                           "Make the all target the default.");
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  }
 |