aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/sdktool/addtoolchainoperation.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-03-14 12:54:14 +0100
committerTobias Hunger <tobias.hunger@qt.io>2017-03-16 14:25:45 +0000
commit9e71f3b08d3698ca527f9c486f372990a2b8301a (patch)
tree8ed08eeab30a06a88348cdc5be5adf916b732cd8 /src/tools/sdktool/addtoolchainoperation.cpp
parent3520ba282578fe170ef278cc4af83803e2530d30 (diff)
SDKtool: Write toolchains compatible with Qt Creator 4.2 and 4.3
Make sure the toolchains xml file written by sdktool is compatible with both Qt Creator 4.2 and 4.3 by mapping the --language field accordingly. Change-Id: Ie8c289c8fe7d49ce95e924e89b4e369a62469e64 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/tools/sdktool/addtoolchainoperation.cpp')
-rw-r--r--src/tools/sdktool/addtoolchainoperation.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp
index ee31311dd6..60aba4558d 100644
--- a/src/tools/sdktool/addtoolchainoperation.cpp
+++ b/src/tools/sdktool/addtoolchainoperation.cpp
@@ -47,6 +47,7 @@ const char ID[] = "ProjectExplorer.ToolChain.Id";
const char DISPLAYNAME[] = "ProjectExplorer.ToolChain.DisplayName";
const char AUTODETECTED[] = "ProjectExplorer.ToolChain.Autodetect";
const char LANGUAGE_KEY[] = "ProjectExplorer.ToolChain.Language";
+const char LANGUAGE_KEY_V2[] = "ProjectExplorer.ToolChain.LanguageV2";
// GCC ToolChain:
const char PATH[] = "ProjectExplorer.GccToolChain.Path";
@@ -265,7 +266,30 @@ QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map, const QS
KeyValuePairList data;
data << KeyValuePair({tc, ID}, QVariant(id));
- data << KeyValuePair({tc, LANGUAGE_KEY}, QVariant(lang));
+
+ // Language compatibility hack for 4.2:
+ QString newLang; // QtC 4.3 and later
+ QString oldLang; // QtC 4.2
+ int langInt = lang.toInt(&ok);
+ Q_UNUSED(langInt);
+ if (lang == "2" || lang == "Cxx") {
+ newLang = "Cxx";
+ oldLang = "2";
+ } else if (lang == "1" || lang == "C") {
+ newLang = "C";
+ oldLang = "1";
+ } else if (ok) {
+ std::cerr << "Error: Language ID must be 1 for C, 2 for Cxx "
+ << "or a string like (\"C\", \"Cxx\", \"Nim\", etc.)" << std::endl;
+ return {};
+ } else if (!ok) {
+ newLang = lang;
+ oldLang = "";
+ }
+ if (!oldLang.isEmpty())
+ data << KeyValuePair({tc, LANGUAGE_KEY}, QVariant(oldLang));
+ if (!newLang.isEmpty())
+ data << KeyValuePair({tc, LANGUAGE_KEY_V2}, QVariant(newLang));
data << KeyValuePair({tc, DISPLAYNAME}, QVariant(uniqueName));
data << KeyValuePair({tc, AUTODETECTED}, QVariant(true));
data << KeyValuePair({tc, PATH}, QVariant(path));