From e50aa5bb41f67df5ba00e259671caea0c203c40e Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Mon, 20 Jun 2022 13:18:28 +0200 Subject: [PATCH] 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 --- src/libs/utils/hostosinfo.cpp | 3 ++- src/libs/utils/hostosinfo.h | 2 +- src/plugins/debugger/debuggeritemmanager.cpp | 2 +- src/plugins/projectexplorer/msvctoolchain.cpp | 5 ++++- src/plugins/projectexplorer/msvctoolchain.h | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/hostosinfo.cpp b/src/libs/utils/hostosinfo.cpp index 48518f8fc1a..657bf08470a 100644 --- a/src/libs/utils/hostosinfo.cpp +++ b/src/libs/utils/hostosinfo.cpp @@ -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; } diff --git a/src/libs/utils/hostosinfo.h b/src/libs/utils/hostosinfo.h index 694146e3459..9fa6689d4b6 100644 --- a/src/libs/utils/hostosinfo.h +++ b/src/libs/utils/hostosinfo.h @@ -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; } diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp index 4f0d4702589..9afc0877680 100644 --- a/src/plugins/debugger/debuggeritemmanager.cpp +++ b/src/plugins/debugger/debuggeritemmanager.cpp @@ -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"); diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 99b1e0bad06..e6ca8375aa8 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -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 diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 56c926141c5..b3df781fd13 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -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;