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;
|
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()
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user