PE: Set Android ABI to the Abi object instantiation

640a4f0c9c introduced caching of qmake
output, which includes the supported abis.

Unfortunately the Abi::toString and Abi::fromString didn't serialize the
m_param value which was used by the Android plugin to specify the
Android ABI.

This commit will generate the Android ABI from the existing values.

Fixes: QTCREATORBUG-30146
Change-Id: I6770faa3953f7b423b36b9e3654a7e270d051571
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
Cristian Adam
2024-01-16 17:38:48 +01:00
parent 34e537a063
commit 7fa70da159

View File

@@ -2,6 +2,7 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "abi.h"
#include "projectexplorerconstants.h"
#include <utils/algorithm.h>
#include <utils/environment.h>
@@ -437,6 +438,18 @@ static Abis abiOf(const QByteArray &data)
return result;
}
static QString androidAbiFromAbi(const Abi &abi)
{
QString androidAbi;
if (abi.architecture() == Abi::Architecture::ArmArchitecture)
androidAbi = QLatin1String(abi.wordWidth() == 64 ? Constants::ANDROID_ABI_ARM64_V8A
: Constants::ANDROID_ABI_ARMEABI_V7A);
else
androidAbi = QLatin1String(abi.wordWidth() == 64 ? Constants::ANDROID_ABI_X86_64
: Constants::ANDROID_ABI_X86);
return androidAbi;
}
// --------------------------------------------------------------------------
// Abi
// --------------------------------------------------------------------------
@@ -908,7 +921,11 @@ Abi Abi::fromString(const QString &abiString)
return Abi(architecture, os, flavor, format, 0);
}
return Abi(architecture, os, flavor, format, wordWidth);
Abi abi(architecture, os, flavor, format, wordWidth);
if (abi.os() == LinuxOS && abi.osFlavor() == AndroidLinuxFlavor)
abi.m_param = androidAbiFromAbi(abi);
return abi;
}
Abi::Architecture Abi::architectureFromString(const QString &a)