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:
return HostOsInfo::HostArchitectureItanium;
case PROCESSOR_ARCHITECTURE_ARM:
case PROCESSOR_ARCHITECTURE_ARM64:
return HostOsInfo::HostArchitectureArm;
case PROCESSOR_ARCHITECTURE_ARM64:
return HostOsInfo::HostArchitectureArm64;
default:
return HostOsInfo::HostArchitectureUnknown;
}

View File

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

View File

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

View File

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

View File

@@ -58,7 +58,7 @@ class MsvcToolChain : public ToolChain
public:
enum Type { WindowsSDK, VS };
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);
~MsvcToolChain() override;