patch 9.1.1499: MS-Windows: no indication of ARM64 architecture

Commit: 
https://github.com/vim/vim/commit/54585fd04c1c7f3bcd9e4ee14b3efd1341f47058
Author: RestorerZ <resto...@mail2k.ru>
Date:   Tue Jul 1 21:30:21 2025 +0200

    patch 9.1.1499: MS-Windows: no indication of ARM64 architecture
    
    Problem:  MS-Windows: no indication of ARM64 architecture
    Solution: Add ARM64 to version output and include in nsis installer
              (RestorerZ)
    
    related: vim/vim-win32-installer#381
    closes: #17642
    
    Signed-off-by: RestorerZ <resto...@mail2k.ru>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/nsis/Make_mvc.mak b/nsis/Make_mvc.mak
index c5aff151b..8350082b2 100644
--- a/nsis/Make_mvc.mak
+++ b/nsis/Make_mvc.mak
@@ -46,6 +46,10 @@ MKNSISFLAGS = $(MKNSISFLAGS) 
/DHAVE_MULTI_LANG=$(HAVE_MULTI_LANG)
 MKNSISFLAGS = $(MKNSISFLAGS) /DWIN64=$(WIN64)
 !ENDIF
 
+!IFDEF ARM64
+MKNSISFLAGS = $(MKNSISFLAGS) /DARM64=$(ARM64)
+!ENDIF
+
 !IFDEF INCLUDE_LIBGCC
 MKNSISFLAGS = $(MKNSISFLAGS) /DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC)
 !ENDIF
diff --git a/nsis/Makefile b/nsis/Makefile
index fdbc12012..890ace4ff 100644
--- a/nsis/Makefile
+++ b/nsis/Makefile
@@ -39,6 +39,10 @@ ifdef WIN64
 MKNSISFLAGS := $(MKNSISFLAGS) -DWIN64=$(WIN64)
 endif
 
+ifdef ARM64
+MKNSISFLAGS := $(MKNSISFLAGS) -DARM64=$(ARM64)
+endif
+
 ifdef INCLUDE_LIBGCC
 MKNSISFLAGS := $(MKNSISFLAGS) -DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC)
 endif
diff --git a/nsis/README.txt b/nsis/README.txt
index 4b4b7a0fb..3bb32d423 100644
--- a/nsis/README.txt
+++ b/nsis/README.txt
@@ -101,6 +101,8 @@ Variables and their values available for building the 
installer (not mandatory):
     "HAVE_NLS=0"       — do not add native language support.
     "HAVE_MULTI_LANG=0" — to create an English-only the installer.
     "WIN64=1"          — to create a 64-bit the installer.
+    "ARM64=1"          — to create the installer for ARM64. The WIN64 variable
+                           must be set to 1.
     "X=<scriptcmd>"    — executes scriptcmd in script.  If multiple scriptcmd
                            are specified, they are separated by a semicolon.
                            Example "X=OutFile MyVim.exe;XPMode on"
diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi
index eef8a1222..04040b4d2 100644
--- a/nsis/gvim.nsi
+++ b/nsis/gvim.nsi
@@ -53,6 +53,18 @@ Unicode true
   !define WIN64 0
 !endif
 
+# if you want to create the installer for ARM64, use the /DARM64=1 on
+# the command line makensis.exe. This property will be set to 1.
+!ifndef ARM64
+  !define ARM64 0
+!else
+  !if ${ARM64} > 0
+    !if ${WIN64} < 1
+      !define /redef WIN64 1
+    !endif
+  !endif
+!endif
+
 # if you don't want to include libgcc_s_sjlj-1.dll in the package, use the
 # switch /DINCLUDE_LIBGCC=0 on the command line makensis.exe.
 !ifndef INCLUDE_LIBGCC
@@ -113,9 +125,13 @@ ${StrRep}
 !define UNINST_REG_KEY_VIM  "${UNINST_REG_KEY}\${PRODUCT}"
 
 !if ${WIN64}
-Name "${PRODUCT} (x64)"
+  !if ${ARM64}
+    Name "${PRODUCT} (ARM64)"
+  !else
+    Name "${PRODUCT} (x64)"
+  !endif
 !else
-Name "${PRODUCT}"
+  Name "${PRODUCT}"
 !endif
 OutFile gvim${VER_MAJOR}${VER_MINOR}.exe
 CRCCheck force
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 08016d423..64b033178 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -342,7 +342,11 @@ MSVCRT_NAME = vcruntime$(MSVCRT_VER)
 
 ### Set the default $(WINVER) to make it work with Windows 7
 !ifndef WINVER
+! if "$(CPU)" == "ARM64"
+WINVER = 0x0A00
+! else
 WINVER = 0x0601
+! endif
 !endif
 
 # Use multiprocess build
@@ -571,7 +575,8 @@ CPUNR = sse2
 !  error *** ERROR Unknown target architecture "$(CPUNR)". Make aborted.
 ! endif
 !elseif "$(CPU)" == "ARM64"
-# TODO: Validate CPUNR.
+# TODO: Validate CPUNR depending on the VS version.
+CPUNR = armv8.0
 !endif
 
 # Convert processor ID to MVC-compatible number
diff --git a/src/version.c b/src/version.c
index 23a9f19aa..7181bae96 100644
--- a/src/version.c
+++ b/src/version.c
@@ -719,6 +719,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1499,
 /**/
     1498,
 /**/
@@ -3926,13 +3928,21 @@ list_version(void)
 # ifdef FEAT_GUI_MSWIN
 #  ifdef VIMDLL
 #   ifdef _WIN64
-    msg_puts(_("
MS-Windows 64-bit GUI/console version"));
+#    if defined(_M_ARM64) || defined(_M_ARM64EC)
+     msg_puts(_("
MS-Windows ARM64 GUI/console version"));
+#    else
+     msg_puts(_("
MS-Windows 64-bit GUI/console version"));
+#    endif
 #   else
     msg_puts(_("
MS-Windows 32-bit GUI/console version"));
 #   endif
 #  else
 #   ifdef _WIN64
-    msg_puts(_("
MS-Windows 64-bit GUI version"));
+#    if defined(_M_ARM64) || defined(_M_ARM64EC)
+     msg_puts(_("
MS-Windows ARM64 GUI version"));
+#    else
+     msg_puts(_("
MS-Windows 64-bit GUI version"));
+#    endif
 #   else
     msg_puts(_("
MS-Windows 32-bit GUI version"));
 #   endif
@@ -3942,7 +3952,11 @@ list_version(void)
 #  endif
 # else
 #  ifdef _WIN64
+#   if defined(_M_ARM64) || defined(_M_ARM64EC)
+    msg_puts(_("
MS-Windows ARM64 console version"));
+#   else
     msg_puts(_("
MS-Windows 64-bit console version"));
+#   endif
 #  else
     msg_puts(_("
MS-Windows 32-bit console version"));
 #  endif

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1uWgui-00Ey4C-DK%40256bit.org.

Raspunde prin e-mail lui