Utils: Rename HostArchitecture enum

Since its not only good for the Host and to bring it in line
with the OsType we rename HostArchitecture to OsArch.

To make it work on all Platforms we change hostArchitecture to use
QSysInfo instead of using Os specific calls.

Change-Id: I1a9a4c8f9faa2a504694d8288110c9ee5c483440
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Marcus Tillmanns
2024-02-19 16:19:41 +01:00
parent 59dc7c9c92
commit 467dfa14dd
5 changed files with 29 additions and 41 deletions

View File

@@ -29,36 +29,26 @@ namespace Utils {
Qt::CaseSensitivity HostOsInfo::m_overrideFileNameCaseSensitivity = Qt::CaseSensitive;
bool HostOsInfo::m_useOverrideFileNameCaseSensitivity = false;
#ifdef Q_OS_WIN
static WORD hostProcessorArchitecture()
static OsArch parseArchitecture()
{
SYSTEM_INFO info;
GetNativeSystemInfo(&info);
return info.wProcessorArchitecture;
QString currentArchitecture = QSysInfo::currentCpuArchitecture();
if (currentArchitecture == QLatin1String("x86_64"))
return OsArchAMD64;
if (currentArchitecture == QLatin1String("x86"))
return OsArchX86;
if (currentArchitecture == QLatin1String("ia64"))
return OsArchItanium;
if (currentArchitecture == QLatin1String("arm"))
return OsArchArm;
if (currentArchitecture == QLatin1String("arm64"))
return OsArchArm64;
return OsArchUnknown;
}
#endif
HostOsInfo::HostArchitecture HostOsInfo::hostArchitecture()
OsArch HostOsInfo::hostArchitecture()
{
#ifdef Q_OS_WIN
static const WORD processorArchitecture = hostProcessorArchitecture();
switch (processorArchitecture) {
case PROCESSOR_ARCHITECTURE_AMD64:
return HostOsInfo::HostArchitectureAMD64;
case PROCESSOR_ARCHITECTURE_INTEL:
return HostOsInfo::HostArchitectureX86;
case PROCESSOR_ARCHITECTURE_IA64:
return HostOsInfo::HostArchitectureItanium;
case PROCESSOR_ARCHITECTURE_ARM:
return HostOsInfo::HostArchitectureArm;
case PROCESSOR_ARCHITECTURE_ARM64:
return HostOsInfo::HostArchitectureArm64;
default:
return HostOsInfo::HostArchitectureUnknown;
}
#else
return HostOsInfo::HostArchitectureUnknown;
#endif
static const OsArch arch = parseArchitecture();
return arch;
}
bool HostOsInfo::isRunningUnderRosetta()

View File

@@ -41,9 +41,7 @@ public:
#endif
}
enum HostArchitecture { HostArchitectureX86, HostArchitectureAMD64, HostArchitectureItanium,
HostArchitectureArm, HostArchitectureArm64, HostArchitectureUnknown };
static HostArchitecture hostArchitecture();
static OsArch hostArchitecture();
static constexpr bool isWindowsHost() { return hostOs() == OsTypeWindows; }
static constexpr bool isLinuxHost() { return hostOs() == OsTypeLinux; }

View File

