forked from qt-creator/qt-creator
Android multi arch support
[ChangeLog][Android] Android multi arch support for qmake Change-Id: Ib8b1874604a3392130c96fbc00b26713b3d788ae Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
committed by
BogDan Vatra
parent
567a20843f
commit
6b31f9cf23
@@ -71,14 +71,42 @@ QString AndroidQtVersion::invalidReason() const
|
||||
|
||||
Abis AndroidQtVersion::detectQtAbis() const
|
||||
{
|
||||
Abis abis = BaseQtVersion::detectQtAbis();
|
||||
for (int i = 0; i < abis.count(); ++i) {
|
||||
abis[i] = Abi(abis.at(i).architecture(),
|
||||
abis.at(i).os(),
|
||||
Abi::AndroidLinuxFlavor,
|
||||
abis.at(i).binaryFormat(),
|
||||
abis.at(i).wordWidth());
|
||||
}
|
||||
auto androidAbi2Abi = [](const QString &androidAbi) {
|
||||
if (androidAbi == "arm64-v8a") {
|
||||
return Abi{Abi::Architecture::ArmArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
64, androidAbi};
|
||||
} else if (androidAbi == "armeabi-v7a") {
|
||||
return Abi{Abi::Architecture::ArmArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
32, androidAbi};
|
||||
} else if (androidAbi == "x86_64") {
|
||||
return Abi{Abi::Architecture::X86Architecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
64, androidAbi};
|
||||
} else if (androidAbi == "x86") {
|
||||
return Abi{Abi::Architecture::X86Architecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
32, androidAbi};
|
||||
} else {
|
||||
return Abi{Abi::Architecture::UnknownArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
0, androidAbi};
|
||||
}
|
||||
};
|
||||
Abis abis;
|
||||
for (const auto &abi : androidAbis())
|
||||
abis << androidAbi2Abi(abi);
|
||||
return abis;
|
||||
}
|
||||
|
||||
@@ -105,10 +133,10 @@ QString AndroidQtVersion::description() const
|
||||
return tr("Android");
|
||||
}
|
||||
|
||||
QString AndroidQtVersion::targetArch() const
|
||||
const QStringList &AndroidQtVersion::androidAbis() const
|
||||
{
|
||||
ensureMkSpecParsed();
|
||||
return m_targetArch;
|
||||
return m_androidAbis;
|
||||
}
|
||||
|
||||
int AndroidQtVersion::minimumNDK() const
|
||||
@@ -119,8 +147,11 @@ int AndroidQtVersion::minimumNDK() const
|
||||
|
||||
void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const
|
||||
{
|
||||
m_targetArch = evaluator->value(QLatin1String("ANDROID_TARGET_ARCH"));
|
||||
const QString androidPlatform = evaluator->value(QLatin1String("ANDROID_PLATFORM"));
|
||||
if (qtVersion() >= QtSupport::QtVersionNumber{5, 14})
|
||||
m_androidAbis = evaluator->values("ALL_ANDROID_ABIS");
|
||||
else
|
||||
m_androidAbis = QStringList{evaluator->value("ANDROID_TARGET_ARCH")};
|
||||
const QString androidPlatform = evaluator->value("ANDROID_PLATFORM");
|
||||
if (!androidPlatform.isEmpty()) {
|
||||
const QRegExp regex("android-(\\d+)");
|
||||
if (regex.exactMatch(androidPlatform)) {
|
||||
|
||||
Reference in New Issue
Block a user