forked from qt-creator/qt-creator
Android: create a new toolchain when missing target triple
Though it should not happen that a toolchain is missing the triple but in case the detection fails a new toolchain shall be created and the misbehaving toolchain should be deleted Task-number: QTCREATORBUG-20217 Change-Id: Iaa86331730f82b8e5abd37f1184a53d1e1312979 Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -150,7 +150,8 @@ QString AndroidToolChain::typeDisplayName() const
|
||||
bool AndroidToolChain::isValid() const
|
||||
{
|
||||
return GccToolChain::isValid() && targetAbi().isValid() && !m_ndkToolChainVersion.isEmpty()
|
||||
&& compilerCommand().isChildOf(AndroidConfigurations::currentConfig().ndkLocation());
|
||||
&& compilerCommand().isChildOf(AndroidConfigurations::currentConfig().ndkLocation())
|
||||
&& !originalTargetTriple().isEmpty();
|
||||
}
|
||||
|
||||
void AndroidToolChain::addToEnvironment(Environment &env) const
|
||||
@@ -417,6 +418,9 @@ bool AndroidToolChainFactory::versionCompareLess(const QList<int> &a, const QLis
|
||||
bool AndroidToolChainFactory::versionCompareLess(QList<AndroidToolChain *> atc,
|
||||
QList<AndroidToolChain *> btc)
|
||||
{
|
||||
if (atc.isEmpty() || btc.isEmpty())
|
||||
return false;
|
||||
|
||||
const QList<int> a = versionNumberFromString(atc.at(0)->ndkToolChainVersion());
|
||||
const QList<int> b = versionNumberFromString(btc.at(0)->ndkToolChainVersion());
|
||||
|
||||
@@ -463,7 +467,7 @@ AndroidToolChainFactory::autodetectToolChainsForNdk(const FileName &ndkPath,
|
||||
FileName compilerPath = AndroidConfigurations::currentConfig().gccPath(abi, lang, version);
|
||||
|
||||
AndroidToolChain *tc = findToolChain(compilerPath, lang, alreadyKnown);
|
||||
if (!tc) {
|
||||
if (!tc || tc->originalTargetTriple().isEmpty()) {
|
||||
tc = new AndroidToolChain(abi, version, lang,
|
||||
ToolChain::AutoDetection);
|
||||
tc->resetToolChain(compilerPath);
|
||||
@@ -473,6 +477,8 @@ AndroidToolChainFactory::autodetectToolChainsForNdk(const FileName &ndkPath,
|
||||
toolChainBundle.append(tc);
|
||||
}
|
||||
|
||||
QTC_ASSERT(!toolChainBundle.isEmpty(), continue);
|
||||
|
||||
auto it = newestToolChainForArch.constFind(abi);
|
||||
if (it == newestToolChainForArch.constEnd())
|
||||
newestToolChainForArch.insert(abi, toolChainBundle);
|
||||
|
Reference in New Issue
Block a user