diff options
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r-- | Source/cmMakefileTargetGenerator.cxx | 181 |
1 files changed, 71 insertions, 110 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx index c1cf103..2acd57a 100644 --- a/Source/cmMakefileTargetGenerator.cxx +++ b/Source/cmMakefileTargetGenerator.cxx @@ -153,18 +153,16 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules() this->GeneratorTarget->GetCustomCommands(customCommands, config); std::string currentBinDir = this->LocalGenerator->GetCurrentBinaryDirectory(); - for (std::vector<cmSourceFile const*>::const_iterator si = - customCommands.begin(); - si != customCommands.end(); ++si) { - cmCustomCommandGenerator ccg(*(*si)->GetCustomCommand(), this->ConfigName, + for (cmSourceFile const* sf : customCommands) { + cmCustomCommandGenerator ccg(*sf->GetCustomCommand(), this->ConfigName, this->LocalGenerator); this->GenerateCustomRuleFile(ccg); if (clean) { const std::vector<std::string>& outputs = ccg.GetOutputs(); - for (std::vector<std::string>::const_iterator o = outputs.begin(); - o != outputs.end(); ++o) { + for (std::string const& output : outputs) { this->CleanFiles.push_back( - this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, *o)); + this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, + output)); } } } @@ -178,18 +176,14 @@ void cmMakefileTargetGenerator::WriteTargetBuildRules() extraSources, this->MacOSXContentGenerator); std::vector<cmSourceFile const*> externalObjects; this->GeneratorTarget->GetExternalObjects(externalObjects, config); - for (std::vector<cmSourceFile const*>::const_iterator si = - externalObjects.begin(); - si != externalObjects.end(); ++si) { - this->ExternalObjects.push_back((*si)->GetFullPath()); + for (cmSourceFile const* sf : externalObjects) { + this->ExternalObjects.push_back(sf->GetFullPath()); } std::vector<cmSourceFile const*> objectSources; this->GeneratorTarget->GetObjectSources(objectSources, config); - for (std::vector<cmSourceFile const*>::const_iterator si = - objectSources.begin(); - si != objectSources.end(); ++si) { + for (cmSourceFile const* sf : objectSources) { // Generate this object file's rule file. - this->WriteObjectRuleFiles(**si); + this->WriteObjectRuleFiles(*sf); } } @@ -272,28 +266,26 @@ void cmMakefileTargetGenerator::WriteTargetLanguageFlags() languages, this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE")); // put the compiler in the rules.make file so that if it changes // things rebuild - for (std::set<std::string>::const_iterator l = languages.begin(); - l != languages.end(); ++l) { + for (std::string const& language : languages) { std::string compiler = "CMAKE_"; - compiler += *l; + compiler += language; compiler += "_COMPILER"; - *this->FlagFileStream << "# compile " << *l << " with " + *this->FlagFileStream << "# compile " << language << " with " << this->Makefile->GetSafeDefinition(compiler) << "\n"; } - for (std::set<std::string>::const_iterator l = languages.begin(); - l != languages.end(); ++l) { - std::string flags = this->GetFlags(*l); - std::string defines = this->GetDefines(*l); - std::string includes = this->GetIncludes(*l); + for (std::string const& language : languages) { + std::string flags = this->GetFlags(language); + std::string defines = this->GetDefines(language); + std::string includes = this->GetIncludes(language); // Escape comment characters so they do not terminate assignment. cmSystemTools::ReplaceString(flags, "#", "\\#"); cmSystemTools::ReplaceString(defines, "#", "\\#"); cmSystemTools::ReplaceString(includes, "#", "\\#"); - *this->FlagFileStream << *l << "_FLAGS = " << flags << "\n\n"; - *this->FlagFileStream << *l << "_DEFINES = " << defines << "\n\n"; - *this->FlagFileStream << *l << "_INCLUDES = " << includes << "\n\n"; + *this->FlagFileStream << language << "_FLAGS = " << flags << "\n\n"; + *this->FlagFileStream << language << "_DEFINES = " << defines << "\n\n"; + *this->FlagFileStream << language << "_INCLUDES = " << includes << "\n\n"; } } @@ -673,10 +665,8 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( if (clauncher && *clauncher) { std::vector<std::string> launcher_cmd; cmSystemTools::ExpandListArgument(clauncher, launcher_cmd, true); - for (std::vector<std::string>::iterator i = launcher_cmd.begin(), - e = launcher_cmd.end(); - i != e; ++i) { - *i = this->LocalGenerator->EscapeForShell(*i); + for (std::string& i : launcher_cmd) { + i = this->LocalGenerator->EscapeForShell(i); } std::string const& run_launcher = cmJoin(launcher_cmd, " ") + " "; compileCommands.front().insert(0, run_launcher); @@ -694,11 +684,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( } // Expand placeholders in the commands. - for (std::vector<std::string>::iterator i = compileCommands.begin(); - i != compileCommands.end(); ++i) { - *i = launcher + *i; - rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, *i, - vars); + for (std::string& compileCommand : compileCommands) { + compileCommand = launcher + compileCommand; + rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, + compileCommand, vars); } // Change the command working directory to the local build tree. @@ -759,11 +748,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( vars.PreprocessedSource = shellObjI.c_str(); // Expand placeholders in the commands. - for (std::vector<std::string>::iterator i = preprocessCommands.begin(); - i != preprocessCommands.end(); ++i) { + for (std::string& preprocessCommand : preprocessCommands) { // no launcher for preprocessor commands - rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, - *i, vars); + rulePlaceholderExpander->ExpandRuleVariables( + this->LocalGenerator, preprocessCommand, vars); } this->LocalGenerator->CreateCDCommand( @@ -808,11 +796,10 @@ void cmMakefileTargetGenerator::WriteObjectBuildFile( vars.AssemblySource = shellObjS.c_str(); // Expand placeholders in the commands. - for (std::vector<std::string>::iterator i = assemblyCommands.begin(); - i != assemblyCommands.end(); ++i) { + for (std::string& assemblyCommand : assemblyCommands) { // no launcher for assembly commands rulePlaceholderExpander->ExpandRuleVariables(this->LocalGenerator, - *i, vars); + assemblyCommand, vars); } this->LocalGenerator->CreateCDCommand( @@ -880,10 +867,9 @@ void cmMakefileTargetGenerator::WriteTargetRequiresRules() // This target drives dependency generation for all object files. std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath(); std::string objTarget; - for (std::vector<std::string>::const_iterator obj = this->Objects.begin(); - obj != this->Objects.end(); ++obj) { + for (std::string const& obj : this->Objects) { objTarget = relPath; - objTarget += *obj; + objTarget += obj; objTarget += ".requires"; depends.push_back(objTarget); } @@ -1007,12 +993,10 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() << "# Pairs of files generated by the same build rule.\n" << "set(CMAKE_MULTIPLE_OUTPUT_PAIRS\n"; /* clang-format on */ - for (MultipleOutputPairsType::const_iterator pi = - this->MultipleOutputPairs.begin(); - pi != this->MultipleOutputPairs.end(); ++pi) { + for (auto const& pi : this->MultipleOutputPairs) { *this->InfoFileStream - << " " << cmOutputConverter::EscapeForCMake(pi->first) << " " - << cmOutputConverter::EscapeForCMake(pi->second) << "\n"; + << " " << cmOutputConverter::EscapeForCMake(pi.first) << " " + << cmOutputConverter::EscapeForCMake(pi.second) << "\n"; } *this->InfoFileStream << " )\n\n"; } @@ -1026,9 +1010,8 @@ void cmMakefileTargetGenerator::WriteTargetDependRules() << "set(CMAKE_TARGET_LINKED_INFO_FILES\n"; /* clang-format on */ std::vector<std::string> dirs = this->GetLinkedTargetDirectories(); - for (std::vector<std::string>::iterator i = dirs.begin(); i != dirs.end(); - ++i) { - *this->InfoFileStream << " \"" << *i << "/DependInfo.cmake\"\n"; + for (std::string const& d : dirs) { + *this->InfoFileStream << " \"" << d << "/DependInfo.cmake\"\n"; } *this->InfoFileStream << " )\n"; } @@ -1126,9 +1109,8 @@ void cmMakefileTargetGenerator::DriveCustomCommands( std::vector<cmSourceFile*> sources; this->GeneratorTarget->GetSourceFiles( sources, this->Makefile->GetSafeDefinition("CMAKE_BUILD_TYPE")); - for (std::vector<cmSourceFile*>::const_iterator source = sources.begin(); - source != sources.end(); ++source) { - if (cmCustomCommand* cc = (*source)->GetCustomCommand()) { + for (cmSourceFile* source : sources) { + if (cmCustomCommand* cc = source->GetCustomCommand()) { cmCustomCommandGenerator ccg(*cc, this->ConfigName, this->LocalGenerator); const std::vector<std::string>& outputs = ccg.GetOutputs(); @@ -1187,12 +1169,10 @@ void cmMakefileTargetGenerator::GenerateCustomRuleFile( } // Setup implicit dependency scanning. - for (cmCustomCommand::ImplicitDependsList::const_iterator idi = - ccg.GetCC().GetImplicitDepends().begin(); - idi != ccg.GetCC().GetImplicitDepends().end(); ++idi) { + for (auto const& idi : ccg.GetCC().GetImplicitDepends()) { std::string objFullPath = cmSystemTools::CollapseFullPath(outputs[0]); - std::string srcFullPath = cmSystemTools::CollapseFullPath(idi->second); - this->LocalGenerator->AddImplicitDepends(this->GeneratorTarget, idi->first, + std::string srcFullPath = cmSystemTools::CollapseFullPath(idi.second); + this->LocalGenerator->AddImplicitDepends(this->GeneratorTarget, idi.first, objFullPath.c_str(), srcFullPath.c_str()); } @@ -1225,11 +1205,10 @@ void cmMakefileTargetGenerator::WriteObjectsVariable( if (!lineContinue) { lineContinue = "\\"; } - for (std::vector<std::string>::const_iterator i = this->Objects.begin(); - i != this->Objects.end(); ++i) { + for (std::string const& obj : this->Objects) { *this->BuildFileStream << " " << lineContinue << "\n"; *this->BuildFileStream << this->LocalGenerator->ConvertToQuotedOutputPath( - i->c_str(), useWatcomQuote); + obj.c_str(), useWatcomQuote); } *this->BuildFileStream << "\n"; @@ -1246,14 +1225,12 @@ void cmMakefileTargetGenerator::WriteObjectsVariable( /* clang-format on */ std::string currentBinDir = this->LocalGenerator->GetCurrentBinaryDirectory(); - for (std::vector<std::string>::const_iterator i = - this->ExternalObjects.begin(); - i != this->ExternalObjects.end(); ++i) { + for (std::string const& obj : this->ExternalObjects) { object = - this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, *i); + this->LocalGenerator->MaybeConvertToRelativePath(currentBinDir, obj); *this->BuildFileStream << " " << lineContinue << "\n"; *this->BuildFileStream << this->LocalGenerator->ConvertToQuotedOutputPath( - i->c_str(), useWatcomQuote); + obj.c_str(), useWatcomQuote); } *this->BuildFileStream << "\n" << "\n"; @@ -1323,14 +1300,11 @@ void cmMakefileTargetGenerator::WriteObjectsStrings( cmMakefileTargetGeneratorObjectStrings helper( objStrings, this->LocalGenerator, this->LocalGenerator->GetStateSnapshot().GetDirectory(), limit); - for (std::vector<std::string>::const_iterator i = this->Objects.begin(); - i != this->Objects.end(); ++i) { - helper.Feed(*i); + for (std::string const& obj : this->Objects) { + helper.Feed(obj); } - for (std::vector<std::string>::const_iterator i = - this->ExternalObjects.begin(); - i != this->ExternalObjects.end(); ++i) { - helper.Feed(*i); + for (std::string const& obj : this->ExternalObjects) { + helper.Feed(obj); } helper.Done(); } @@ -1398,10 +1372,9 @@ void cmMakefileTargetGenerator::AppendObjectDepends( // Add dependencies on the compiled object files. std::string relPath = this->LocalGenerator->GetHomeRelativeOutputPath(); std::string objTarget; - for (std::vector<std::string>::const_iterator obj = this->Objects.begin(); - obj != this->Objects.end(); ++obj) { + for (std::string const& obj : this->Objects) { objTarget = relPath; - objTarget += *obj; + objTarget += obj; depends.push_back(objTarget); } @@ -1426,19 +1399,16 @@ void cmMakefileTargetGenerator::AppendLinkDepends( if (cmGeneratorTarget::ModuleDefinitionInfo const* mdi = this->GeneratorTarget->GetModuleDefinitionInfo( this->GetConfigName())) { - for (std::vector<cmSourceFile const*>::const_iterator i = - mdi->Sources.begin(); - i != mdi->Sources.end(); ++i) { - depends.push_back((*i)->GetFullPath()); + for (cmSourceFile const* src : mdi->Sources) { + depends.push_back(src->GetFullPath()); } } // Add a dependency on user-specified manifest files, if any. std::vector<cmSourceFile const*> manifest_srcs; this->GeneratorTarget->GetManifests(manifest_srcs, this->ConfigName); - for (std::vector<cmSourceFile const*>::iterator mi = manifest_srcs.begin(); - mi != manifest_srcs.end(); ++mi) { - depends.push_back((*mi)->GetFullPath()); + for (cmSourceFile const* manifest_src : manifest_srcs) { + depends.push_back(manifest_src->GetFullPath()); } // Add user-specified dependencies. @@ -1481,12 +1451,11 @@ void cmMakefileTargetGenerator::CreateLinkScript( linkScriptName += name; cmGeneratedFileStream linkScriptStream(linkScriptName.c_str()); linkScriptStream.SetCopyIfDifferent(true); - for (std::vector<std::string>::const_iterator cmd = link_commands.begin(); - cmd != link_commands.end(); ++cmd) { + for (std::string const& link_command : link_commands) { // Do not write out empty commands or commands beginning in the // shell no-op ":". - if (!cmd->empty() && (*cmd)[0] != ':') { - linkScriptStream << *cmd << "\n"; + if (!link_command.empty() && link_command[0] != ':') { + linkScriptStream << link_command << "\n"; } } @@ -1521,14 +1490,11 @@ bool cmMakefileTargetGenerator::CheckUseResponseFileForObjects( // actual list will likely be much shorter than this. However, in the // worst case all objects will remain as absolute paths. size_t length = 0; - for (std::vector<std::string>::const_iterator i = this->Objects.begin(); - i != this->Objects.end(); ++i) { - length += i->size() + 3; + for (std::string const& obj : this->Objects) { + length += obj.size() + 3; } - for (std::vector<std::string>::const_iterator i = - this->ExternalObjects.begin(); - i != this->ExternalObjects.end(); ++i) { - length += i->size() + 3; + for (std::string const& ext_obj : this->ExternalObjects) { + length += ext_obj.size() + 3; } // We need to guarantee room for both objects and libraries, so @@ -1751,22 +1717,17 @@ void cmMakefileTargetGenerator::GenDefFile( cmGeneratedFileStream fout(objlist_file.c_str()); if (mdi->WindowsExportAllSymbols) { - for (std::vector<std::string>::const_iterator i = this->Objects.begin(); - i != this->Objects.end(); ++i) { - if (cmHasLiteralSuffix(*i, ".obj")) { - fout << *i << "\n"; + for (std::string const& obj : this->Objects) { + if (cmHasLiteralSuffix(obj, ".obj")) { + fout << obj << "\n"; } } - for (std::vector<std::string>::const_iterator i = - this->ExternalObjects.begin(); - i != this->ExternalObjects.end(); ++i) { - fout << *i << "\n"; + for (std::string const& obj : this->ExternalObjects) { + fout << obj << "\n"; } } - for (std::vector<cmSourceFile const*>::const_iterator i = - mdi->Sources.begin(); - i != mdi->Sources.end(); ++i) { - fout << (*i)->GetFullPath() << "\n"; + for (cmSourceFile const* src : mdi->Sources) { + fout << src->GetFullPath() << "\n"; } } |