aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-12-18 12:23:51 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-12-19 12:04:56 +0000
commit2de52cffb18ece90883b3aa4821035ba476adfd7 (patch)
tree5b1242d80027b1f9c0acc8372842f36a304871ba
parent62fd36847340c2eeeb3361a5d84bdfba4972f0f4 (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.cpp7
-rw-r--r--src/plugins/clangtools/clangtidyclazyrunner.cpp10
-rw-r--r--src/plugins/cpptools/cpptoolsreuse.cpp1
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);