summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/projectpart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/projectpart.cpp')
-rw-r--r--src/plugins/cpptools/projectpart.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/plugins/cpptools/projectpart.cpp b/src/plugins/cpptools/projectpart.cpp
index f88fefac82..d3d4668a81 100644
--- a/src/plugins/cpptools/projectpart.cpp
+++ b/src/plugins/cpptools/projectpart.cpp
@@ -31,6 +31,8 @@
#include <QDir>
#include <QTextStream>
+using namespace ProjectExplorer;
+
namespace CppTools {
void ProjectPart::updateLanguageFeatures()
@@ -53,6 +55,41 @@ void ProjectPart::updateLanguageFeatures()
}
}
+void ProjectPart::setupToolchainProperties(const ToolChainInfo &tcInfo, const QStringList &flags)
+{
+ toolchainType = tcInfo.type;
+ isMsvc2015Toolchain = tcInfo.isMsvc2015ToolChain;
+ toolChainWordWidth = tcInfo.wordWidth == 64 ? ProjectPart::WordWidth64Bit
+ : ProjectPart::WordWidth32Bit;
+ toolChainInstallDir = tcInfo.installDir;
+ toolChainTargetTriple = tcInfo.targetTriple;
+ extraCodeModelFlags = tcInfo.extraCodeModelFlags;
+ compilerFlags = flags;
+
+ // Toolchain macros and language version
+ if (tcInfo.macroInspectionRunner) {
+ const auto macroInspectionReport = tcInfo.macroInspectionRunner(compilerFlags);
+ toolChainMacros = macroInspectionReport.macros;
+ languageVersion = macroInspectionReport.languageVersion;
+ // No compiler set in kit.
+ } else if (language == Utils::Language::C) {
+ languageVersion = Utils::LanguageVersion::LatestC;
+ } else {
+ languageVersion = Utils::LanguageVersion::LatestCxx;
+ }
+
+ // Header paths
+ if (tcInfo.headerPathsRunner) {
+ const HeaderPaths builtInHeaderPaths
+ = tcInfo.headerPathsRunner(compilerFlags, tcInfo.sysRootPath, tcInfo.targetTriple);
+ for (const HeaderPath &header : builtInHeaderPaths) {
+ const HeaderPath headerPath{header.path, header.type};
+ if (!headerPaths.contains(headerPath))
+ headerPaths.push_back(headerPath);
+ }
+ }
+}
+
ProjectPart::Ptr ProjectPart::copy() const
{
return Ptr(new ProjectPart(*this));