aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/sdktool/addtoolchainoperation.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2016-07-15 11:52:13 +0200
committerTim Jenssen <tim.jenssen@qt.io>2016-07-21 15:21:45 +0000
commit396ee166355289165a611898440cf0f807d5cac8 (patch)
treef8f35df05ce6365268e3c486298c0b370d824280 /src/tools/sdktool/addtoolchainoperation.cpp
parent6fe82385d6110dcfc0b0bb6e493b726405610c6a (diff)
SDKtool: Add toolchain language support
Change-Id: I882cc129a603c758369446f947a961ccd2fd4490 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/tools/sdktool/addtoolchainoperation.cpp')
-rw-r--r--src/tools/sdktool/addtoolchainoperation.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/src/tools/sdktool/addtoolchainoperation.cpp b/src/tools/sdktool/addtoolchainoperation.cpp
index 3999f7463e..e194bbfdb9 100644
--- a/src/tools/sdktool/addtoolchainoperation.cpp
+++ b/src/tools/sdktool/addtoolchainoperation.cpp
@@ -46,6 +46,7 @@ const char VERSION[] = "Version";
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";
// GCC ToolChain:
const char PATH[] = "ProjectExplorer.GccToolChain.Path";
@@ -66,6 +67,7 @@ QString AddToolChainOperation::argumentsHelpText() const
{
return QString(
" --id <ID> id of the new tool chain (required).\n"
+ " --language <ID> input language id of the new tool chain (required).\n"
" --name <NAME> display name of the new tool chain (required).\n"
" --path <PATH> path to the compiler (required).\n"
" --abi <ABI STRING> ABI of the compiler (required).\n"
@@ -90,6 +92,12 @@ bool AddToolChainOperation::setArguments(const QStringList &args)
continue;
}
+ if (current == "--language") {
+ ++i; // skip next;
+ m_languageId = next;
+ continue;
+ }
+
if (current == "--name") {
++i; // skip next;
m_displayName = next;
@@ -132,6 +140,8 @@ bool AddToolChainOperation::setArguments(const QStringList &args)
if (m_id.isEmpty())
std::cerr << "No id given for tool chain." << std::endl;
+ if (m_languageId.isEmpty())
+ std::cerr << "No language id given for tool chain." << std::endl;
if (m_displayName.isEmpty())
std::cerr << "No name given for tool chain." << std::endl;
if (m_path.isEmpty())
@@ -148,7 +158,8 @@ int AddToolChainOperation::execute() const
if (map.isEmpty())
map = initializeToolChains();
- QVariantMap result = addToolChain(map, m_id, m_displayName, m_path, m_targetAbi, m_supportedAbis, m_extra);
+ QVariantMap result = addToolChain(map, m_id, m_languageId, m_displayName, m_path,
+ m_targetAbi, m_supportedAbis, m_extra);
if (result.isEmpty() || map == result)
return 2;
@@ -161,14 +172,15 @@ bool AddToolChainOperation::test() const
QVariantMap map = initializeToolChains();
// Add toolchain:
- map = addToolChain(map, "testId", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
+ map = addToolChain(map, "testId", "langId", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue")));
if (map.value(COUNT).toInt() != 1
|| !map.contains(QString::fromLatin1(PREFIX) + '0'))
return false;
QVariantMap tcData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
- if (tcData.count() != 7
+ if (tcData.count() != 8
|| tcData.value(ID).toString() != "testId"
+ || tcData.value(LANGUAGE_KEY).toString() != "langId"
|| tcData.value(DISPLAYNAME).toString() != "name"
|| tcData.value(AUTODETECTED).toBool() != true
|| tcData.value(PATH).toString() != "/tmp/test"
@@ -178,21 +190,23 @@ bool AddToolChainOperation::test() const
return false;
// Ignore same Id:
- QVariantMap unchanged = addToolChain(map, "testId", "name2", "/tmp/test2", "test-abi2", "test-abi2,test-abi3",
+ QVariantMap unchanged = addToolChain(map, "testId", "langId", "name2", "/tmp/test2", "test-abi2",
+ "test-abi2,test-abi3",
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue2")));
if (!unchanged.isEmpty())
return false;
// Make sure name stays unique:
- map = addToolChain(map, "{some-tc-id}", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
+ map = addToolChain(map, "{some-tc-id}", "langId2", "name", "/tmp/test", "test-abi", "test-abi,test-abi2",
KeyValuePairList() << KeyValuePair("ExtraKey", QVariant("ExtraValue")));
if (map.value(COUNT).toInt() != 2
|| !map.contains(QString::fromLatin1(PREFIX) + '0')
|| !map.contains(QString::fromLatin1(PREFIX) + '1'))
return false;
tcData = map.value(QString::fromLatin1(PREFIX) + '0').toMap();
- if (tcData.count() != 7
+ if (tcData.count() != 8
|| tcData.value(ID).toString() != "testId"
+ || tcData.value(LANGUAGE_KEY).toString() != "langId"
|| tcData.value(DISPLAYNAME).toString() != "name"
|| tcData.value(AUTODETECTED).toBool() != true
|| tcData.value(PATH).toString() != "/tmp/test"
@@ -201,8 +215,9 @@ bool AddToolChainOperation::test() const
|| tcData.value("ExtraKey").toString() != "ExtraValue")
return false;
tcData = map.value(QString::fromLatin1(PREFIX) + '1').toMap();
- if (tcData.count() != 7
+ if (tcData.count() != 8
|| tcData.value(ID).toString() != "{some-tc-id}"
+ || tcData.value(LANGUAGE_KEY).toString() != "langId2"
|| tcData.value(DISPLAYNAME).toString() != "name2"
|| tcData.value(AUTODETECTED).toBool() != true
|| tcData.value(PATH).toString() != "/tmp/test"
@@ -215,10 +230,11 @@ bool AddToolChainOperation::test() const
}
#endif
-QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map,
- const QString &id, const QString &displayName,
+QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map, const QString &id,
+ const QString &lang, const QString &displayName,
const QString &path, const QString &abi,
- const QString &supportedAbis, const KeyValuePairList &extra)
+ const QString &supportedAbis,
+ const KeyValuePairList &extra)
{
// Sanity check: Does the Id already exist?
if (exists(map, id)) {
@@ -247,6 +263,7 @@ QVariantMap AddToolChainOperation::addToolChain(const QVariantMap &map,
KeyValuePairList data;
data << KeyValuePair({ tc, ID }, QVariant(id));
+ data << KeyValuePair({ tc, LANGUAGE_KEY }, QVariant(lang));
data << KeyValuePair({ tc, DISPLAYNAME }, QVariant(uniqueName));
data << KeyValuePair({ tc, AUTODETECTED }, QVariant(true));
data << KeyValuePair({ tc, PATH }, QVariant(path));