forked from qt-creator/qt-creator
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 5675169e56
addressed also
for ClangTools.
Change-Id: Ideb7bab923d0359e8039b61e9d53c8765de79c29
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -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
|
||||
|
@@ -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())
|
||||
|
@@ -366,7 +366,6 @@ static void addBuiltinConfigs(ClangDiagnosticConfigsModel &model)
|
||||
config.setClangOptions({
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Wno-c++98-compat"
|
||||
});
|
||||
model.appendOrUpdate(config);
|
||||
|
||||
|
Reference in New Issue
Block a user