From b2e537baaa258dd1d5abfcb91b2e62308ee9404d Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 15 Mar 2017 12:10:02 +0100 Subject: [PATCH] ProjectExplorer: Move built-in parser workarounds to built-in code model ...so that only the built-in code model parser sees them, but not the clang code model, which has problems with them. The specific case here is due to definition of __int32: winnt.h:3077:1: error: functions that differ only in their return type cannot be overloaded intrin.h:357:31: note: previous declaration is here While moving, drop __MSVCRT__, which seems to be a predefined macro of ancient MSVC versions, see https://sourceforge.net/p/mpg123/mailman/mpg123-devel/?viewmonth=201010&viewday=24 Change-Id: I4b8c49ed4bdc942a2190dbae3c260f3a1a8078a4 Reviewed-by: Tobias Hunger --- src/plugins/cpptools/cppmodelmanager.cpp | 9 ++++++++- .../projectexplorer/abstractmsvctoolchain.cpp | 19 +++---------------- src/plugins/projectexplorer/msvctoolchain.cpp | 2 +- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index d8a197b45a3..d2493e2e457 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -208,7 +208,14 @@ const char pp_configuration[] = "#define __finally\n" "#define __inline inline\n" "#define __forceinline inline\n" - "#define __pragma(x)\n"; + "#define __pragma(x)\n" + "#define __w64\n" + "#define __int64 long long\n" + "#define __int32 long\n" + "#define __int16 short\n" + "#define __int8 char\n" + "#define __ptr32\n" + "#define __ptr64\n"; QSet CppModelManager::timeStampModifiedFiles(const QList &documentsToCheck) { diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp index c66be6cc4b2..c9ecff28a9c 100644 --- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp +++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp @@ -270,23 +270,10 @@ bool AbstractMsvcToolChain::canClone() const } // Function must be thread-safe! -QByteArray AbstractMsvcToolChain::msvcPredefinedMacros(const QStringList cxxflags, - const Utils::Environment& env) const +QByteArray AbstractMsvcToolChain::msvcPredefinedMacros(const QStringList, + const Utils::Environment&) const { - Q_UNUSED(cxxflags); - Q_UNUSED(env); - - static const QByteArray predefinedMacros( - "#define __MSVCRT__\n" - "#define __w64\n" - "#define __int64 long long\n" - "#define __int32 long\n" - "#define __int16 short\n" - "#define __int8 char\n" - "#define __ptr32\n" - "#define __ptr64\n"); - - return predefinedMacros; + return QByteArray(); } bool AbstractMsvcToolChain::generateEnvironmentSettings(const Utils::Environment &env, diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index c350c7c3022..86c3b32c1e4 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -409,7 +409,7 @@ static QByteArray msvcCompilationFile() QByteArray MsvcToolChain::msvcPredefinedMacros(const QStringList cxxflags, const Utils::Environment &env) const { - QByteArray predefinedMacros = AbstractMsvcToolChain::msvcPredefinedMacros(cxxflags, env); + QByteArray predefinedMacros; QStringList toProcess; foreach (const QString &arg, cxxflags) {