diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-14 12:54:14 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-16 14:25:45 +0000 |
commit | 9e71f3b08d3698ca527f9c486f372990a2b8301a (patch) | |
tree | 8ed08eeab30a06a88348cdc5be5adf916b732cd8 /src/tools/sdktool/addtoolchainoperation.cpp | |
parent | 3520ba282578fe170ef278cc4af83803e2530d30 (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.cpp | 26 |
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)); |