diff options
Diffstat (limited to 'qmake/generators')
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 2 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.cpp | 39 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_objectmodel.h | 12 | ||||
-rw-r--r-- | qmake/generators/win32/msvc_vcproj.cpp | 3 |
4 files changed, 38 insertions, 18 deletions
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index c88f4e136f..67446b2efe 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -1412,7 +1412,7 @@ void VCXProjectWriter::write(XmlOutput &xml, const VCCLCompilerTool &tool) << attrTagT(_StringPooling, tool.StringPooling) << attrTagS(_StructMemberAlignment, toString(tool.StructMemberAlignment)) << attrTagT(_SuppressStartupBanner, tool.SuppressStartupBanner) -//unused << attrTagS(_TreatSpecificWarningsAsErrors, tool.TreatSpecificWarningsAsErrors) + << attrTagX(_TreatSpecificWarningsAsErrors, tool.TreatSpecificWarningsAsErrors, ";") << attrTagT(_TreatWarningAsError, tool.WarnAsError) << attrTagT(_TreatWChar_tAsBuiltInType, tool.TreatWChar_tAsBuiltInType) << attrTagT(_UndefineAllPreprocessorDefinitions, tool.UndefineAllPreprocessorDefinitions) diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp index 6fdd2f4bd2..99f69bfa72 100644 --- a/qmake/generators/win32/msvc_objectmodel.cpp +++ b/qmake/generators/win32/msvc_objectmodel.cpp @@ -779,16 +779,14 @@ bool VCCLCompilerTool::parseOption(const char* option) found = false; break; case 'R': if(second == 'T' && third == 'C') { - if(fourth == '1') - BasicRuntimeChecks = runtimeBasicCheckAll; - else if(fourth == 'c') - SmallerTypeCheck = _True; - else if(fourth == 's') - BasicRuntimeChecks = runtimeCheckStackFrame; - else if(fourth == 'u') - BasicRuntimeChecks = runtimeCheckUninitVariables; - else - found = false; break; + int rtc = BasicRuntimeChecks; + for (size_t i = 4; option[i]; ++i) { + if (!parseRuntimeCheckOption(option[i], &rtc)) { + found = false; + break; + } + } + BasicRuntimeChecks = static_cast<basicRuntimeCheckOption>(rtc); } break; case 'T': @@ -1117,6 +1115,12 @@ bool VCCLCompilerTool::parseOption(const char* option) case 'd': DisableSpecificWarnings += option+3; break; + case 'e': + if (config->CompilerVersion <= NET2008) + AdditionalOptions += option; + else + TreatSpecificWarningsAsErrors += option + 3; + break; default: AdditionalOptions += option; } @@ -1132,6 +1136,21 @@ bool VCCLCompilerTool::parseOption(const char* option) return true; } +bool VCCLCompilerTool::parseRuntimeCheckOption(char c, int *rtc) +{ + if (c == '1') + *rtc = runtimeBasicCheckAll; + else if (c == 'c') + SmallerTypeCheck = _True; + else if (c == 's') + *rtc |= runtimeCheckStackFrame; + else if (c == 'u') + *rtc |= runtimeCheckUninitVariables; + else + return false; + return true; +} + // VCLinkerTool ----------------------------------------------------- VCLinkerTool::VCLinkerTool() : DataExecutionPrevention(unset), diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h index c3fae94179..d289afe366 100644 --- a/qmake/generators/win32/msvc_objectmodel.h +++ b/qmake/generators/win32/msvc_objectmodel.h @@ -106,10 +106,10 @@ enum asmListingOption { asmListingAsmSrc }; enum basicRuntimeCheckOption { - runtimeBasicCheckNone, - runtimeCheckStackFrame, - runtimeCheckUninitVariables, - runtimeBasicCheckAll + runtimeBasicCheckNone = 0, + runtimeCheckStackFrame = 1, + runtimeCheckUninitVariables = 2, + runtimeBasicCheckAll = runtimeCheckStackFrame | runtimeCheckUninitVariables }; enum browseInfoOption { brInfoNone, @@ -561,6 +561,7 @@ public: QStringList UndefinePreprocessorDefinitions; pchOption UsePrecompiledHeader; triState UseUnicodeForAssemblerListing; + QStringList TreatSpecificWarningsAsErrors; triState WarnAsError; warningLevelOption WarningLevel; triState WholeProgramOptimization; @@ -579,6 +580,9 @@ public: QString PreprocessOutputPath; VCConfiguration* config; + +private: + bool parseRuntimeCheckOption(char c, int *rtc); }; class VCLinkerTool : public VCToolBase diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index d3187bacb5..fb4bf08431 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -622,8 +622,6 @@ void VcprojGenerator::writeSubDirs(QTextStream &t) QHash<QString, VcsolutionDepend*> solution_depends; QList<VcsolutionDepend*> solution_cleanup; - QString oldpwd = qmake_getpwd(); - // Make sure that all temp projects are configured // for release so that the depends are created // without the debug <lib>dxxx.lib name mangling @@ -997,7 +995,6 @@ void VcprojGenerator::initCompilerTool() conf.compiler.Optimization = optimizeDisabled; } conf.compiler.AssemblerListingLocation = placement ; - conf.compiler.ProgramDataBaseFileName = ".\\" ; conf.compiler.ObjectFile = placement ; conf.compiler.ExceptionHandling = ehNone; // PCH |