summaryrefslogtreecommitdiffstats
path: root/Source/cmake.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2008-01-02 14:32:29 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2008-01-02 14:32:29 (GMT)
commit603cd2ab6a1d840943193e626dd992203a46e6ba (patch)
tree6a18b4227d932227a1f703099e22ddd0cdd6e7c0 /Source/cmake.cxx
parent8624abf272bd75975e828d1b497f720aac6df768 (diff)
downloadCMake-603cd2ab6a1d840943193e626dd992203a46e6ba.zip
CMake-603cd2ab6a1d840943193e626dd992203a46e6ba.tar.gz
CMake-603cd2ab6a1d840943193e626dd992203a46e6ba.tar.bz2
ENH: fix new incremental link stuff to work with nmake @ files
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r--Source/cmake.cxx36
1 files changed, 32 insertions, 4 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index 099a053..010e162 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -3674,17 +3674,45 @@ int cmake::VisualStudioLink(std::vector<std::string>& args, int type)
{
verbose = true;
}
- // figure out if this is an incremental link or not and run the correct
- // link function.
+ std::vector<std::string> expandedArgs;
for(std::vector<std::string>::iterator i = args.begin();
i != args.end(); ++i)
{
+ // check for nmake temporary files
+ if((*i)[0] == '@')
+ {
+ std::ifstream fin(i->substr(1).c_str());
+ std::string line;
+ while(cmSystemTools::GetLineFromStream(fin,
+ line))
+ {
+ cmSystemTools::ParseWindowsCommandLine(line.c_str(), expandedArgs);
+ }
+ }
+ else
+ {
+ expandedArgs.push_back(*i);
+ }
+ }
+ // figure out if this is an incremental link or not and run the correct
+ // link function.
+ for(std::vector<std::string>::iterator i = expandedArgs.begin();
+ i != expandedArgs.end(); ++i)
+ {
if(cmSystemTools::Strucmp(i->c_str(), "/INCREMENTAL:YES") == 0)
{
- return cmake::VisualStudioLinkIncremental(args, type, verbose);
+ if(verbose)
+ {
+ std::cout << "Visual Studio Incremental Link\n";
+ }
+ return cmake::VisualStudioLinkIncremental(expandedArgs, type, verbose);
}
}
- return cmake::VisualStudioLinkNonIncremental(args, type, verbose);
+ if(verbose)
+ {
+ std::cout << "Visual Studio Non-Incremental Link\n";
+ }
+ return cmake::VisualStudioLinkNonIncremental(expandedArgs, type, verbose);
}
int cmake::ParseVisualStudioLinkCommand(std::vector<std::string>& args,