forked from qt-creator/qt-creator
Android: Clean up Kit updates
Change-Id: Iab45062012fb91a8f62ee227af8b6a7ab94a8fed Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
@@ -1254,16 +1254,13 @@ void AndroidConfigurations::removeOldToolChains()
|
|||||||
|
|
||||||
void AndroidConfigurations::updateAutomaticKitList()
|
void AndroidConfigurations::updateAutomaticKitList()
|
||||||
{
|
{
|
||||||
QList<Kit *> existingKits;
|
const QList<Kit *> existingKits = Utils::filtered(KitManager::kits(), [](const Kit *k) {
|
||||||
foreach (Kit *k, KitManager::kits()) {
|
return k->isAutoDetected() && !k->isSdkProvided()
|
||||||
if (DeviceTypeKitInformation::deviceTypeId(k) != Core::Id(Constants::ANDROID_DEVICE_TYPE))
|
&& DeviceTypeKitInformation::deviceTypeId(k) == Core::Id(Constants::ANDROID_DEVICE_TYPE);
|
||||||
continue;
|
});
|
||||||
if (!k->isAutoDetected())
|
|
||||||
continue;
|
|
||||||
if (k->isSdkProvided())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
// Update code for 3.0 beta, which shipped with a bug for the debugger settings
|
// Update code for 3.0 beta, which shipped with a bug for the debugger settings
|
||||||
|
for (Kit *k : existingKits) {
|
||||||
ToolChain *tc = ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx);
|
ToolChain *tc = ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx);
|
||||||
if (tc && Debugger::DebuggerKitInformation::runnable(k).executable != tc->suggestedDebugger().toString()) {
|
if (tc && Debugger::DebuggerKitInformation::runnable(k).executable != tc->suggestedDebugger().toString()) {
|
||||||
Debugger::DebuggerItem debugger;
|
Debugger::DebuggerItem debugger;
|
||||||
@@ -1276,14 +1273,15 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger);
|
QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger);
|
||||||
Debugger::DebuggerKitInformation::setDebugger(k, id);
|
Debugger::DebuggerKitInformation::setDebugger(k, id);
|
||||||
}
|
}
|
||||||
existingKits << k;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<Abi, QList<QtSupport::BaseQtVersion *> > qtVersionsForArch;
|
QHash<Abi, QList<const QtSupport::BaseQtVersion *> > qtVersionsForArch;
|
||||||
foreach (QtSupport::BaseQtVersion *qtVersion, QtSupport::QtVersionManager::unsortedVersions()) {
|
const QList<QtSupport::BaseQtVersion *> qtVersions
|
||||||
if (qtVersion->type() != QLatin1String(Constants::ANDROIDQT))
|
= Utils::filtered(QtSupport::QtVersionManager::unsortedVersions(), [](const QtSupport::BaseQtVersion *v) {
|
||||||
continue;
|
return v->type() == Constants::ANDROIDQT;
|
||||||
QList<Abi> qtAbis = qtVersion->qtAbis();
|
});
|
||||||
|
for (const QtSupport::BaseQtVersion *qtVersion : qtVersions) {
|
||||||
|
const QList<Abi> qtAbis = qtVersion->qtAbis();
|
||||||
if (qtAbis.empty())
|
if (qtAbis.empty())
|
||||||
continue;
|
continue;
|
||||||
qtVersionsForArch[qtAbis.first()].append(qtVersion);
|
qtVersionsForArch[qtAbis.first()].append(qtVersion);
|
||||||
@@ -1293,7 +1291,7 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
IDevice::ConstPtr device = dm->find(Core::Id(Constants::ANDROID_DEVICE_ID));
|
IDevice::ConstPtr device = dm->find(Core::Id(Constants::ANDROID_DEVICE_ID));
|
||||||
if (device.isNull()) {
|
if (device.isNull()) {
|
||||||
// no device, means no sdk path
|
// no device, means no sdk path
|
||||||
foreach (Kit *k, existingKits)
|
for (Kit *k : existingKits)
|
||||||
KitManager::deregisterKit(k);
|
KitManager::deregisterKit(k);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1316,10 +1314,10 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
[tc](AndroidToolChain *otherTc) {
|
[tc](AndroidToolChain *otherTc) {
|
||||||
return tc->targetAbi() == otherTc->targetAbi();
|
return tc->targetAbi() == otherTc->targetAbi();
|
||||||
});
|
});
|
||||||
QList<QtSupport::BaseQtVersion *> qtVersions = qtVersionsForArch.value(tc->targetAbi());
|
for (const QtSupport::BaseQtVersion *qt : qtVersionsForArch.value(tc->targetAbi())) {
|
||||||
foreach (QtSupport::BaseQtVersion *qt, qtVersions) {
|
|
||||||
Kit *newKit = new Kit;
|
Kit *newKit = new Kit;
|
||||||
newKit->setAutoDetected(true);
|
newKit->setAutoDetected(true);
|
||||||
|
newKit->setAutoDetectionSource("AndroidConfiguration");
|
||||||
DeviceTypeKitInformation::setDeviceTypeId(newKit, Core::Id(Constants::ANDROID_DEVICE_TYPE));
|
DeviceTypeKitInformation::setDeviceTypeId(newKit, Core::Id(Constants::ANDROID_DEVICE_TYPE));
|
||||||
for (AndroidToolChain *tc : allLanguages)
|
for (AndroidToolChain *tc : allLanguages)
|
||||||
ToolChainKitInformation::setToolChain(newKit, tc);
|
ToolChainKitInformation::setToolChain(newKit, tc);
|
||||||
@@ -1338,49 +1336,25 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
|
|
||||||
AndroidGdbServerKitInformation::setGdbSever(newKit, tc->suggestedGdbServer());
|
AndroidGdbServerKitInformation::setGdbSever(newKit, tc->suggestedGdbServer());
|
||||||
newKit->makeSticky();
|
newKit->makeSticky();
|
||||||
|
newKit->setUnexpandedDisplayName(tr("Android for %1 (GCC %2, Qt %3)")
|
||||||
|
.arg(static_cast<const AndroidQtVersion *>(qt)->targetArch())
|
||||||
|
.arg(tc->ndkToolChainVersion())
|
||||||
|
.arg(qt->qtVersionString()));
|
||||||
newKits << newKit;
|
newKits << newKit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = existingKits.count() - 1; i >= 0; --i) {
|
QSet<const Kit *> rediscoveredExistingKits;
|
||||||
Kit *existingKit = existingKits.at(i);
|
for (Kit *newKit : newKits) {
|
||||||
for (int j = 0; j < newKits.count(); ++j) {
|
Kit *existingKit = Utils::findOrDefault(existingKits, [newKit](const Kit *k) { return matchKits(newKit, k); });
|
||||||
Kit *newKit = newKits.at(j);
|
if (existingKit) {
|
||||||
if (matchKits(existingKit, newKit)) {
|
existingKit->copyFrom(newKit);
|
||||||
// Kit is already registered, nothing to do
|
|
||||||
newKits.removeAt(j);
|
|
||||||
existingKits.at(i)->makeSticky();
|
|
||||||
existingKits.removeAt(i);
|
|
||||||
for (ToolChain::Language lang : ToolChain::allLanguages())
|
|
||||||
ToolChainKitInformation::setToolChain(existingKit, ToolChainKitInformation::toolChain(newKit, lang));
|
|
||||||
KitManager::deleteKit(newKit);
|
KitManager::deleteKit(newKit);
|
||||||
j = newKits.count();
|
rediscoveredExistingKits.insert(existingKit);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (Kit *k, existingKits) {
|
|
||||||
ToolChain *tc = ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx);
|
|
||||||
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitInformation::qtVersion(k);
|
|
||||||
if (tc && tc->typeId() == Constants::ANDROID_TOOLCHAIN_ID
|
|
||||||
&& tc->isValid()
|
|
||||||
&& qtVersion && qtVersion->type() == QLatin1String(Constants::ANDROIDQT)) {
|
|
||||||
k->makeUnSticky();
|
|
||||||
k->setAutoDetected(false);
|
|
||||||
} else {
|
} else {
|
||||||
KitManager::deregisterKit(k);
|
KitManager::registerKit(newKit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (Kit *kit, newKits) {
|
|
||||||
AndroidToolChain *tc = static_cast<AndroidToolChain *>(ToolChainKitInformation::toolChain(kit, ToolChain::Language::Cxx));
|
|
||||||
AndroidQtVersion *qt = static_cast<AndroidQtVersion *>(QtSupport::QtKitInformation::qtVersion(kit));
|
|
||||||
kit->setUnexpandedDisplayName(tr("Android for %1 (GCC %2, Qt %3)")
|
|
||||||
.arg(qt->targetArch())
|
|
||||||
.arg(tc->ndkToolChainVersion())
|
|
||||||
.arg(qt->qtVersionString()));
|
|
||||||
KitManager::registerKit(kit);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AndroidConfigurations::force32bitEmulator()
|
bool AndroidConfigurations::force32bitEmulator()
|
||||||
|
Reference in New Issue
Block a user