summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-04-04 20:32:24 +0200
committerBram Moolenaar <Bram@vim.org>2019-04-04 20:32:24 +0200
commit577fadfc100ff8fa569a34b89f5ad055ad726646 (patch)
treeeedcf55923909fd9b32d48c6cc2e276f16d2e7fc
parent652de23dc7abf6aa2721ccee7fe279b5cce8069c (diff)
downloadvim-git-577fadfc100ff8fa569a34b89f5ad055ad726646.tar.gz
patch 8.1.1119: no support for Windows on ARM64.v8.1.1119
Problem: No support for Windows on ARM64. Solution: Add ARM64 support (Leendert van Doorn)
-rw-r--r--Filelist5
-rw-r--r--src/GvimExt/Makefile10
-rw-r--r--src/INSTALLpc.txt9
-rw-r--r--src/Make_mvc.mak4
-rw-r--r--src/dosinst.c4
-rw-r--r--src/version.c2
-rw-r--r--src/xpm/arm64/lib-vc14/libXpm.libbin0 -> 127884 bytes
7 files changed, 30 insertions, 4 deletions
diff --git a/Filelist b/Filelist
index 1e4fee9f0..84ebd2557 100644
--- a/Filelist
+++ b/Filelist
@@ -508,13 +508,14 @@ SRC_DOS_BIN = \
src/vim.tlb \
src/xpm/COPYRIGHT \
src/xpm/README.txt \
+ src/xpm/arm64/lib-vc14/libXpm.lib \
src/xpm/include/*.h \
+ src/xpm/x64/lib-vc14/libXpm.lib \
src/xpm/x64/lib/libXpm.a \
src/xpm/x64/lib/libXpm.lib \
- src/xpm/x64/lib-vc14/libXpm.lib \
+ src/xpm/x86/lib-vc14/libXpm.lib \
src/xpm/x86/lib/libXpm.a \
src/xpm/x86/lib/libXpm.lib \
- src/xpm/x86/lib-vc14/libXpm.lib \
nsis/icons.zip \
# source files for Amiga, DOS, etc. (also in the extra archive)
diff --git a/src/GvimExt/Makefile b/src/GvimExt/Makefile
index 27ff953e2..a865989cf 100644
--- a/src/GvimExt/Makefile
+++ b/src/GvimExt/Makefile
@@ -25,6 +25,8 @@ PLATFORM = $(TARGET_CPU)
! ifdef PLATFORM
! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64")
CPU = AMD64
+! elseif ("$(PLATFORM)" == "arm64") || ("$(PLATFORM)" == "ARM64")
+CPU = ARM64
! elseif ("$(PLATFORM)" != "x86") && ("$(PLATFORM)" != "X86")
! error *** ERROR Unknown target platform "$(PLATFORM)". Make aborted.
! endif
@@ -56,11 +58,17 @@ SUBSYSTEM = console
SUBSYSTEM = $(SUBSYSTEM),$(SUBSYSTEM_VER)
!endif
+!if "$(CPU)" == "ARM64"
+OFFSET = 0x11C000000
+!else
+OFFSET = 0x1C000000
+!endif
+
all: gvimext.dll
gvimext.dll: gvimext.obj \
gvimext.res
- $(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib -subsystem:$(SUBSYSTEM)
+ $(link) $(lflags) -dll -def:gvimext.def -base:$(OFFSET) -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib -subsystem:$(SUBSYSTEM)
if exist $*.dll.manifest mt -nologo -manifest $*.dll.manifest -outputresource:$*.dll;2
gvimext.obj: gvimext.h
diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt
index 634f4ad71..4b2bd3df7 100644
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -174,6 +174,15 @@ The following Visual C++ team blog can serve as a reference page:
http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
+Cross compile support for Windows on ARM64
+------------------------------------------
+
+This depends on VS2017 with the optional ARM64 compiler and SDK
+installed. Use "vcvarsall.bat x64_arm64" as the build environment.
+
+The ARM64 support was provided by Leendert van Doorn.
+
+
OLDER VERSIONS
The minimal supported version is Windows XP. Building with older compilers
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index c502dec8b..b6a1ac0d1 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -240,6 +240,8 @@ PLATFORM = $(TARGET_CPU)
! ifdef PLATFORM
! if ("$(PLATFORM)" == "x64") || ("$(PLATFORM)" == "X64")
CPU = AMD64
+! elseif ("$(PLATFORM)" == "arm64") || ("$(PLATFORM)" == "ARM64")
+CPU = ARM64
! elseif ("$(PLATFORM)" != "x86") && ("$(PLATFORM)" != "X86")
! error *** ERROR Unknown target platform "$(PLATFORM)". Make aborted.
! endif
@@ -442,6 +444,8 @@ DIRECTX_OBJ = $(OUTDIR)\gui_dwrite.obj
# on the architecture.
!if "$(CPU)" == "AMD64"
XPM = xpm\x64
+!elseif "$(CPU)" == "ARM64"
+XPM = xpm\arm64
!elseif "$(CPU)" == "i386"
XPM = xpm\x86
!else
diff --git a/src/dosinst.c b/src/dosinst.c
index 2c05cf4c2..ca74758e0 100644
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -1677,7 +1677,9 @@ install_registry(void)
printf("Creating an uninstall entry\n");
sprintf(display_name, "Vim " VIM_VERSION_SHORT
-#ifdef _WIN64
+#ifdef _M_ARM64
+ " (arm64)"
+#elif _M_X64
" (x64)"
#endif
);
diff --git a/src/version.c b/src/version.c
index 14512b82e..40d802a60 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1119,
+/**/
1118,
/**/
1117,
diff --git a/src/xpm/arm64/lib-vc14/libXpm.lib b/src/xpm/arm64/lib-vc14/libXpm.lib
new file mode 100644
index 000000000..7e3e244b2
--- /dev/null
+++ b/src/xpm/arm64/lib-vc14/libXpm.lib
Binary files differ