Browse Source

BUG: Fix exception handling flag translation to be specific to each VS version. This allows /EHa to be handled correctly for VS 2003.

Brad King 18 years ago
parent
commit
bb1fa4c3f0

+ 8 - 0
Source/cmGlobalVisualStudio7Generator.cxx

@@ -813,6 +813,14 @@ static cmVS7FlagTable cmVS7ExtraFlagTable[] =
    cmVS7FlagTable::UserValueIgnored | cmVS7FlagTable::Continue},
   {"PrecompiledHeaderThrough", "Yu", "Precompiled Header Name", "",
    cmVS7FlagTable::UserValueRequired},
+
+  // Exception handling mode.  If no entries match, it will be FALSE.
+  {"ExceptionHandling", "GX", "enable c++ exceptions", "TRUE", 0},
+  {"ExceptionHandling", "EHsc", "enable c++ exceptions", "TRUE", 0},
+  // The EHa option does not have an IDE setting.  Let it go to false,
+  // and have EHa passed on the command line by leaving out the table
+  // entry.
+
   {0,0,0,0,0}
 };
 cmVS7FlagTable const* cmGlobalVisualStudio7Generator::GetExtraFlagTableVS7()

+ 6 - 0
Source/cmGlobalVisualStudio8Generator.cxx

@@ -286,6 +286,12 @@ static cmVS7FlagTable cmVS8ExtraFlagTable[] =
   {"PrecompiledHeaderThrough", "Yu", "Precompiled Header Name", "",
    cmVS7FlagTable::UserValueRequired},
   // There is no YX option in the VS8 IDE.
+
+  // Exception handling mode.  If no entries match, it will be FALSE.
+  {"ExceptionHandling", "GX", "enable c++ exceptions", "1", 0},
+  {"ExceptionHandling", "EHsc", "enable c++ exceptions", "1", 0},
+  {"ExceptionHandling", "EHa", "enable SEH exceptions", "2", 0},
+
   {0,0,0,0,0}
 };
 cmVS7FlagTable const* cmGlobalVisualStudio8Generator::GetExtraFlagTableVS8()

+ 0 - 3
Source/cmLocalVisualStudio7Generator.cxx

@@ -342,9 +342,6 @@ cmVS7FlagTable cmLocalVisualStudio7GeneratorFlagTable[] =
   {"EnableFunctionLevelLinking", "Gy",
    "EnableFunctionLevelLinking", "TRUE", 0},
   {"EnableIntrinsicFunctions", "Oi", "EnableIntrinsicFunctions", "TRUE", 0},
-  {"ExceptionHandling", "EHsc", "enable c++ exceptions", "TRUE", 0},
-  {"ExceptionHandling", "EHa", "enable c++ exceptions", "2", 0},
-  {"ExceptionHandling", "GX", "enable c++ exceptions", "TRUE", 0},
   {"GlobalOptimizations", "Og", "Global Optimize", "TRUE", 0},
   {"ImproveFloatingPointConsistency", "Op",
    "ImproveFloatingPointConsistency", "TRUE", 0},