Makefile: Factor out some duplicate link libraries generation

The generators for executable and library targets duplicate the logic to
call the OutputLinkLibraries helper on the local generator.  Factor it
out into a cmMakefileTargetGenerator::CreateLinkLibs method to avoid
dpulication.
This commit is contained in:
Brad King 2014-03-04 11:20:27 -05:00
parent 74b982ce73
commit c87517099a
4 changed files with 21 additions and 12 deletions

View File

@ -325,12 +325,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
// Collect up flags to link in needed libraries.
std::string linkLibs;
std::string frameworkPath;
std::string linkPath;
this->LocalGenerator->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
*this->GeneratorTarget,
relink);
linkLibs = frameworkPath + linkPath + linkLibs;
this->CreateLinkLibs(linkLibs, relink, depends);
// Construct object file lists that may be needed to expand the
// rule.
std::string buildObjs;

View File

@ -546,12 +546,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
std::string linkLibs;
if(this->Target->GetType() != cmTarget::STATIC_LIBRARY)
{
std::string frameworkPath;
std::string linkPath;
this->LocalGenerator
->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
*this->GeneratorTarget, relink);
linkLibs = frameworkPath + linkPath + linkLibs;
this->CreateLinkLibs(linkLibs, relink, depends);
}
// Construct object file lists that may be needed to expand the

View File

@ -1830,6 +1830,20 @@ cmMakefileTargetGenerator
return responseFileName;
}
//----------------------------------------------------------------------------
void
cmMakefileTargetGenerator
::CreateLinkLibs(std::string& linkLibs, bool relink,
std::vector<std::string>& makefile_depends)
{
std::string frameworkPath;
std::string linkPath;
this->LocalGenerator
->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
*this->GeneratorTarget, relink);
linkLibs = frameworkPath + linkPath + linkLibs;
}
//----------------------------------------------------------------------------
void
cmMakefileTargetGenerator

View File

@ -163,6 +163,10 @@ protected:
std::string const& options,
std::vector<std::string>& makefile_depends);
/** Create list of flags for link libraries. */
void CreateLinkLibs(std::string& linkLibs, bool relink,
std::vector<std::string>& makefile_depends);
/** Create lists of object files for linking and cleaning. */
void CreateObjectLists(bool useLinkScript, bool useArchiveRules,
bool useResponseFile, std::string& buildObjs,