forked from qt-creator/qt-creator
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:
@@ -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()
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user