diff options
author | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-04-20 12:38:50 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@theqtcompany.com> | 2015-04-20 12:41:14 +0000 |
commit | e488f10c7f630c3f3eba3c37faccbf487adf129c (patch) | |
tree | 54f091cb22e26722715ab8fe9625ef8a92d1d836 | |
parent | 8e957f09c7bd4a6456881af73ad48b2b8eb1f7ee (diff) | |
download | qt-creator-e488f10c7f630c3f3eba3c37faccbf487adf129c.tar.gz |
Clang: Fix providing clang directory with intrinsics
Opening a main.cpp of a Qt Widget Application project that is configured
with a GCC toolchain leads to errors [1] like
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/ia32intrin.h:41:10: \
error: use of undeclared identifier '__builtin_ia32_bsrsi'
due to a wrong determination of the clang directory with intrinsics. The
directory was determined as
$${LLVM_LIBDIR}/clang/$${LLVM_VERSION}/include
whereas $LLVM_VERSION was extracted as e.g. "3.5" from 'llvm-config
--version' instead of "3.5.0".
The path of clang intrinsics dir shipped with Qt Creator (as package)
does also match this version scheme:
$QTC_INSTALL_DIR/share/qtcreator/cplusplus/clang/3.4.2/include
[1] Visible with qtc.clangcodemodel.verboserun=true
Change-Id: I1061912eef437a9889987e638915d2fabe208011
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
-rw-r--r-- | src/plugins/clangcodemodel/clang_installation.pri | 2 | ||||
-rw-r--r-- | src/plugins/clangcodemodel/clangutils.cpp | 15 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/plugins/clangcodemodel/clang_installation.pri b/src/plugins/clangcodemodel/clang_installation.pri index 67a13ff413..ec2f3749b1 100644 --- a/src/plugins/clangcodemodel/clang_installation.pri +++ b/src/plugins/clangcodemodel/clang_installation.pri @@ -66,7 +66,7 @@ unix { LLVM_CONFIG = $$findLLVMConfig() LLVM_VERSION = $$system($$LLVM_CONFIG --version 2>/dev/null) - LLVM_VERSION = $$replace(LLVM_VERSION, ^(\\d+\\.\\d+).*$, \\1) + LLVM_VERSION = $$replace(LLVM_VERSION, ^(\\d+\\.\\d+\\.\\d+).*$, \\1) message("... version $$LLVM_VERSION") LLVM_INCLUDEPATH = $$system($$LLVM_CONFIG --includedir 2>/dev/null) diff --git a/src/plugins/clangcodemodel/clangutils.cpp b/src/plugins/clangcodemodel/clangutils.cpp index 8f2f6ddd4d..0626a1fbde 100644 --- a/src/plugins/clangcodemodel/clangutils.cpp +++ b/src/plugins/clangcodemodel/clangutils.cpp @@ -151,6 +151,14 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, ProjectFile::Kind maybeIncludeBorlandExtensions()); result << CompilerOptionsBuilder::createDefineOptions(pPart->toolchainDefines); result << CompilerOptionsBuilder::createDefineOptions(pPart->projectDefines); + + static const QString resourceDir = getResourceDir(); + if (!resourceDir.isEmpty()) { + result << QLatin1String("-nostdlibinc"); + result << (QLatin1String("-I") + resourceDir); + result << QLatin1String("-undef"); + } + result << CompilerOptionsBuilder::createHeaderPathOptions(pPart->headerPaths, isBlacklisted); // Inject header file @@ -164,13 +172,6 @@ QStringList createClangOptions(const ProjectPart::Ptr &pPart, ProjectFile::Kind if (!pPart->projectConfigFile.isEmpty()) result << QLatin1String("-include") << pPart->projectConfigFile; - static const QString resourceDir = getResourceDir(); - if (!resourceDir.isEmpty()) { - result << QLatin1String("-nostdlibinc"); - result << (QLatin1String("-I") + resourceDir); - result << QLatin1String("-undef"); - } - result << QLatin1String("-fmessage-length=0"); result << QLatin1String("-fdiagnostics-show-note-include-stack"); result << QLatin1String("-fmacro-backtrace-limit=0"); |