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

5 views
Skip to first unread message

Christian Brabandt

unread,
Jul 1, 2025, 3:45:21 PMJul 1
to vim...@googlegroups.com
patch 9.1.1499: MS-Windows: no indication of ARM64 architecture

Commit: https://github.com/vim/vim/commit/54585fd04c1c7f3bcd9e4ee14b3efd1341f47058
Author: RestorerZ <rest...@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 <rest...@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
Reply all
Reply to author
Forward
0 new messages