From 2e72048cd2c914a47b31f4ed97ca853641b62fee Mon Sep 17 00:00:00 2001 From: reuk Date: Wed, 3 Dec 2025 12:08:06 +0000 Subject: [PATCH] Projucer: Enable ARM64EC for Visual Studio 2026 exporter --- .../ProjectSaving/jucer_ProjectExport_MSVC.h | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h index 625543b3d6..f7865c9258 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_MSVC.h @@ -334,6 +334,7 @@ public: virtual String getToolsVersion() const = 0; virtual String getDefaultToolset() const = 0; virtual String getDefaultWindowsTargetPlatformVersion() const = 0; + virtual void getSupportedArchitectures (std::vector&) const = 0; //============================================================================== String getIPPLibrary() const { return IPPLibraryValue.get(); } @@ -623,9 +624,12 @@ public: if (project.isAudioPluginProject()) addVisualStudioPluginInstallPathProperties (props); - const auto architectureList = exporter.getExporterIdentifier() == Identifier { "VS2022" } - ? std::vector { Architecture::win32, Architecture::win64, Architecture::arm64, Architecture::arm64ec } - : std::vector { Architecture::win32, Architecture::win64, Architecture::arm64 }; + const auto architectureList = std::invoke ([&] + { + std::vector result; + static_cast (exporter).getSupportedArchitectures (result); + return result; + }); Array architectureListAsStrings; Array architectureListAsVars; @@ -2799,6 +2803,11 @@ public: String getDefaultToolset() const override { return defaultToolset; } String getDefaultWindowsTargetPlatformVersion() const override { return defaultTargetPlatform; } + void getSupportedArchitectures (std::vector& result) const override + { + result.insert (result.end(), { Architecture::win32, Architecture::win64, Architecture::arm64 }); + } + static MSVCProjectExporterVC2019* createForSettings (Project& projectToUse, const ValueTree& settingsToUse) { if (settingsToUse.hasType (getValueTreeTypeName())) @@ -2844,6 +2853,11 @@ public: String getDefaultToolset() const override { return defaultToolset; } String getDefaultWindowsTargetPlatformVersion() const override { return defaultTargetPlatform; } + void getSupportedArchitectures (std::vector& result) const override + { + result.insert (result.end(), { Architecture::win32, Architecture::win64, Architecture::arm64, Architecture::arm64ec }); + } + static MSVCProjectExporterVC2022* createForSettings (Project& projectToUse, const ValueTree& settingsToUse) { if (settingsToUse.hasType (getValueTreeTypeName())) @@ -2889,6 +2903,11 @@ public: String getDefaultToolset() const override { return defaultToolset; } String getDefaultWindowsTargetPlatformVersion() const override { return defaultTargetPlatform; } + void getSupportedArchitectures (std::vector& result) const override + { + result.insert (result.end(), { Architecture::win32, Architecture::win64, Architecture::arm64, Architecture::arm64ec }); + } + static MSVCProjectExporterVC2026* createForSettings (Project& projectToUse, const ValueTree& settingsToUse) { if (settingsToUse.hasType (getValueTreeTypeName()))