mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-26 08:08:24 -05:00
Fix incremental linking setting for Fortran + VS
This commit fixes a bug where it was impossible to specify
/INCREMENTAL to Fortran projects built with Visual Studio.
The problem was due to the fact that .vfproj files expect
the value of this flag to be "linkIncremental{No,Yes},
whereas .vcproj files expect this value to be 0, 1, or 2.
The implementation of this fix adds a new data structure for
Visual Studio linker flags specific to Fortran. This can
easily be extended in the future if more such discrepencies
between C/C++ and Fortran linking are discovered.
This commit is contained in:
@@ -24,6 +24,26 @@ std::string cmVisualStudioGeneratorOptionsEscapeForXML(std::string ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmVisualStudioGeneratorOptions
|
||||
::cmVisualStudioGeneratorOptions(cmLocalVisualStudioGenerator* lg,
|
||||
Tool tool,
|
||||
cmVisualStudio10TargetGenerator* g):
|
||||
cmIDEOptions(),
|
||||
LocalGenerator(lg), Version(lg->GetVersion()), CurrentTool(tool),
|
||||
TargetGenerator(g)
|
||||
{
|
||||
// Preprocessor definitions are not allowed for linker tools.
|
||||
this->AllowDefine = (tool != Linker);
|
||||
|
||||
// Slash options are allowed for VS.
|
||||
this->AllowSlash = true;
|
||||
|
||||
this->FortranRuntimeDebug = false;
|
||||
this->FortranRuntimeDLL = false;
|
||||
this->FortranRuntimeMT = false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmVisualStudioGeneratorOptions
|
||||
::cmVisualStudioGeneratorOptions(cmLocalVisualStudioGenerator* lg,
|
||||
@@ -36,9 +56,8 @@ cmVisualStudioGeneratorOptions
|
||||
TargetGenerator(g)
|
||||
{
|
||||
// Store the given flag tables.
|
||||
cmIDEFlagTable const** ft = this->FlagTable;
|
||||
if(table) { *ft++ = table; }
|
||||
if(extraTable) { *ft++ = extraTable; }
|
||||
this->AddTable(table);
|
||||
this->AddTable(extraTable);
|
||||
|
||||
// Preprocessor definitions are not allowed for linker tools.
|
||||
this->AllowDefine = (tool != Linker);
|
||||
@@ -51,6 +70,22 @@ cmVisualStudioGeneratorOptions
|
||||
this->FortranRuntimeMT = false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmVisualStudioGeneratorOptions::AddTable(cmVS7FlagTable const* table)
|
||||
{
|
||||
if(table)
|
||||
{
|
||||
for(int i=0; i < FlagTableCount; ++i)
|
||||
{
|
||||
if (!this->FlagTable[i])
|
||||
{
|
||||
this->FlagTable[i] = table;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmVisualStudioGeneratorOptions::FixExceptionHandlingDefault()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user