diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-12-18 12:23:51 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2019-12-19 12:04:56 +0000 |
commit | 2de52cffb18ece90883b3aa4821035ba476adfd7 (patch) | |
tree | 5b1242d80027b1f9c0acc8372842f36a304871ba | |
parent | 62fd36847340c2eeeb3361a5d84bdfba4972f0f4 (diff) |
Clang: Fix c++98-compat warnings for MSVC toolchain
Clang invoked with --driver-mode=cl will map "-Wall" to "-Weverything",
thus enabling -Wc++98-compat-pedantic and way more options.
Fix this by escaping "-Wall" in the cl mode, effectively passing in
"/clang:-Wall" instead of "-Wall".
This fixes what 5675169e564a1af0d4b47d4f1ee872e404cc2d17 addressed also
for ClangTools.
Change-Id: Ideb7bab923d0359e8039b61e9d53c8765de79c29
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r-- | src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp | 7 | ||||
-rw-r--r-- | src/plugins/clangtools/clangtidyclazyrunner.cpp | 10 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.cpp | 1 |
3 files changed, 14 insertions, 4 deletions
diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 51acd3a5a6..718b0dad28 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -441,6 +441,7 @@ public: { // Determine the driver mode from toolchain and flags. m_builder.evaluateCompilerFlags(); + m_isClMode = m_builder.isClStyle(); addLanguageOptions(); addGlobalDiagnosticOptions(); // Before addDiagnosticOptions() so users still can overwrite. @@ -498,7 +499,10 @@ private: ? CppTools::UseBuildSystemWarnings::Yes : CppTools::UseBuildSystemWarnings::No; - m_options.append(diagnosticConfig.clangOptions()); + const QStringList options = m_isClMode + ? CppTools::clangArgsForCl(diagnosticConfig.clangOptions()) + : diagnosticConfig.clangOptions(); + m_options.append(options); } void addGlobalDiagnosticOptions() @@ -537,6 +541,7 @@ private: Core::Id m_diagnosticConfigId; CppTools::UseBuildSystemWarnings m_useBuildSystemWarnings = CppTools::UseBuildSystemWarnings::No; CppTools::CompilerOptionsBuilder m_builder; + bool m_isClMode = false; QStringList m_options; }; } // namespace diff --git a/src/plugins/clangtools/clangtidyclazyrunner.cpp b/src/plugins/clangtools/clangtidyclazyrunner.cpp index 34a149c823..976fbd9f9a 100644 --- a/src/plugins/clangtools/clangtidyclazyrunner.cpp +++ b/src/plugins/clangtools/clangtidyclazyrunner.cpp @@ -48,11 +48,16 @@ using namespace CppTools; namespace ClangTools { namespace Internal { +static bool isClMode(const QStringList &options) +{ + return options.contains("--driver-mode=cl"); +} + static QStringList serializeDiagnosticsArguments(const QStringList &baseOptions, const QString &outputFilePath) { const QStringList serializeArgs{"-serialize-diagnostics", outputFilePath}; - if (baseOptions.contains("--driver-mode=cl")) + if (isClMode(baseOptions)) return clangArgsForCl(serializeArgs); return serializeArgs; } @@ -104,7 +109,8 @@ static QStringList clangArguments(const ClangDiagnosticConfig &diagnosticConfig, { QStringList arguments; arguments << ClangDiagnosticConfigsModel::globalDiagnosticOptions() - << diagnosticConfig.clangOptions() + << (isClMode(baseOptions) ? CppTools::clangArgsForCl(diagnosticConfig.clangOptions()) + : diagnosticConfig.clangOptions()) << baseOptions; if (LOG().isDebugEnabled()) diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index 3e44853374..b867725691 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -366,7 +366,6 @@ static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model) config.setClangOptions({ "-Wall", "-Wextra", - "-Wno-c++98-compat" }); model.appendOrUpdate(config); |