]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1499: MS-Windows: no indication of ARM64 architecture v9.1.1499
authorRestorerZ <restorer@mail2k.ru>
Tue, 1 Jul 2025 19:30:21 +0000 (21:30 +0200)
committerChristian Brabandt <cb@256bit.org>
Tue, 1 Jul 2025 19:30:21 +0000 (21:30 +0200)
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>
nsis/Make_mvc.mak
nsis/Makefile
nsis/README.txt
nsis/gvim.nsi
src/Make_mvc.mak
src/version.c

index c5aff151b9c1493a4f165bbfb4b56148545260ed..8350082b26cb5c3c9fcf3108bdd0888038272997 100644 (file)
@@ -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
index fdbc12012fbe45df73b2e4e32b74b5b129b5d5a3..890ace4ff1f2fa08f2efc45536a0072983666ea5 100644 (file)
@@ -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
index 4b4b7a0fbcda7d5728ba21ec2cf44d01d6baf1ee..3bb32d423ae9119c9706c19fce9e3d57c6f00045 100644 (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_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"
index eef8a122277962c8aca3b768b7660b5ebdaca4dc..04040b4d251653fb52dbe77b3b7f50d84ae607c9 100644 (file)
@@ -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
index 08016d423ecd7d6fe2907a9b5419f37ce7cc58c2..64b033178d31839d44ff32c0457b82be5b3c8926 100644 (file)
@@ -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
index 23a9f19aac13e808da19a4b3e9ac77fb6ccb4ba5..7181bae96c034c94a972586055213394b688cf34 100644 (file)
@@ -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(_("\nMS-Windows 64-bit GUI/console version"));
+#    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"));
+#    endif
 #   else
     msg_puts(_("\nMS-Windows 32-bit GUI/console version"));
 #   endif
 #  else
 #   ifdef _WIN64
-    msg_puts(_("\nMS-Windows 64-bit GUI version"));
+#    if defined(_M_ARM64) || defined(_M_ARM64EC)
+     msg_puts(_("\nMS-Windows ARM64 GUI version"));
+#    else
+     msg_puts(_("\nMS-Windows 64-bit GUI version"));
+#    endif
 #   else
     msg_puts(_("\nMS-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(_("\nMS-Windows ARM64 console version"));
+#   else
     msg_puts(_("\nMS-Windows 64-bit console version"));
+#   endif
 #  else
     msg_puts(_("\nMS-Windows 32-bit console version"));
 #  endif