@@ -14,6 +14,8 @@ namespace Utils {
// Add more as needed.
enum OsType { OsTypeWindows, OsTypeLinux, OsTypeMac, OsTypeOtherUnix, OsTypeOther };
enum OsArch { OsArchUnknown, OsArchX86, OsArchAMD64, OsArchItanium, OsArchArm, OsArchArm64 };
inline QString osTypeToString(OsType osType)
{
switch (osType) {

View File

@@ -549,7 +549,7 @@ void DebuggerItemModel::autoDetectCdbDebuggers()
for (const QFileInfo &kitFolderFi : kitFolders) {
const QString path = kitFolderFi.absoluteFilePath();
QStringList abis = {"x86", "x64"};
if (HostOsInfo::hostArchitecture() == HostOsInfo::HostArchitectureArm64)
if (HostOsInfo::hostArchitecture() == Utils::OsArchArm64)
abis << "arm64";
for (const QString &abi: abis) {
const QFileInfo cdbBinary(path + "/Debuggers/" + abi + "/cdb.exe");

View File

@@ -124,19 +124,19 @@ static QString platformName(MsvcToolchain::Platform t)
static bool hostPrefersPlatform(MsvcToolchain::Platform platform)
{
switch (HostOsInfo::hostArchitecture()) {
case HostOsInfo::HostArchitectureAMD64:
case Utils::OsArchAMD64:
return platform == MsvcToolchain::amd64 || platform == MsvcToolchain::amd64_arm
|| platform == MsvcToolchain::amd64_x86 || platform == MsvcToolchain::amd64_arm64;
case HostOsInfo::HostArchitectureX86:
case Utils::OsArchX86:
return platform == MsvcToolchain::x86 || platform == MsvcToolchain::x86_amd64
|| platform == MsvcToolchain::x86_ia64 || platform == MsvcToolchain::x86_arm
|| platform == MsvcToolchain::x86_arm64;
case HostOsInfo::HostArchitectureArm:
case Utils::OsArchArm:
return platform == MsvcToolchain::arm;
case HostOsInfo::HostArchitectureArm64:
case Utils::OsArchArm64:
return platform == MsvcToolchain::arm64
|| platform == MsvcToolchain::arm64_x86 || platform == MsvcToolchain::arm64_amd64;
case HostOsInfo::HostArchitectureItanium:
case Utils::OsArchItanium:
return platform == MsvcToolchain::ia64;
default:
return false;
@@ -151,12 +151,12 @@ static bool hostSupportsPlatform(MsvcToolchain::Platform platform)
switch (HostOsInfo::hostArchitecture()) {
// The x86 host toolchains are not the preferred toolchains on amd64 but they are still
// supported by that host
case HostOsInfo::HostArchitectureAMD64:
case Utils::OsArchAMD64:
return platform == MsvcToolchain::x86 || platform == MsvcToolchain::x86_amd64
|| platform == MsvcToolchain::x86_ia64 || platform == MsvcToolchain::x86_arm
|| platform == MsvcToolchain::x86_arm64;
// The Arm64 host can run the cross-compilers via emulation of x86 and amd64
case HostOsInfo::HostArchitectureArm64:
case Utils::OsArchArm64:
return platform == MsvcToolchain::x86_arm || platform == MsvcToolchain::x86_arm64
|| platform == MsvcToolchain::amd64_arm || platform == MsvcToolchain::amd64_arm64
|| platform == MsvcToolchain::x86 || platform == MsvcToolchain::x86_amd64
@@ -1228,8 +1228,7 @@ MsvcToolchain::Platform MsvcToolchain::platform() const
QStringList args = m_varsBatArg.split(' ');
if (const MsvcPlatform *entry = platformEntryFromName(args.value(0)))
return entry->platform;
return Utils::HostOsInfo::hostArchitecture() == Utils::HostOsInfo::HostArchitectureAMD64 ? amd64
: x86;
return Utils::HostOsInfo::hostArchitecture() == Utils::OsArchAMD64 ? amd64 : x86;
}
// --------------------------------------------------------------------------
@@ -1308,8 +1307,7 @@ public:
m_varsBatPathCombo->addItem(nativeVcVars);
}
}
const bool isAmd64
= Utils::HostOsInfo::hostArchitecture() == Utils::HostOsInfo::HostArchitectureAMD64;
const bool isAmd64 = Utils::HostOsInfo::hostArchitecture() == Utils::OsArchAMD64;
// TODO: Add missing values to MsvcToolChain::Platform
m_varsBatArchCombo->addItem(Tr::tr("<empty>"), isAmd64 ? MsvcToolchain::amd64 : MsvcToolchain::x86);
m_varsBatArchCombo->addItem("x86", MsvcToolchain::x86);