summaryrefslogtreecommitdiffstats
path: root/Source/cmMakefileTargetGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-03-06 14:46:50 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-03-06 14:46:50 (GMT)
commit7c9041bdab8c3af5b96384538de00b96599eead9 (patch)
tree605dfc0b66a43294dcdf78ab23608e260497125f /Source/cmMakefileTargetGenerator.cxx
parent70da6f198f8def8201c562365b914c700b10b95b (diff)
parent489b1c23b9a880da0012427b60cce7b6f5ddaa27 (diff)
downloadCMake-7c9041bdab8c3af5b96384538de00b96599eead9.zip
CMake-7c9041bdab8c3af5b96384538de00b96599eead9.tar.gz
CMake-7c9041bdab8c3af5b96384538de00b96599eead9.tar.bz2
Merge topic 'link-libraries-response-files'
489b1c23 Windows: Use response files to specify link libraries for GNU tools 745caae6 Makefile: Rename linker response file boolean to be more specific 5e8e4d0f cmLocalGenerator: Add response file option to OutputLinkLibraries b9aa5041 cmLocalGenerator: Simplify GetIncludeFlags output formatting 971653b7 cmLocalGenerator: Add format option to ConvertToLinkReference 0c0ef9e7 cmLocalGenerator: Add format option to ConvertToIncludeReference 02bebd60 cmLocalGenerator: Add format option to ConvertToOutputForExisting c8751709 Makefile: Factor out some duplicate link libraries generation
Diffstat (limited to 'Source/cmMakefileTargetGenerator.cxx')
-rw-r--r--Source/cmMakefileTargetGenerator.cxx40
1 files changed, 40 insertions, 0 deletions
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index e8a9fd1..facbcc6 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -1833,6 +1833,46 @@ cmMakefileTargetGenerator
//----------------------------------------------------------------------------
void
cmMakefileTargetGenerator
+::CreateLinkLibs(std::string& linkLibs, bool relink,
+ bool useResponseFile,
+ std::vector<std::string>& makefile_depends)
+{
+ std::string frameworkPath;
+ std::string linkPath;
+ this->LocalGenerator
+ ->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
+ *this->GeneratorTarget, relink,
+ useResponseFile);
+ linkLibs = frameworkPath + linkPath + linkLibs;
+
+ if(useResponseFile)
+ {
+ // Lookup the response file reference flag.
+ std::string responseFlagVar = "CMAKE_";
+ responseFlagVar += this->Target->GetLinkerLanguage(this->ConfigName);
+ responseFlagVar += "_RESPONSE_FILE_LINK_FLAG";
+ const char* responseFlag =
+ this->Makefile->GetDefinition(responseFlagVar.c_str());
+ if(!responseFlag)
+ {
+ responseFlag = "@";
+ }
+
+ // Create this response file.
+ std::string link_rsp =
+ this->CreateResponseFile("linklibs.rsp", linkLibs, makefile_depends);
+
+ // Reference the response file.
+ linkLibs = responseFlag;
+ linkLibs += this->Convert(link_rsp.c_str(),
+ cmLocalGenerator::NONE,
+ cmLocalGenerator::SHELL);
+ }
+}
+
+//----------------------------------------------------------------------------
+void
+cmMakefileTargetGenerator
::CreateObjectLists(bool useLinkScript, bool useArchiveRules,
bool useResponseFile, std::string& buildObjs,
std::vector<std::string>& makefile_depends)