Arm64: Separate Arm64 from Arm on Windows

The separation is the first step of proper supporting the
native Visual C++ Arm64 that is now in preview in Visual Studio v17.3

Change-Id: I8cfa4b5b248158db68cb4af081dd59cabcd28c95
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Cristian Adam
2022-06-20 13:18:28 +02:00
parent 17129dc931
commit e50aa5bb41
5 changed files with 9 additions and 5 deletions

View File

@@ -65,8 +65,9 @@ HostOsInfo::HostArchitecture HostOsInfo::hostArchitecture()
case PROCESSOR_ARCHITECTURE_IA64: case PROCESSOR_ARCHITECTURE_IA64:
return HostOsInfo::HostArchitectureItanium; return HostOsInfo::HostArchitectureItanium;
case PROCESSOR_ARCHITECTURE_ARM: case PROCESSOR_ARCHITECTURE_ARM:
case PROCESSOR_ARCHITECTURE_ARM64:
return HostOsInfo::HostArchitectureArm; return HostOsInfo::HostArchitectureArm;
case PROCESSOR_ARCHITECTURE_ARM64:
return HostOsInfo::HostArchitectureArm64;
default: default:
return HostOsInfo::HostArchitectureUnknown; return HostOsInfo::HostArchitectureUnknown;
} }

View File

@@ -60,7 +60,7 @@ public:
} }
enum HostArchitecture { HostArchitectureX86, HostArchitectureAMD64, HostArchitectureItanium, enum HostArchitecture { HostArchitectureX86, HostArchitectureAMD64, HostArchitectureItanium,
HostArchitectureArm, HostArchitectureUnknown }; HostArchitectureArm, HostArchitectureArm64, HostArchitectureUnknown };
static HostArchitecture hostArchitecture(); static HostArchitecture hostArchitecture();
static constexpr bool isWindowsHost() { return hostOs() == OsTypeWindows; } static constexpr bool isWindowsHost() { return hostOs() == OsTypeWindows; }

View File

@@ -670,7 +670,7 @@ void DebuggerItemManagerPrivate::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::HostArchitectureArm) if (HostOsInfo::hostArchitecture() == HostOsInfo::HostArchitectureArm64)
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

@@ -147,6 +147,9 @@ static bool hostPrefersPlatform(MsvcToolChain::Platform platform)
|| platform == MsvcToolChain::x86_arm64; || platform == MsvcToolChain::x86_arm64;
case HostOsInfo::HostArchitectureArm: case HostOsInfo::HostArchitectureArm:
return platform == MsvcToolChain::arm; return platform == MsvcToolChain::arm;
case HostOsInfo::HostArchitectureArm64:
return platform == MsvcToolChain::arm64
|| platform == MsvcToolChain::arm64_x86 || platform == MsvcToolChain::arm64_amd64;
case HostOsInfo::HostArchitectureItanium: case HostOsInfo::HostArchitectureItanium:
return platform == MsvcToolChain::ia64; return platform == MsvcToolChain::ia64;
default: default:
@@ -167,7 +170,7 @@ static bool hostSupportsPlatform(MsvcToolChain::Platform platform)
|| 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::HostArchitectureArm: case HostOsInfo::HostArchitectureArm64:
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

View File

@@ -58,7 +58,7 @@ class MsvcToolChain : public ToolChain
public: public:
enum Type { WindowsSDK, VS }; enum Type { WindowsSDK, VS };
enum Platform { x86, amd64, x86_amd64, ia64, x86_ia64, arm, x86_arm, amd64_arm, amd64_x86, enum Platform { x86, amd64, x86_amd64, ia64, x86_ia64, arm, x86_arm, amd64_arm, amd64_x86,
x86_arm64, amd64_arm64 }; x86_arm64, amd64_arm64, arm64, arm64_x86, arm64_amd64 };
explicit MsvcToolChain(Utils::Id typeId); explicit MsvcToolChain(Utils::Id typeId);
~MsvcToolChain() override; ~MsvcToolChain() override;