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
|
bool AndroidToolChain::isValid() const
|
||||||
{
|
{
|
||||||
return GccToolChain::isValid() && targetAbi().isValid() && !m_ndkToolChainVersion.isEmpty()
|
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
|
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,
|
bool AndroidToolChainFactory::versionCompareLess(QList<AndroidToolChain *> atc,
|
||||||
QList<AndroidToolChain *> btc)
|
QList<AndroidToolChain *> btc)
|
||||||
{
|
{
|
||||||
|
if (atc.isEmpty() || btc.isEmpty())
|
||||||
|
return false;
|
||||||
|
|
||||||
const QList<int> a = versionNumberFromString(atc.at(0)->ndkToolChainVersion());
|
const QList<int> a = versionNumberFromString(atc.at(0)->ndkToolChainVersion());
|
||||||
const QList<int> b = versionNumberFromString(btc.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);
|
FileName compilerPath = AndroidConfigurations::currentConfig().gccPath(abi, lang, version);
|
||||||
|
|
||||||
AndroidToolChain *tc = findToolChain(compilerPath, lang, alreadyKnown);
|
AndroidToolChain *tc = findToolChain(compilerPath, lang, alreadyKnown);
|
||||||
if (!tc) {
|
if (!tc || tc->originalTargetTriple().isEmpty()) {
|
||||||
tc = new AndroidToolChain(abi, version, lang,
|
tc = new AndroidToolChain(abi, version, lang,
|
||||||
ToolChain::AutoDetection);
|
ToolChain::AutoDetection);
|
||||||
tc->resetToolChain(compilerPath);
|
tc->resetToolChain(compilerPath);
|
||||||
@@ -473,6 +477,8 @@ AndroidToolChainFactory::autodetectToolChainsForNdk(const FileName &ndkPath,
|
|||||||
toolChainBundle.append(tc);
|
toolChainBundle.append(tc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QTC_ASSERT(!toolChainBundle.isEmpty(), continue);
|
||||||
|
|
||||||
auto it = newestToolChainForArch.constFind(abi);
|
auto it = newestToolChainForArch.constFind(abi);
|
||||||
if (it == newestToolChainForArch.constEnd())
|
if (it == newestToolChainForArch.constEnd())
|
||||||
newestToolChainForArch.insert(abi, toolChainBundle);
|
newestToolChainForArch.insert(abi, toolChainBundle);
|
||||||
|
Reference in New Issue
Block a user