From 194bde265c9c207052f1039c54cf9d6cb32703c8 Mon Sep 17 00:00:00 2001 From: Ivan Donchevskii Date: Tue, 21 Nov 2017 12:18:28 +0100 Subject: [PATCH] Clang: Define __FUNCSIG__ and others for msvc toolchain Affects __FUNCSIG__, __FUNCTION__ and __FUNCDNAME__. By default Clang can't concatenate strings under those macros with other strings. Because of that we need to define them with empty strings to make clang compile such cases without errors. Task-number: QTCREATORBUG-19295 Change-Id: I9a3770ebe56b4b8a49ba9982c5a1ba90c8f0b304 Reviewed-by: Nikolai Kosjar --- src/plugins/cpptools/clangcompileroptionsbuilder.cpp | 1 + src/plugins/cpptools/compileroptionsbuilder.cpp | 6 ++++++ src/plugins/cpptools/compileroptionsbuilder.h | 1 + 3 files changed, 8 insertions(+) diff --git a/src/plugins/cpptools/clangcompileroptionsbuilder.cpp b/src/plugins/cpptools/clangcompileroptionsbuilder.cpp index 0b2209cc628..6a412e7d725 100644 --- a/src/plugins/cpptools/clangcompileroptionsbuilder.cpp +++ b/src/plugins/cpptools/clangcompileroptionsbuilder.cpp @@ -65,6 +65,7 @@ QStringList ClangCompilerOptionsBuilder::build(CppTools::ProjectFile::Kind fileK addToolchainAndProjectMacros(); undefineClangVersionMacrosForMsvc(); undefineCppLanguageFeatureMacrosForMsvc2015(); + addDefineFunctionMacrosMsvc(); addPredefinedHeaderPathsOptions(); addWrappedQtHeadersIncludePath(); diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 88a85e17cda..914973bc447 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -339,6 +339,12 @@ void CompilerOptionsBuilder::undefineCppLanguageFeatureMacrosForMsvc2015() } } +void CompilerOptionsBuilder::addDefineFunctionMacrosMsvc() +{ + if (m_projectPart.toolchainType == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID) + addMacros({{"__FUNCSIG__", "\"\""}, {"__FUNCTION__", "\"\""}, {"__FUNCDNAME__", "\"\""}}); +} + void CompilerOptionsBuilder::addDefineFloat128ForMingw() { // CLANG-UPGRADE-CHECK: Workaround still needed? diff --git a/src/plugins/cpptools/compileroptionsbuilder.h b/src/plugins/cpptools/compileroptionsbuilder.h index 9274a1bafc1..e3cf1bbcefd 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.h +++ b/src/plugins/cpptools/compileroptionsbuilder.h @@ -61,6 +61,7 @@ public: void addMsvcCompatibilityVersion(); void undefineCppLanguageFeatureMacrosForMsvc2015(); + void addDefineFunctionMacrosMsvc(); void addDefineFloat128ForMingw();