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 <restorer@mail2k.ru>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
RestorerZ
2025-07-01 21:30:21 +02:00
committed by Christian Brabandt
parent 523f9f5898
commit 54585fd04c
6 changed files with 50 additions and 5 deletions

View File

@ -46,6 +46,10 @@ MKNSISFLAGS = $(MKNSISFLAGS) /DHAVE_MULTI_LANG=$(HAVE_MULTI_LANG)
MKNSISFLAGS = $(MKNSISFLAGS) /DWIN64=$(WIN64) MKNSISFLAGS = $(MKNSISFLAGS) /DWIN64=$(WIN64)
!ENDIF !ENDIF
!IFDEF ARM64
MKNSISFLAGS = $(MKNSISFLAGS) /DARM64=$(ARM64)
!ENDIF
!IFDEF INCLUDE_LIBGCC !IFDEF INCLUDE_LIBGCC
MKNSISFLAGS = $(MKNSISFLAGS) /DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC) MKNSISFLAGS = $(MKNSISFLAGS) /DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC)
!ENDIF !ENDIF

View File

@ -39,6 +39,10 @@ ifdef WIN64
MKNSISFLAGS := $(MKNSISFLAGS) -DWIN64=$(WIN64) MKNSISFLAGS := $(MKNSISFLAGS) -DWIN64=$(WIN64)
endif endif
ifdef ARM64
MKNSISFLAGS := $(MKNSISFLAGS) -DARM64=$(ARM64)
endif
ifdef INCLUDE_LIBGCC ifdef INCLUDE_LIBGCC
MKNSISFLAGS := $(MKNSISFLAGS) -DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC) MKNSISFLAGS := $(MKNSISFLAGS) -DINCLUDE_LIBGCC=$(INCLUDE_LIBGCC)
endif endif

View File

@ -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_NLS=0" — do not add native language support.
"HAVE_MULTI_LANG=0" — to create an English-only the installer. "HAVE_MULTI_LANG=0" — to create an English-only the installer.
"WIN64=1" — to create a 64-bit 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 "X=<scriptcmd>" — executes scriptcmd in script. If multiple scriptcmd
are specified, they are separated by a semicolon. are specified, they are separated by a semicolon.
Example "X=OutFile MyVim.exe;XPMode on" Example "X=OutFile MyVim.exe;XPMode on"

View File

@ -53,6 +53,18 @@ Unicode true
!define WIN64 0 !define WIN64 0
!endif !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 # 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. # switch /DINCLUDE_LIBGCC=0 on the command line makensis.exe.
!ifndef INCLUDE_LIBGCC !ifndef INCLUDE_LIBGCC
@ -113,7 +125,11 @@ ${StrRep}
!define UNINST_REG_KEY_VIM "${UNINST_REG_KEY}\${PRODUCT}" !define UNINST_REG_KEY_VIM "${UNINST_REG_KEY}\${PRODUCT}"
!if ${WIN64} !if ${WIN64}
!if ${ARM64}
Name "${PRODUCT} (ARM64)"
!else
Name "${PRODUCT} (x64)" Name "${PRODUCT} (x64)"
!endif
!else !else
Name "${PRODUCT}" Name "${PRODUCT}"
!endif !endif

View File

@ -342,8 +342,12 @@ MSVCRT_NAME = vcruntime$(MSVCRT_VER)
### Set the default $(WINVER) to make it work with Windows 7 ### Set the default $(WINVER) to make it work with Windows 7
!ifndef WINVER !ifndef WINVER
! if "$(CPU)" == "ARM64"
WINVER = 0x0A00
! else
WINVER = 0x0601 WINVER = 0x0601
! endif ! endif
!endif
# Use multiprocess build # Use multiprocess build
USE_MP = yes USE_MP = yes
@ -571,7 +575,8 @@ CPUNR = sse2
! error *** ERROR Unknown target architecture "$(CPUNR)". Make aborted. ! error *** ERROR Unknown target architecture "$(CPUNR)". Make aborted.
! endif ! endif
!elseif "$(CPU)" == "ARM64" !elseif "$(CPU)" == "ARM64"
# TODO: Validate CPUNR. # TODO: Validate CPUNR depending on the VS version.
CPUNR = armv8.0
!endif !endif
# Convert processor ID to MVC-compatible number # Convert processor ID to MVC-compatible number

View File

@ -719,6 +719,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1499,
/**/ /**/
1498, 1498,
/**/ /**/
@ -3926,13 +3928,21 @@ list_version(void)
# ifdef FEAT_GUI_MSWIN # ifdef FEAT_GUI_MSWIN
# ifdef VIMDLL # ifdef VIMDLL
# ifdef _WIN64 # ifdef _WIN64
# if defined(_M_ARM64) || defined(_M_ARM64EC)
msg_puts(_("\nMS-Windows ARM64 GUI/console version"));
# else
msg_puts(_("\nMS-Windows 64-bit GUI/console version")); msg_puts(_("\nMS-Windows 64-bit GUI/console version"));
# endif
# else # else
msg_puts(_("\nMS-Windows 32-bit GUI/console version")); msg_puts(_("\nMS-Windows 32-bit GUI/console version"));
# endif # endif
# else # else
# ifdef _WIN64 # ifdef _WIN64
# if defined(_M_ARM64) || defined(_M_ARM64EC)
msg_puts(_("\nMS-Windows ARM64 GUI version"));
# else
msg_puts(_("\nMS-Windows 64-bit GUI version")); msg_puts(_("\nMS-Windows 64-bit GUI version"));
# endif
# else # else
msg_puts(_("\nMS-Windows 32-bit GUI version")); msg_puts(_("\nMS-Windows 32-bit GUI version"));
# endif # endif
@ -3942,7 +3952,11 @@ list_version(void)
# endif # endif
# else # else
# ifdef _WIN64 # ifdef _WIN64
# if defined(_M_ARM64) || defined(_M_ARM64EC)
msg_puts(_("\nMS-Windows ARM64 console version"));
# else
msg_puts(_("\nMS-Windows 64-bit console version")); msg_puts(_("\nMS-Windows 64-bit console version"));
# endif
# else # else
msg_puts(_("\nMS-Windows 32-bit console version")); msg_puts(_("\nMS-Windows 32-bit console version"));
# endif # endif