summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/cmLocalVisualStudio7Generator.cxx1
-rw-r--r--Source/cmVisualStudioGeneratorOptions.cxx51
-rw-r--r--Source/cmVisualStudioGeneratorOptions.h5
3 files changed, 57 insertions, 0 deletions
diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx
index ffe26b1..7fd7fd2 100644
--- a/Source/cmLocalVisualStudio7Generator.cxx
+++ b/Source/cmLocalVisualStudio7Generator.cxx
@@ -669,6 +669,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
targetOptions.FixExceptionHandlingDefault();
targetOptions.Parse(flags.c_str());
targetOptions.Parse(defineFlags.c_str());
+ targetOptions.ParseFinish();
targetOptions.AddDefines
(this->Makefile->GetProperty("COMPILE_DEFINITIONS"));
targetOptions.AddDefines(target.GetProperty("COMPILE_DEFINITIONS"));
diff --git a/Source/cmVisualStudioGeneratorOptions.cxx b/Source/cmVisualStudioGeneratorOptions.cxx
index 972af95..f1bad9c 100644
--- a/Source/cmVisualStudioGeneratorOptions.cxx
+++ b/Source/cmVisualStudioGeneratorOptions.cxx
@@ -45,6 +45,10 @@ cmVisualStudioGeneratorOptions
// Slash options are allowed for VS.
this->AllowSlash = true;
+
+ this->FortranRuntimeDebug = false;
+ this->FortranRuntimeDLL = false;
+ this->FortranRuntimeMT = false;
}
//----------------------------------------------------------------------------
@@ -133,8 +137,55 @@ void cmVisualStudioGeneratorOptions::Parse(const char* flags)
}
//----------------------------------------------------------------------------
+void cmVisualStudioGeneratorOptions::ParseFinish()
+{
+ if(this->CurrentTool == FortranCompiler)
+ {
+ // "RuntimeLibrary" attribute values:
+ // "rtMultiThreaded", "0", /threads /libs:static
+ // "rtMultiThreadedDLL", "2", /threads /libs:dll
+ // "rtMultiThreadedDebug", "1", /threads /dbglibs /libs:static
+ // "rtMultiThreadedDebugDLL", "3", /threads /dbglibs /libs:dll
+ // These seem unimplemented by the IDE:
+ // "rtSingleThreaded", "4", /libs:static
+ // "rtSingleThreadedDLL", "10", /libs:dll
+ // "rtSingleThreadedDebug", "5", /dbglibs /libs:static
+ // "rtSingleThreadedDebugDLL", "11", /dbglibs /libs:dll
+ std::string rl = "rtMultiThreaded";
+ rl += this->FortranRuntimeDebug? "Debug" : "";
+ rl += this->FortranRuntimeDLL? "DLL" : "";
+ this->FlagMap["RuntimeLibrary"] = rl;
+ }
+}
+
+//----------------------------------------------------------------------------
void cmVisualStudioGeneratorOptions::StoreUnknownFlag(const char* flag)
{
+ // Look for Intel Fortran flags that do not map well in the flag table.
+ if(this->CurrentTool == FortranCompiler)
+ {
+ if(strcmp(flag, "/dbglibs") == 0)
+ {
+ this->FortranRuntimeDebug = true;
+ return;
+ }
+ if(strcmp(flag, "/threads") == 0)
+ {
+ this->FortranRuntimeMT = true;
+ return;
+ }
+ if(strcmp(flag, "/libs:dll") == 0)
+ {
+ this->FortranRuntimeDLL = true;
+ return;
+ }
+ if(strcmp(flag, "/libs:static") == 0)
+ {
+ this->FortranRuntimeDLL = false;
+ return;
+ }
+ }
+
// This option is not known. Store it in the output flags.
this->FlagString += " ";
this->FlagString +=
diff --git a/Source/cmVisualStudioGeneratorOptions.h b/Source/cmVisualStudioGeneratorOptions.h
index f7d1a02..8619ba0 100644
--- a/Source/cmVisualStudioGeneratorOptions.h
+++ b/Source/cmVisualStudioGeneratorOptions.h
@@ -39,6 +39,7 @@ public:
// Store options from command line flags.
void Parse(const char* flags);
+ void ParseFinish();
// Fix the ExceptionHandling option to default to off.
void FixExceptionHandlingDefault();
@@ -67,6 +68,10 @@ private:
Tool CurrentTool;
cmVisualStudio10TargetGenerator* TargetGenerator;
+ bool FortranRuntimeDebug;
+ bool FortranRuntimeDLL;
+ bool FortranRuntimeMT;
+
virtual void StoreUnknownFlag(const char* flag);
};