forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -47,6 +47,7 @@ const char ID[] = "ProjectExplorer.ToolChain.Id";
|
|||||||
const char DISPLAYNAME[] = "ProjectExplorer.ToolChain.DisplayName";
|
const char DISPLAYNAME[] = "ProjectExplorer.ToolChain.DisplayName";
|
||||||
const char AUTODETECTED[] = "ProjectExplorer.ToolChain.Autodetect";
|
const char AUTODETECTED[] = "ProjectExplorer.ToolChain.Autodetect";
|
||||||
const char LANGUAGE_KEY[] = "ProjectExplorer.ToolChain.Language";
|
const char LANGUAGE_KEY[] = "ProjectExplorer.ToolChain.Language";
|
||||||
|
const char LANGUAGE_KEY_V2[] = "ProjectExplorer.ToolChain.LanguageV2";
|
||||||
|
|
||||||
// GCC ToolChain:
|
// GCC ToolChain:
|
||||||
const char PATH[] = "ProjectExplorer.GccToolChain.Path";
|
const char PATH[] = "ProjectExplorer.GccToolChain.Path";
|
||||||
@@ -265,7 +266,30 @@ QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map, const QS
|
|||||||
|
|
||||||
KeyValuePairList data;
|
KeyValuePairList data;
|
||||||
data << KeyValuePair({tc, ID}, QVariant(id));
|
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, DISPLAYNAME}, QVariant(uniqueName));
|
||||||
data << KeyValuePair({tc, AUTODETECTED}, QVariant(true));
|
data << KeyValuePair({tc, AUTODETECTED}, QVariant(true));
|
||||||
data << KeyValuePair({tc, PATH}, QVariant(path));
|
data << KeyValuePair({tc, PATH}, QVariant(path));
|
||||||
|
Reference in New Issue
Block a user