aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clangcodemodel/clangutils.cpp
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2017-09-27 10:32:52 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2017-10-23 12:46:34 +0000
commitb10f8484c7bb62b297fbbdafdbf9ef0e7074a01a (patch)
tree5d7af481cacb6f618d121185474e00cfc36f1958 /src/plugins/clangcodemodel/clangutils.cpp
parentf19facd37842de97f2330e3a34c2bdfc3552dea9 (diff)
CppTools: merge CompilerOptionsBuilder with Clang one
Since it's never used for other compilers. Change-Id: I9512692d1dc9f9a701ea2453b7d50005478bed5d Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel/clangutils.cpp')
-rw-r--r--src/plugins/clangcodemodel/clangutils.cpp40
1 files changed, 36 insertions, 4 deletions
diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp
index 0058ee4023..90abd59e95 100644
--- a/src/plugins/clangcodemodel/clangutils.cpp
+++ b/src/plugins/clangcodemodel/clangutils.cpp
@@ -31,7 +31,7 @@
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h>
#include <cpptools/baseeditordocumentparser.h>
-#include <cpptools/clangcompileroptionsbuilder.h>
+#include <cpptools/compileroptionsbuilder.h>
#include <cpptools/cppmodelmanager.h>
#include <cpptools/editordocumenthandle.h>
#include <cpptools/projectpart.h>
@@ -70,21 +70,53 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, const QString &fil
return createClangOptions(pPart, fileKind);
}
-class LibClangOptionsBuilder final : public ClangCompilerOptionsBuilder
+static QString creatorResourcePath()
+{
+#ifndef UNIT_TESTS
+ return Core::ICore::instance()->resourcePath();
+#else
+ return QString();
+#endif
+}
+
+class LibClangOptionsBuilder final : public CompilerOptionsBuilder
{
public:
LibClangOptionsBuilder(const ProjectPart &projectPart)
- : ClangCompilerOptionsBuilder(projectPart, CLANG_VERSION, CLANG_RESOURCE_DIR)
+ : CompilerOptionsBuilder(projectPart, CLANG_VERSION, CLANG_RESOURCE_DIR)
{
}
+ void addPredefinedHeaderPathsOptions() final
+ {
+ CompilerOptionsBuilder::addPredefinedHeaderPathsOptions();
+ addWrappedQtHeadersIncludePath();
+ }
+
void addExtraOptions() final
{
addDummyUiHeaderOnDiskIncludePath();
- ClangCompilerOptionsBuilder::addExtraOptions();
+ add("-fmessage-length=0");
+ add("-fdiagnostics-show-note-include-stack");
+ add("-fmacro-backtrace-limit=0");
+ add("-fretain-comments-from-system-headers");
+ add("-ferror-limit=1000");
}
private:
+ void addWrappedQtHeadersIncludePath()
+ {
+ static const QString resourcePath = creatorResourcePath();
+ static QString wrappedQtHeadersPath = resourcePath + "/cplusplus/wrappedQtHeaders";
+ QTC_ASSERT(QDir(wrappedQtHeadersPath).exists(), return;);
+
+ if (m_projectPart.qtVersion != CppTools::ProjectPart::NoQt) {
+ const QString wrappedQtCoreHeaderPath = wrappedQtHeadersPath + "/QtCore";
+ add(includeDirOption() + QDir::toNativeSeparators(wrappedQtHeadersPath));
+ add(includeDirOption() + QDir::toNativeSeparators(wrappedQtCoreHeaderPath));
+ }
+ }
+
void addDummyUiHeaderOnDiskIncludePath()
{
const QString path = ModelManagerSupportClang::instance()->dummyUiHeaderOnDiskDirPath();