summaryrefslogtreecommitdiffstats
path: root/Source/cmake.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2012-09-19 17:58:12 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2012-09-19 17:58:12 (GMT)
commit8fc88b7eb0a46544c7a6815181bd5899231c2129 (patch)
tree304cea631cd2738fc3b100f30497b56bb1c8f075 /Source/cmake.cxx
parentd58448544c0c10a188101b164aeb3d518088bd9e (diff)
parent5598d9b2a06d4ec788b5e058435bb3bba99fd517 (diff)
downloadCMake-8fc88b7eb0a46544c7a6815181bd5899231c2129.zip
CMake-8fc88b7eb0a46544c7a6815181bd5899231c2129.tar.gz
CMake-8fc88b7eb0a46544c7a6815181bd5899231c2129.tar.bz2
Merge topic 'vs-link-rsp'
5598d9b Ninja: don't expand any rsp files
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r--Source/cmake.cxx22
1 files changed, 15 insertions, 7 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 079ea36..1750daa 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -1682,11 +1682,19 @@ int cmake::ExecuteCMakeCommand(std::vector<std::string>& args)
}
else if (args[1] == "vs_link_exe")
{
- return cmake::VisualStudioLink(args, 1);
+ return cmake::VisualStudioLink(args, 1, false);
}
else if (args[1] == "vs_link_dll")
{
- return cmake::VisualStudioLink(args, 2);
+ return cmake::VisualStudioLink(args, 2, false);
+ }
+ else if (args[1] == "vs_link_exe_no_rsp_expand")
+ {
+ return cmake::VisualStudioLink(args, 1, true);
+ }
+ else if (args[1] == "vs_link_dll_no_rsp_expand")
+ {
+ return cmake::VisualStudioLink(args, 2, true);
}
#ifdef CMAKE_BUILD_WITH_CMAKE
// Internal CMake color makefile support.
@@ -4012,7 +4020,8 @@ static bool cmakeCheckStampList(const char* stampList)
// For visual studio 2005 and newer manifest files need to be embeded into
// exe and dll's. This code does that in such a way that incremental linking
// still works.
-int cmake::VisualStudioLink(std::vector<std::string>& args, int type)
+int cmake::VisualStudioLink(std::vector<std::string>& args, int type,
+ bool no_rsp_expand)
{
if(args.size() < 2)
{
@@ -4027,13 +4036,12 @@ int cmake::VisualStudioLink(std::vector<std::string>& args, int type)
for(std::vector<std::string>::iterator i = args.begin();
i != args.end(); ++i)
{
- // check for nmake temporary files
- if((*i)[0] == '@' && i->find("@CMakeFiles") != 0 )
+ // check for nmake temporary files (there are two rsp files)
+ if(!no_rsp_expand && (*i)[0] == '@' && i->find("@CMakeFiles") != 0 )
{
std::ifstream fin(i->substr(1).c_str());
std::string line;
- while(cmSystemTools::GetLineFromStream(fin,
- line))
+ while(cmSystemTools::GetLineFromStream(fin, line))
{
cmSystemTools::ParseWindowsCommandLine(line.c_str(), expandedArgs);
}