From 1601f53542027017b43531dc58f202d1ba2635cb Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Fri, 17 Nov 2017 14:13:55 +0100 Subject: Clang: StaticAnalyzer: use the default compiler options builder Analyzer has clang path and can generate necessary header paths to be able to use default options builder. Change-Id: I9bb1fc158f045f6e099817c5557ee7d9e38416fb Reviewed-by: Nikolai Kosjar --- src/plugins/cpptools/compileroptionsbuilder.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp') diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 100c39bfc2..8f1ed2c416 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -29,6 +29,7 @@ #include +#include #include #include @@ -499,14 +500,20 @@ bool CompilerOptionsBuilder::excludeHeaderPath(const QString &headerPath) const void CompilerOptionsBuilder::addPredefinedHeaderPathsOptions() { - add("-undef"); add("-nostdinc"); add("-nostdlibinc"); - if (!m_clangVersion.isEmpty() - && m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) { - add(includeDirOption() + clangIncludeDirectory()); - } + // In case of MSVC we need builtin clang defines to correctly handle clang includes + if (m_projectPart.toolchainType != ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) + add("-undef"); + + addClangIncludeFolder(); +} + +void CompilerOptionsBuilder::addClangIncludeFolder() +{ + QTC_CHECK(!m_clangVersion.isEmpty()); + add(includeDirOption() + clangIncludeDirectory()); } void CompilerOptionsBuilder::addProjectConfigFileInclude() @@ -528,7 +535,7 @@ static QString creatorLibexecPath() QString CompilerOptionsBuilder::clangIncludeDirectory() const { - QDir dir(creatorLibexecPath() + "/clang/lib/clang/" + m_clangVersion + "/include"); + QDir dir(creatorLibexecPath() + "/clang" + clangIncludePath(m_clangVersion)); if (!dir.exists() || !QFileInfo(dir, "stdint.h").exists()) dir = QDir(m_clangResourceDirectory); return QDir::toNativeSeparators(dir.canonicalPath()); -- cgit v1.2.1