[cmake-commits] hoffman committed cmLocalVisualStudio7Generator.cxx
1.156 1.157 cmLocalVisualStudio7Generator.h 1.27 1.28
cmake-commits at cmake.org
cmake-commits at cmake.org
Thu Jan 11 21:02:50 EST 2007
Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv14410
Modified Files:
cmLocalVisualStudio7Generator.cxx
cmLocalVisualStudio7Generator.h
Log Message:
BUG: fix for bug 4239, NODEFAULTLIB flag support in ide
Index: cmLocalVisualStudio7Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalVisualStudio7Generator.cxx,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -d -r1.156 -r1.157
--- cmLocalVisualStudio7Generator.cxx 26 Oct 2006 14:49:29 -0000 1.156
+++ cmLocalVisualStudio7Generator.cxx 12 Jan 2007 02:02:47 -0000 1.157
@@ -366,6 +366,7 @@
{"GenerateManifest", "MANIFEST", "enable manifest generation", "TRUE"},
{"LinkIncremental", "INCREMENTAL:NO", "link incremental", "1"},
{"LinkIncremental", "INCREMENTAL:YES", "link incremental", "2"},
+ {"IgnoreDefaultLibraryNames", "NODEFAULTLIB:", "USER_VALUE", ""},
{0,0,0,0 }
};
@@ -625,6 +626,36 @@
this->OutputBuildTool(fout, configName, libName, target);
fout << "\t\t</Configuration>\n";
}
+void cmLocalVisualStudio7Generator::ReplaceFlagSetMap(std::string& flags,
+ cmVS7FlagTable* flagTable,
+ std::map<cmStdString,
+ cmStdString>& flagMap,
+ std::string& option,
+ std::string::size_type pos)
+{
+ std::string value = flagTable->value;
+ if(strcmp(flagTable->comment, "USER_VALUE") == 0)
+ {
+ std::string::size_type len = flags.find(" ", pos);
+ if(len != flags.npos)
+ {
+ len -= option.size();
+ }
+ value = flags.substr(pos+option.size(), len);
+ std::string fullflag = option;
+ fullflag += value;
+ // remove everything
+ cmSystemTools::ReplaceString(flags, fullflag.c_str(), "");
+ }
+ else
+ {
+ cmSystemTools::ReplaceString(flags, option.c_str(), "");
+ }
+ // now put value into flag map
+
+ flagMap[flagTable->IDEName] = value;
+}
+
void cmLocalVisualStudio7Generator::FillFlagMapFromCommandFlags(
std::map<cmStdString, cmStdString>& flagMap,
@@ -639,21 +670,21 @@
// first do the - version
option = "-";
option += flagTable->commandFlag;
- while(flags.find(option) != flags.npos)
+ std::string::size_type pos = flags.find(option);
+ while(pos != flags.npos)
{
- // replace the flag
- cmSystemTools::ReplaceString(flags, option.c_str(), "");
- // now put value into flag map
- flagMap[flagTable->IDEName] = flagTable->value;
+ this->ReplaceFlagSetMap(flags, flagTable, flagMap,
+ option, pos);
+ pos = flags.find(option);
}
// now do the / version
option[0] = '/';
- while(flags.find(option) != flags.npos)
+ pos = flags.find(option);
+ while(pos != flags.npos)
{
- // replace the flag
- cmSystemTools::ReplaceString(flags, option.c_str(), "");
- // now put value into flag map
- flagMap[flagTable->IDEName] = flagTable->value;
+ this->ReplaceFlagSetMap(flags, flagTable, flagMap,
+ option, pos);
+ pos = flags.find(option);
}
// move to next flag
flagTable++;
@@ -737,7 +768,6 @@
this->FillFlagMapFromCommandFlags
(flagMap, &cmLocalVisualStudio7GeneratorLinkFlagTable[0],
extraLinkOptions);
-
switch(target.GetType())
{
case cmTarget::STATIC_LIBRARY:
Index: cmLocalVisualStudio7Generator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmLocalVisualStudio7Generator.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- cmLocalVisualStudio7Generator.h 16 Oct 2006 22:17:14 -0000 1.27
+++ cmLocalVisualStudio7Generator.h 12 Jan 2007 02:02:47 -0000 1.28
@@ -65,6 +65,12 @@
void SetPlatformName(const char* n) { this->PlatformName = n;}
virtual void ConfigureFinalPass();
private:
+ void ReplaceFlagSetMap(std::string& flags,
+ cmVS7FlagTable* flagTable,
+ std::map<cmStdString,
+ cmStdString>& flagMap,
+ std::string& option,
+ std::string::size_type pos);
void FillFlagMapFromCommandFlags(std::map<cmStdString,
cmStdString>& flagMap,
cmVS7FlagTable* flagTable,
More information about the Cmake-commits
mailing list