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; Qt::CaseSensitivity HostOsInfo::m_overrideFileNameCaseSensitivity = Qt::CaseSensitive;
bool HostOsInfo::m_useOverrideFileNameCaseSensitivity = false; bool HostOsInfo::m_useOverrideFileNameCaseSensitivity = false;
#ifdef Q_OS_WIN static OsArch parseArchitecture()
static WORD hostProcessorArchitecture()
{ {
SYSTEM_INFO info; QString currentArchitecture = QSysInfo::currentCpuArchitecture();
GetNativeSystemInfo(&info); if (currentArchitecture == QLatin1String("x86_64"))
return info.wProcessorArchitecture; 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 OsArch arch = parseArchitecture();
static const WORD processorArchitecture = hostProcessorArchitecture(); return arch;
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
} }
bool HostOsInfo::isRunningUnderRosetta() bool HostOsInfo::isRunningUnderRosetta()

View File

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

View File

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

View File

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