forked from qt-creator/qt-creator
Android: Introduce constants for Android ABIs
Avoiding string duplication prevents typo-related runtime errors and allows an IDE to use find symbol rather than plain text search. Change-Id: I7fba7c7c5cf90c0b371efce3b575537b2708dd0f Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include "androidavdmanager.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/runextensions.h>
|
||||
@@ -424,8 +425,8 @@ AndroidDeviceInfoList AvdManagerOutputParser::parseAvdList(const QString &output
|
||||
}
|
||||
} else if (parseAvd(avdInfo, &avd)) {
|
||||
// armeabi-v7a devices can also run armeabi code
|
||||
if (avd.cpuAbi.contains("armeabi-v7a"))
|
||||
avd.cpuAbi << "armeabi";
|
||||
if (avd.cpuAbi.contains(ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A))
|
||||
avd.cpuAbi << ProjectExplorer::Constants::ANDROID_ABI_ARMEABI;
|
||||
avd.state = AndroidDeviceInfo::OkState;
|
||||
avd.type = AndroidDeviceInfo::Emulator;
|
||||
avdList << avd;
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include <projectexplorer/kitinformation.h>
|
||||
#include <projectexplorer/kitmanager.h>
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/session.h>
|
||||
#include <projectexplorer/toolchainmanager.h>
|
||||
|
||||
@@ -1282,7 +1283,12 @@ void AndroidConfigurations::removeUnusedDebuggers()
|
||||
|
||||
static bool containsAllAbis(const QStringList &abis)
|
||||
{
|
||||
QStringList supportedAbis{"armeabi-v7a", "arm64-v8a", "x86", "x86_64"};
|
||||
QStringList supportedAbis{
|
||||
ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_X86,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_X86_64,
|
||||
};
|
||||
for (const QString &abi : abis)
|
||||
if (supportedAbis.contains(abi))
|
||||
supportedAbis.removeOne(abi);
|
||||
|
||||
@@ -497,7 +497,8 @@ void AndroidDeployQtStep::gatherFilesToPull()
|
||||
QString linkerName("linker");
|
||||
QString libDirName("lib");
|
||||
auto preferreABI = AndroidManager::apkDevicePreferredAbi(target());
|
||||
if (preferreABI == "arm64-v8a" || preferreABI == "x86_64") {
|
||||
if (preferreABI == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A
|
||||
|| preferreABI == ProjectExplorer::Constants::ANDROID_ABI_X86_64) {
|
||||
m_filesToPull["/system/bin/app_process64"] = buildDir + "app_process";
|
||||
libDirName = "lib64";
|
||||
linkerName = "linker64";
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/projectnodes.h>
|
||||
#include <projectexplorer/projectexplorer.h>
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/session.h>
|
||||
#include <projectexplorer/target.h>
|
||||
|
||||
@@ -262,11 +263,11 @@ QStringList AndroidManager::applicationAbis(const Target *target)
|
||||
|
||||
QString AndroidManager::archTriplet(const QString &abi)
|
||||
{
|
||||
if (abi == "x86") {
|
||||
if (abi == ProjectExplorer::Constants::ANDROID_ABI_X86) {
|
||||
return {"i686-linux-android"};
|
||||
} else if (abi == "x86_64") {
|
||||
} else if (abi == ProjectExplorer::Constants::ANDROID_ABI_X86_64) {
|
||||
return {"x86_64-linux-android"};
|
||||
} else if (abi == "arm64-v8a") {
|
||||
} else if (abi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A) {
|
||||
return {"aarch64-linux-android"};
|
||||
}
|
||||
return {"arm-linux-androideabi"};
|
||||
@@ -361,25 +362,25 @@ QString AndroidManager::devicePreferredAbi(const QStringList &deviceAbis, const
|
||||
|
||||
Abi AndroidManager::androidAbi2Abi(const QString &androidAbi)
|
||||
{
|
||||
if (androidAbi == "arm64-v8a") {
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A) {
|
||||
return Abi{Abi::Architecture::ArmArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
64, androidAbi};
|
||||
} else if (androidAbi == "armeabi-v7a") {
|
||||
} else if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A) {
|
||||
return Abi{Abi::Architecture::ArmArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
32, androidAbi};
|
||||
} else if (androidAbi == "x86_64") {
|
||||
} else if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_X86_64) {
|
||||
return Abi{Abi::Architecture::X86Architecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
64, androidAbi};
|
||||
} else if (androidAbi == "x86") {
|
||||
} else if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_X86) {
|
||||
return Abi{Abi::Architecture::X86Architecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <qtsupport/qtsupportconstants.h>
|
||||
#include <qtsupport/qtversionmanager.h>
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/target.h>
|
||||
#include <projectexplorer/kit.h>
|
||||
#include <projectexplorer/project.h>
|
||||
@@ -86,25 +87,25 @@ QString AndroidQtVersion::invalidReason() const
|
||||
Abis AndroidQtVersion::detectQtAbis() const
|
||||
{
|
||||
auto androidAbi2Abi = [](const QString &androidAbi) {
|
||||
if (androidAbi == "arm64-v8a") {
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A) {
|
||||
return Abi{Abi::Architecture::ArmArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
64, androidAbi};
|
||||
} else if (androidAbi == "armeabi-v7a") {
|
||||
} else if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A) {
|
||||
return Abi{Abi::Architecture::ArmArchitecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
32, androidAbi};
|
||||
} else if (androidAbi == "x86_64") {
|
||||
} else if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_X86_64) {
|
||||
return Abi{Abi::Architecture::X86Architecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
Abi::BinaryFormat::ElfFormat,
|
||||
64, androidAbi};
|
||||
} else if (androidAbi == "x86") {
|
||||
} else if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_X86) {
|
||||
return Abi{Abi::Architecture::X86Architecture,
|
||||
Abi::OS::LinuxOS,
|
||||
Abi::OSFlavor::AndroidLinuxFlavor,
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <debugger/debuggerkitinformation.h>
|
||||
#include <debugger/debuggerrunconfigurationaspect.h>
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/environmentaspect.h>
|
||||
#include <projectexplorer/runconfigurationaspects.h>
|
||||
#include <projectexplorer/runcontrol.h>
|
||||
@@ -164,32 +165,32 @@ static void deleter(QProcess *p)
|
||||
|
||||
static QString gdbServerArch(const QString &androidAbi)
|
||||
{
|
||||
if (androidAbi == "arm64-v8a")
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A)
|
||||
return QString("arm64");
|
||||
if (androidAbi == "armeabi-v7a")
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)
|
||||
return QString("arm");
|
||||
// That's correct for "x86_64" and "x86", and best guess at anything that will evolve:
|
||||
// That's correct for x86_64 and x86, and best guess at anything that will evolve:
|
||||
return androidAbi;
|
||||
}
|
||||
|
||||
static QString lldbServerArch(const QString &androidAbi)
|
||||
{
|
||||
if (androidAbi == "armeabi-v7a")
|
||||
return QString("armeabi");
|
||||
// Correct for arm64-v8a "x86_64" and "x86", and best guess at anything that will evolve:
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)
|
||||
return {ProjectExplorer::Constants::ANDROID_ABI_ARMEABI};
|
||||
// Correct for arm64-v8a, x86 and x86_64, and best guess at anything that will evolve:
|
||||
return androidAbi; // arm64-v8a, x86, x86_64
|
||||
}
|
||||
|
||||
static QString lldbServerArch2(const QString &androidAbi)
|
||||
{
|
||||
if (androidAbi == "armeabi-v7a")
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)
|
||||
return {"arm"};
|
||||
if (androidAbi == "x86")
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_X86)
|
||||
return {"i386"};
|
||||
if (androidAbi == "arm64-v8a")
|
||||
if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A)
|
||||
return {"aarch64"};
|
||||
// Correct for "x86_64" a and best guess at anything that will evolve:
|
||||
return androidAbi; // arm64-v8a
|
||||
// Correct for x86_64 and best guess at anything that will evolve:
|
||||
return androidAbi; // x86_64
|
||||
}
|
||||
|
||||
static FilePath debugServer(bool useLldb, const Target *target)
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "androidsdkmanager.h"
|
||||
#include "androidavdmanager.h"
|
||||
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/tooltip/tooltip.h>
|
||||
#include <utils/utilsicons.h>
|
||||
@@ -58,8 +59,12 @@ AvdDialog::AvdDialog(int minApiLevel, AndroidSdkManager *sdkManager, const QStri
|
||||
m_hideTipTimer.setSingleShot(true);
|
||||
|
||||
if (abis.isEmpty()) {
|
||||
m_avdDialog.abiComboBox->addItems(QStringList({"x86", "x86_64", "armeabi-v7a",
|
||||
"armeabi", "arm64-v8a"}));
|
||||
m_avdDialog.abiComboBox->addItems(QStringList({
|
||||
ProjectExplorer::Constants::ANDROID_ABI_X86,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_X86_64,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_ARMEABI,
|
||||
ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A}));
|
||||
} else {
|
||||
m_avdDialog.abiComboBox->addItems(abis);
|
||||
}
|
||||
|
||||
@@ -154,10 +154,11 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Utils::Id id)
|
||||
|
||||
auto androidAbis = bs->data(Android::Constants::AndroidABIs).toStringList();
|
||||
QString preferredAbi;
|
||||
if (androidAbis.contains("armeabi-v7a")) {
|
||||
preferredAbi = "armeabi-v7a";
|
||||
} else if (androidAbis.isEmpty() || androidAbis.contains("arm64-v8a")) {
|
||||
preferredAbi = "arm64-v8a";
|
||||
if (androidAbis.contains(ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)) {
|
||||
preferredAbi = ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A;
|
||||
} else if (androidAbis.isEmpty()
|
||||
|| androidAbis.contains(ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A)) {
|
||||
preferredAbi = ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A;
|
||||
} else {
|
||||
preferredAbi = androidAbis.first();
|
||||
}
|
||||
|
||||
@@ -179,6 +179,13 @@ const char DESKTOP_DEVICE_TYPE[] = "Desktop";
|
||||
const int DESKTOP_PORT_START = 30000;
|
||||
const int DESKTOP_PORT_END = 31000;
|
||||
|
||||
// Android ABIs
|
||||
const char ANDROID_ABI_ARMEABI[] = "armeabi";
|
||||
const char ANDROID_ABI_ARMEABI_V7A[] = "armeabi-v7a";
|
||||
const char ANDROID_ABI_ARM64_V8A[] = "arm64-v8a";
|
||||
const char ANDROID_ABI_X86[] = "x86";
|
||||
const char ANDROID_ABI_X86_64[] = "x86_64";
|
||||
|
||||
// Variable Names:
|
||||
const char VAR_CURRENTPROJECT_PREFIX[] = "CurrentProject";
|
||||
const char VAR_CURRENTPROJECT_NAME[] = "CurrentProject:Name";
|
||||
|
||||
@@ -749,12 +749,12 @@ void QMakeStepConfigWidget::updateSummaryLabel()
|
||||
if (selectedAbis.isEmpty() && isAndroidKit()) {
|
||||
// Prefer ARM for Android, prefer 32bit.
|
||||
for (const Abi &abi : abis) {
|
||||
if (abi.param() == "armeabi-v7a")
|
||||
if (abi.param() == ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)
|
||||
selectedAbis.append(abi.param());
|
||||
}
|
||||
if (selectedAbis.isEmpty()) {
|
||||
for (const Abi &abi : abis) {
|
||||
if (abi.param() == "arm64-v8a")
|
||||
if (abi.param() == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A)
|
||||
selectedAbis.append(abi.param());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user